A services agency runs on small, constant acts of coordination — recapping meetings, turning talk into tickets, answering inbound leads before they cool. The Hive was built to do those acts automatically so the humans could stay in the interesting parts of the job.
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Slack │ │ ClickUp │ │ GHL │ │ Yelp │
│ webhooks │ │ tasks │ │ CRM │ │ webhooks │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │
└─────────────┴──────┬──────┴─────────────┘
│
┌────────▼─────────┐
│ NestJS gateway │ ← event bus · retries
└────────┬─────────┘
│
┌─────────────┼─────────────┐
│ │ │
┌────────▼──┐ ┌───────▼────┐ ┌─────▼─────────┐
│ Meeting │ │ Lead │ │ Scope │
│ summarizer│ │ responder │ │ generator │
│ (OpenAI) │ │ (OpenAI) │ │ (OpenAI) │
└────────┬──┘ └───────┬────┘ └─────┬─────────┘
│ │ │
└─────────────┼─────────────┘
│
┌────────▼─────────┐
│ Laravel core │
│ · audit log │
│ · humans in UI │
└──────────────────┘ Rather than one monolithic AI brain, The Hive is a small fleet of focused agents — one writes meeting summaries, one handles Yelp leads, one drafts scope documents. Each has narrow permissions, its own prompts, its own evaluation set. When something regresses, we know exactly which agent to fix.
Internal artifacts (summaries, action items, tickets) post automatically. Anything going to a customer — even a Yelp reply — is drafted, routed into Slack for a one-click approve, then sent. Trust grows before autonomy does.
Every system-of-record write goes through the Laravel core. Agents don't touch ClickUp or GHL directly — they hand off structured intent, the core validates and writes. The audit log tells you who asked, who approved, who executed.
Prompts aren't config — they're program text. They live in the monorepo, reviewed in PRs, with evaluation runs on change. 'Fixing the prompt' is a commit, not a Slack message someone forgot about.