Skip to Content
ArchitectureAI Swarm

AI Swarm — Marketer, Qualifier & “Mr. Onoots”

The AI Swarm is a set of eight autonomous agents that run the seller side of a brokerage: orchestrator, marketer, qualifier, scheduler, nurture, concierge, onboarder, and guardian. Each one is toggled on/off per agent from the dashboard (the Guardian is always on). This page covers two of them — the Marketer (outbound distribution) and the Qualifier (inbound replies) — plus the Guardian as the cross-cutting chokepoint.

Two clarifications that correct the intuition of the flow:

  1. Instagram inbound is not wired. Inquiries come in only through the web “ask agent” chat (a widget on the property/project page), the public lead form, and voice — there is no Instagram/Messenger/WhatsApp inbound webhook yet.
  2. Instagram outbound is not the default. The Marketer posts through a social integration whose default platform is Facebook (Instagram rejects text-only posts; it needs media). Instagram only goes out with explicit configuration + attached media.

End-to-end flow

Stage by stage

1. Publish the property → triggers the Marketer

  • User: the agent creates the listing (or the Onboarder approves it); it goes live.
  • Technical: when a listing becomes active, a database trigger inserts a listing.published event into the outbox. The relay routes it to the Marketer workflow. The autonomy act post_social defaults to full_auto.

2. Marketer → Guardian → social

  • User: the Marketer builds a caption and posts the listing to the brokerage’s connected social network.
  • Technical: the Marketer workflow (1) reads the listing and resolves the marketer agent — if it’s disabled, it doesn’t post; (2) builds a static caption (not an LLM); (3) runs the Guardian on the post_social act (fair-housing/PII scan, free-tier cap, resolves distribution — the brokerage’s own social account / the Onoots platform account / both, configured in the dashboard — anchors the result on-chain and records the action); (4) if the decision is allow, it posts to social. The social platform defaults to Facebook; Instagram requires explicit configuration and attached media.

3. Receive the inquiry → encrypted conversation

  • User: a prospect opens the “ask agent” chat on the public page and writes.
  • Technical: the request creates a lead (source: ai_chat) and an end-to-end encrypted conversation (the message key is wrapped per participant). Inserting the message emits a message.inbound event, which the relay routes to the Qualifier workflow (or a generic responder if the conversation isn’t a lead).

The inbound auto-reply is live in production: the message trigger is applied and has processed real inbound inquiries end to end. The web inbound path works today; only the Instagram inbound path is missing (see Current limitations).

4. Reply with the Qualifier (“Mr. Onoots”)

  • User: the assistant answers, signing as “Mr. Onoots” (or the name configured by the brokerage — e.g. “Mr. Nelson” for land-project developments).
  • Technical: the Qualifier builds the persona prompt (default persona Mr. Onoots, overridable per brokerage), generates the reply with Claude, runs it through the Guardian on the reply_lead act (full_auto), and if allow, auto-sends the reply as the AI participant. It attaches a human-handoff summary when it detects one, but still replies.

Three “assistants”, two share the name

NameWhat it is
Mr. Onoots (Qualifier)Answers client inquiries in the chat — the Qualifier’s default persona (gated reply_lead).
Mr. Onoots (internal concierge)A help assistant for logged-in staff — read-only, scoped by row-level security.
AriaSuggests draft replies to the agent in the inbox (does not auto-send).

The two “Mr. Onoots” share the brand but are different code, prompts and gating. The one that answers chat inquiries is the Qualifier; the one in the help widget is the internal concierge.

Events, workflows & autonomy acts

Event (outbox)WorkflowAct (level)Effect
listing.publishedMarketerpost_social (full_auto)Social post via the integration
message.inboundQualifier / responderreply_lead (full_auto)Qualifier reply
lead.createdQualifierreply_leadFirst contact

Cross-cutting — Guardian + audit

Every outbound AI act passes through a single chokepoint, guardAction, reached by the worker over an authenticated internal endpoint. For each act it:

  1. resolves the autonomy level (city → region → country → global chain);
  2. scans the text (fair-housing / PII);
  3. decides allow | prepare | escalate | block;
  4. enforces a hard free-tier cap (over cap → block);
  5. anchors the result on-chain;
  6. writes a row to the action log (act, level, status, payload hash, flags, anchor tx, reasons);
  7. meters credits.

Where it’s operated (UI)

  • Swarm dashboard — the eight agents with per-agent switches (Guardian read-only).
  • Distribution — social distribution config (own / platform / both, connection status).
  • Conversations — the agent inbox (buyer ↔ AI ↔ agent threads + handoff summaries).
  • Conversation audit — the broker’s compliance audit view.
  • Leads — leads generated by the chat (source: ai_chat) and the public form.
  • Help widget — the internal “Mr. Onoots” concierge.

Current limitations

  1. Instagram inbound: there is no Meta (Instagram/Messenger) webhook yet, so DMs and comments don’t flow in as messages. The web inbound path does work (see stage 3).
  2. Instagram outbound: to post to Instagram, the social platform must be set to include Instagram and media (a listing photo) must be attached, because Instagram rejects text-only posts.
Last updated on