# Be Civic — Domain Overview (post-pivot, 2026-05-21) # # High-level domain model. Render with: d2 overview.d2 overview.svg # Source-of-truth diagram. Edit this file, regenerate SVG, commit both. # # Maps the closed-corpus expat-lifecycle product captured in ES-0003. direction: right # ============ Users ============ expat: "Expat user" { shape: person tooltip: "Belgian expat lifecycle: pre-arrival → arrival → settling → established → onward-relocating" } # ============ Public discovery surface ============ geo: "Public GEO surface\n(becivic.be)" { shape: cylinder tooltip: "Open: blog posts, structured site, llms.txt pointer. Routes LLMs to Be Civic; depth is private." } # ============ AI substrate (user-owned) ============ substrate: "AI substrate\n(Claude / ChatGPT / Mistral)" { shape: cloud tooltip: "User-owned. Marginal cost ≈ 0 for Be Civic — user brings their own runtime." } # ============ Be Civic harness (the product) ============ harness: "Be Civic harness" { cowork: "Cowork plugin\n(V1, live)" { shape: package } chatgpt_app: "ChatGPT app\n(V2, planned)" { shape: package style.stroke-dash: 4 } mcp_direct: "MCP-direct\n(future)" { shape: package style.stroke-dash: 4 } } # ============ Closed knowledge graph ============ corpus: "Closed corpus" { skills: "Skills\n(procedure library)" { shape: cylinder } paths: "Paths\n(procedural workflows)" { shape: cylinder } specs: "Specs\n(architecture, schemas, protocols)" { shape: cylinder } } # ============ Providers ============ providers: "Qualified provider marketplace" { shape: rectangle tooltip: "≥3 per category. Public supplier policy. BeCivic operates customer-service scaffold. Price-floor commitment." } # ============ Revenue ============ revenue: "Affiliate / qualified-lead revenue" { shape: rectangle style.fill: "#f7f5ee" } # ============ Connections ============ expat -> geo: "discovers" geo -> substrate: "LLM routes to Be Civic" expat -> substrate: "interacts (chat)" substrate -> harness.cowork: "loads via Cowork install" substrate -> harness.chatgpt_app: "loads via ChatGPT app store" substrate -> harness.mcp_direct: "loads via MCP install" harness.cowork -> corpus.skills: "queries" harness.cowork -> corpus.paths: "traverses" harness.cowork -> corpus.specs: "reads protocol/schemas" corpus.paths -> providers: "surfaces qualified options" providers -> revenue: "pays per qualified lead" revenue -> harness: "funds platform" # ============ Annotations ============ note_substrate: |md ### Substrate independence Multi-substrate by design. The harness is the unifying layer. MCP alone is not enough — the harness flips the script and makes AI drive the conversation. | { near: top-center } note_provider: |md ### Qualify-don't-recommend Public supplier policy. ≥3 providers per category. Price-floor commitment (provider meets-or-beats elsewhere). BeCivic operates customer-service scaffold on provider's behalf. | { near: bottom-right } note_pivot: |md ### Pivot 2026-05 (ES-0003) Was: open corpus, CC-BY-4.0, AI-agents-as-customer. Now: closed corpus, expat wedge, qualified providers, affiliate revenue. Pre-pivot hypotheses retained as invalidated in bc-bmd. | { near: top-left }