LeedAB · Agent network
2026-05-04

How the agents actually connect.

Most LeedAB pictures show a roster — boxes side by side. This one shows the system: who routes to whom, where the customer touches the surface, and how a message moves through the org. Status colours match the agent-intelligence map. Solid lines are wired today; dashed lines are planned.

Agent status
Live — tools wired
Partial — some tools wired
Stub — prompt only, no tools
Connections
Customer-message routing
Escalation path
Vault / data flow
Channel input · planned, not wired yet
The network
31 agents · 27 wired endpoints · 1 customer surface
CHANNELS IN CUSTOMER-FACING ACTIVATION · FIRST 90 DAYS BACK OFFICE · STRATEGY · DEMAND Telegram Dashboard / web Email Aria voice (planned) ORCHESTRATOR COO final reply → customer SMB OPERATOR CH · 10/12 Champion CG · 1 Concierge CX · 2 CX SO · 7 Solutions SA · 1 Sales ON · 2 Onboarding IM · 1 Implem'n DL · 1 Delivery engagement.md · Onboarding writes → Champion reads Champion · escalate_to(implementation | onboarding | delivery) — never founders FI · 1 Finance IN · 1 Investor ST · 1 Strategy CO · 1 Compliance MK · 1 Marketing RE · 2 Research + 18 STUB AGENTS Ops · Procurement · Automation Data · People · Legal · Content Brand · Email · Campaigns · Video Product · Eng · FE · BE · DevOps runs · usage · roster → prospect-intel grounds Solutions /build
The wiring — 32 endpoints + workflows-per-customer system, 14 of 31 agents lit up
apps/console/app/api · phase-3-solutions-coo-mvp branch
Champion 10/12 wired customer-side coach
GET /api/champion/customer
GET /api/champion/profile NEW
POST /api/champion/profile NEW
GET /api/champion/engagement NEW
GET /api/champion/dispatches NEW
POST /api/champion/screenshare
POST /api/champion/escalate
POST /api/champion/track-question
GET /api/champion/confidence
POST read_use_case_wiki (auto-injected)
missing: send_telegram (per-cust bot) · schedule_call (calendar OAuth)
Solutions 7 endpoints sales spear
POST /api/solutions/build
POST /api/solutions/build?ground=true NEW
POST /api/solutions/refine
GET /api/solutions/build (introspect)
POST parseBriefSmart (LLM + regex fallback)
POST writeProspect (manifest + playbook)
POST commitProspect (prospect-repo)
missing: Telegram /build trigger only — everything else shipped
Onboarding 2 endpoints activation
POST /api/onboarding/kickoff-brief
POST /api/onboarding/engagement-plan NEW
writes 01_Customers/engagement.md — the file Champion's read_engagement consumes. Loop closes.
missing: Day 7/30/60/90 scheduler · customer-health derivation
CX 2 endpoints long-tail health
POST /api/cx/health-score
POST /api/cx/escalation-triage NEW
deterministic 5-bucket classifier: resolve / escalate-ops / -finance / -implementation / -delivery. No LLM, free, audit-friendly.
missing: Zendesk/Intercom/Front · sentiment
Investor 1 endpoint board updates
POST /api/investor/kpi-tracker NEW
deterministic board-update markdown. Customers · run health · cost · "what to surface" callouts. No LLM call.
GET /api/investor/kpi-tracker (introspect)
missing: investor CRM · deck library · board-meeting persistence
Finance 1 endpoint runway, P&L
POST /api/finance/runway-snapshot NEW
runway = cash ÷ (fixed + live LLM burn). Green ≥12mo / amber 6–12 / red <6.
missing: Xero/QuickBooks (auto-source cash + fixed) · P&L synth
Strategy 1 endpoint GTM, positioning
POST /api/strategy/market-pulse NEW
web-grounded industry brief — trends · regulatory · M&A · headlines · "what to watch". 8 web searches · ~$0.05.
missing: news feed alerts · OKR tracking · positioning vault writes
Compliance 1 endpoint risk, SOC2, ISO
POST /api/compliance/risk-register-seed NEW
industry-templated starter register — logistics · hospitality · retail · trades · professional + 5 generic SMB rows. ID'd R001+, severity-ordered, vault-writes optional.
missing: Vanta/Drata · evidence vault · review-cycle automation
Concierge 1 endpoint exec support
POST /api/concierge/morning-brief
synthesises inbox + approvals + last-24h runs into a morning brief. Optional vault-write.
missing: Google Calendar OAuth · Stripe expense reads
Research 2 endpoints cited findings
POST /api/research/search
POST /api/research/prospect-intel
web search via Claude's native server tool (Anthropic API direct, ~$10 / 1k searches). Now also called by Solutions /build?ground=true.
missing: domain allow/block lists per customer · sentiment filtering
Marketing 1 endpoint brand, ICP
POST /api/marketing/competitive-snapshot
web-grounded competitor breakdown for a customer. Per-competitor positioning · pricing signals · soft spots.
missing: brand asset registry · campaign performance pull
Sales 2 endpoints pipeline + brief
POST /api/sales/prospect-brief
POST /api/sales/pipeline-summary NEW
deterministic pipeline view from clients/* manifests — bucket by status / tier / industry, weighted ARR (placeholder per-tier figures pending pricing-book sign-off).
Delivery 2 endpoints lifecycle ownership
POST /api/delivery/weekly-brief
POST /api/delivery/qbr-brief NEW
Day-90 QBR brief — closes the lifecycle loop: Onboarding writes engagement.md → Champion reads it → Delivery synthesises QBR from same data + runs + dispatches + escalations. Renewal-readiness signal: green / amber / red.
Marketing (updated) 2 endpoints brand · cadence
POST /api/marketing/competitive-snapshot
POST /api/marketing/cadence-planner NEW
touch-cadence planner. 5 audience templates: cold-outbound · warm-inbound · trial-active · active-customer · churned-winback. Channels filterable. Day-by-day schedule with copy seeds, not finished copy.
Implementation 1 endpoint custom integrations
POST /api/implementation/integration-brief
first-cut briefing surface. Custom-integration tooling stays heavy until per-customer integration choices land (Cario / Xero / GitHub MCP / etc).
Plumbing shared cross-cutting
LIB lib/agent-tools/vault.ts — vaultRead · vaultWrite · vaultAppend · vaultListDir · brainExists · slug-validated path-traversal protection
LIB lib/agent-tools/vault.ts — parseFrontmatter · serializeFrontmatter · validateFrontmatterPatch NEW
LIB lib/agent-tools/web-search.ts — Anthropic SDK + web_search server tool, citations + token usage surfaced
LIB lib/research/prospect-intel.ts — extracted core, used by both /api/research/prospect-intel + /api/solutions/build?ground=true NEW
SCRIPT bin/onboard-customer.sh — provisions clients/<slug>/ + per-customer brain + seeds engagement.md NEW
SCRIPT bin/validate-manifests.sh — schema gate (8/8 currently green) NEW
SCRIPT scripts/smoke-all-tools.mjs — single-command regression for every deterministic endpoint (22/22 green) NEW
TESTS npm run test:unit — 48/48 (vault frontmatter + parse-brief regex parser; caught 2 real bugs) NEW
Still stub 18 agents prompt only
Ops · Procurement · Automation · Data · Product · Engineering · Frontend · Backend · DevOps · People · Legal · Content · Brand · Email · Campaigns · Video · COO (single-shot, not yet tool-loop) · Champion's 2 channel-blocked tools
prompts + skill packs exist; no API surface yet. Tool wiring blocked on customer integration choices (Cario for Tarheel, etc.) or shared dependencies (GitHub MCP, Xero MCP, Telegram bot scoping, Calendar OAuth).
Trace it

Three flows that the picture above doesn't tell on its own.

The network shows the static shape. These walk through what actually happens when something arrives — channel in, agents fire, customer gets a reply.

Trace · 01
A customer DM about a refund
1.
Customer messages the bot — "got billed twice this month, can I get a refund?"
2.
Telegram webhook hits /api/coo; COO classifies the surface area.
3.
CX runs escalation_triage — keyword match on "refund" + "billed"escalate-finance at high confidence. Auto-suggested first response: "Thanks for flagging — billing/payment questions need a careful review…"
4.
CX sends the holding reply, then escalate_to(finance, ...).
5.
Finance picks up the escalation log entry; runway_snapshot + Xero (when wired) ground the response.
6.
COO sends the final reply with the refund decision back through Telegram.
Trace · 02
Day-7 check-in — Onboarding ↔ Champion loop
1.
Onboarding wakes on the day-7 cadence (scheduler). Reads the customer's roster via read_customer.
2.
Calls POST /api/onboarding/engagement-plan with { phase: "day-7-checkin", current_focus: "..." } and a bodyAppend note.
3.
The patch lands in 01_Customers/engagement.md in the per-customer brain. Frontmatter merged; last_updated bumped.
4.
Hours later, the Champion gets a question from the customer. Champion calls read_engagement first — sees Day 7 + current focus + next milestone. Grounded, not guessing.
5.
Champion answers in context. If stuck, Champion escalate_to(implementation) — never to founders.
6.
Loop closes: Onboarding owns the file; Champion reads from it. One source of truth, two agents share it.
Trace · 03
A new prospect — /build with grounding
1.
Mina at a coffee with a prospect. DMs "/build acme-logistics, NSW logistics co".
2.
Solutions route hits /api/solutions/build?ground=true. Runs prospect-intel first — web-grounded company research (recent moves, stack signals, decision-makers).
3.
Research output is fed into the LLM parser as load-bearing context. Manifest reflects real intel, not generic vertical defaults.
4.
Manifest + playbook commit to clients/acme-logistics/. Vault helpers handle the write under path-traversal protection.
5.
Reply to Telegram: "demo at http://demo.leedab.com/?client=acme-logistics — open it on your phone."
6.
Prospect opens the URL. Dashboard renders their agents, with industry-specific copy. The pitch is no longer abstract.
Why this shape

The customer is the centre of gravity. Everything else is in service.

One bot, many agents Customer messages enter through ONE channel. COO orchestrates. The customer never picks an agent — they pick a problem. The agent they need is whichever one COO routes to.
Per-customer compartments Every line that crosses the customer node is per-customer scoped. Champion of Tarheel only sees Tarheel's brain. Solutions writes to that manifest. Cross-customer leakage is structurally prevented at the vault helper layer.
The activation loop is the moat Onboarding writes engagement.md → Champion reads it → updates feed back → Delivery owns the QBR. This loop runs once per customer per quarter. By month 3 your brain has more context on a customer than they have on themselves.