{
  "$schema": "https://ecorce.app/schemas/manifest@v1.json",
  "id": "ecorce:achats-groupes-vrac@v1",
  "network": "ecorce",
  "actor": {
    "id": "act_ecorce",
    "handle": "ecorce",
    "name": "Écorce — Réseau du commerce indépendant",
    "kind": "organization",
    "role": "organization",
    "sector": "Achats groupés & Caisses partagées",
    "location": "Montréal, Canada",
    "verified_by": [
      "passkey",
      "ecorce_registry"
    ],
    "reputation_summary": {
      "verified_proofs_count": 3,
      "trusted_circles": [
        "ecorce-b2b",
        "quebec-vrac"
      ]
    }
  },
  "intent": {
    "protocol": "ecorce.group_buying_split_cases@v1",
    "title": "Achats groupés & caisses partagées: paliers de gros et formats vrac 4 L vs 20 L",
    "summary": "Regroupe tes commandes avec les commerces indépendants voisins pour débloquer les paliers de prix de gros, partager des caisses sans surcharger ta réserve et comparer le coût au litre entre formats 4 L et 20 L.",
    "description": "Regroupe tes commandes avec les commerces indépendants voisins pour débloquer les paliers de prix de gros, partager des caisses sans surcharger ta réserve et comparer le coût au litre entre formats 4 L et 20 L.",
    "tags": [
      "achats-groupes",
      "vrac",
      "caisses-partagees",
      "montreal",
      "ecorce"
    ],
    "sample_data_notice": "données d'exemple — inventées / invented example data — not any partner's real list or prices"
  },
  "trust_gate": {
    "visibility": "public",
    "allowed_actors": [
      "epicerie-quartier-a",
      "epicerie-quartier-b",
      "*"
    ],
    "call_policy": "draft_only_human_commit",
    "mode": "draft_only",
    "human_approval_on_commit": true,
    "scopes": [
      "achats-groupes-vrac:read",
      "achats-groupes-vrac:write"
    ],
    "required_scopes": [
      "achats-groupes-vrac:read",
      "achats-groupes-vrac:write"
    ],
    "required_proofs": []
  },
  "function": {
    "runtime": "ecorce_surface",
    "runtime_pool": "ecorce-partner-tools",
    "function_ref": "fn-ecorce--achats-groupes-vrac",
    "script_ref": "ecorce://ecorce-partner-tools/fn-ecorce--achats-groupes-vrac",
    "entrypoint": "handle",
    "limits": {
      "cpuMs": 50,
      "subRequests": 5
    },
    "stateful_rule_spec": {
      "state_key": "bulk_pool",
      "quantity_input_field": "containers_20l",
      "committed_field": "committed_containers",
      "remaining_field": "remaining_for_tier",
      "target_or_capacity_field": "tier_target_containers",
      "unit_price_cents_field": "unit_price_20l_cents",
      "collection_field": "reservations",
      "record_type": "bulk_reservation"
    },
    "input_schema": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "enum": [
            "status",
            "commit",
            "pledge",
            "book"
          ],
          "description": "Optional action ('status' to read state without creating a record)"
        },
        "containers_20l": {
          "type": "number",
          "minimum": 1,
          "description": "Quantity field (containers_20l)"
        },
        "note": {
          "type": "string",
          "description": "Optional note or reference"
        }
      }
    },
    "output_schema": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string"
        },
        "record_to_commit": {
          "type": "object"
        },
        "state_patch": {
          "type": "object"
        }
      }
    }
  },
  "projection": {
    "surface_url": "https://ecorce.app/p/ecorce/achats-groupes-vrac",
    "page_url": "https://ecorce.app/p/ecorce/achats-groupes-vrac",
    "actor_url": "https://ecorce.app/p/ecorce",
    "sandbox_url": "https://ecorce.app/essayer?manifest=ecorce%3Aachats-groupes-vrac%40v1",
    "mcp_tool_name": "ecorce_achats_groupes_vrac",
    "ui_layout": "card_form",
    "cta_label": "Joindre l'achat groupé vrac 20 L",
    "cloneable": true,
    "headline": "Achats groupés & caisses partagées: débloque les paliers de prix de gros avec tes voisins",
    "story": "Regroupe tes commandes avec les commerces indépendants voisins pour débloquer les paliers de prix de gros et partager des caisses sans surcharger ta réserve. Grâce aux codes produits partagés sur Écorce, une fonction déterministe compare le coût exact au litre entre les formats (4 L contre 20 L en vrac) et met côte à côte le prix, le stock et le délai de chaque distributeur.",
    "facts": [
      {
        "label": "Économie format 20 L vs 4 L",
        "value": "-18 % au litre",
        "detail": "Savon à vaisselle écologique: 6,00 $/L en format 4 L (24,00 $) contre 4,90 $/L en bidon vrac de 20 L (98,00 $)."
      },
      {
        "label": "Distributeur de vrac Bio A",
        "value": "27,00 $ / 4 L",
        "detail": "Savon à mains doux (CODE-VRAC-010) — Livraison gratuite dès le minimum de commande régional de 150,00 $ sur la tournée du jeudi."
      },
      {
        "label": "Distributeur de produits naturels B",
        "value": "28,50 $ / 4 L",
        "detail": "Même code produit partagé (CODE-VRAC-010) — 24 unités en stock, livraison en 1 jour."
      },
      {
        "label": "Caisses partagées entre voisins",
        "value": "0,5 + 0,5 = 1 caisse",
        "detail": "Deux épiceries de quartier partagent un lot ou une caisse au prix de gros sans immobiliser ta trésorerie."
      }
    ],
    "sections": [
      {
        "title": "1. Regrouper les volumes entre épiceries de quartier A & B",
        "body": "Chaque commerce indique son besoin; la fonction consolide le palier de volume auprès du distributeur de vrac.",
        "items": [
          "Bidons vrac 20 L (CODE-VRAC-003): 4 bidons pour Épicerie de quartier A + 3 bidons pour Épicerie de quartier B = palier de remise de groupe débloqué.",
          "Caisses partagées (0,5 + 0,5): partage automatique des lots à rotation plus lente entre deux commerces du même secteur."
        ]
      },
      {
        "title": "2. Comparer exactement le même produit sur un code partagé",
        "body": "Un code produit partagé élimine les erreurs de saisie et permet d'arbitrer selon l'urgence ou la marge.",
        "items": [
          "Réassort planifié du jeudi: commande chez Distributeur de vrac Bio A à 27,00 $ (économie de 1,50 $ par unité).",
          "Dépannage en 24 h: commande chez Distributeur de produits naturels B à 28,50 $ avec stock confirmé immédiatement."
        ]
      }
    ],
    "custom_html_card": "<style>.d,h1,h2,h3,.logo{letter-spacing:-0.018em!important;font-stretch:92%!important;line-height:1.04!important}</style><h3>Tableau comparatif en direct — Achats groupés &amp; formats vrac (données d'exemple)</h3><table class=\"tb\" style=\"margin-top:12px\"><thead><tr><th>Code partagé</th><th>Produit</th><th>Format 4 L</th><th>Bidon vrac 20 L</th><th>Gain &amp; Disponibilité</th></tr></thead><tbody><tr><td><code>CODE-VRAC-003</code></td><td><b>Savon à vaisselle écologique</b></td><td>24,00 $ (6,00 $/L)</td><td><b>98,00 $ (4,90 $/L)</b></td><td><b>-18 % au litre</b> en format 20 L</td></tr><tr><td><code>CODE-VRAC-006</code></td><td><b>Détergent à lessive concentré</b></td><td>29,00 $ (7,25 $/L)</td><td><b>124,00 $ (6,20 $/L)</b></td><td><b>-14 % au litre</b> en format 20 L</td></tr><tr><td><code>CODE-VRAC-010</code></td><td><b>Savon à mains doux</b><br><small>Comparaison inter-distributeurs</small></td><td><b>27,00 $</b> (Distributeur Vrac Bio A)<br><b>28,50 $</b> (Distributeur Naturel B)</td><td>110,00 $ (5,50 $/L)</td><td>Écart de 1,50 $ / 4 L (24 en stock, livré en 1 jour)</td></tr></tbody></table>"
  },
  "function_ref": "fn-ecorce--achats-groupes-vrac",
  "input_schema": {
    "type": "object",
    "properties": {
      "action": {
        "type": "string",
        "enum": [
          "status",
          "commit",
          "pledge",
          "book"
        ],
        "description": "Optional action ('status' to read state without creating a record)"
      },
      "containers_20l": {
        "type": "number",
        "minimum": 1,
        "description": "Quantity field (containers_20l)"
      },
      "note": {
        "type": "string",
        "description": "Optional note or reference"
      }
    }
  },
  "output_schema": {
    "type": "object",
    "properties": {
      "status": {
        "type": "string"
      },
      "record_to_commit": {
        "type": "object"
      },
      "state_patch": {
        "type": "object"
      }
    }
  }
}