An agent-of-agents that writes, produces, and ships DroneGenie's marketing.
Nine specialised agents — Strategy, Persona, Script, Visual, Video, Posting, Analytics, Provisioning, Builder — coordinated by a SHA-256-chained audit log, a budget ledger, and a sub-60 s kill switch. Locked Monika voice. Locked brand primary #1BAA6E. Two-stage classifier (n-gram + embedding), tone auto-tune, and bounded regeneration before any post goes live.
Throughput at FRD load
Driven through a representative DB write/read pattern. The FRD target is 600 briefs per quarter — MarkAIt clears that target in < 3 seconds.
Source: dg-mae-load-report.json · stretch run on the same harness handled 2,400 briefs at concurrency 16 in 8.2 s with zero errors (~3.8M× headroom).
How a brief becomes a published post
Every step is an FRD-mapped agent. Every Anthropic / tool call rolls into the budget ledger. Every state change appends to the audit chain.
Side rails: Provisioning for new platform onboarding (FR-PRV-005 enforced), Builder for orchestration loop control, Kill switch halts dispatch in ≤ 60 s.
The nine FRD agents
All nine are real implementations against FRD v3.0 — not stubs. Live LLMs (Anthropic Opus 4.7 / Sonnet 4.6) and live media APIs (Veo 2/3, Kling 2.5 Turbo, HeyGen, Whisk, MusicGPT, ElevenLabs) with offline-deterministic fallbacks for every call site.
Strategy
Plans 12 weekly briefs per campaign with pillar-mix and calendar-deviation gates (FR-STR-002, FR-STR-005).
opus 4.7 · 90-day perf priorPersona
Scores 57 personas across 11 verticals on channel-fit / recent-perf / role-fit. Confidence-gated escalation to HITL.
FRD App. H · sigmoid + marginScript
Variant generation with two-stage voice classifier (n-gram + embedding @ α=0.30), forbidden-vocab, fact-claim, depth, and diversification gates.
sonnet 4.6 · ≤2 retriesVisual
Imagen / Nano Banana hero generation per Appendix C.4 policy. Pure-SVG brand template render with locked colors, Poppins, footer, wordmark. Face/logo detector.
imagen · nano-bananaVideo
Veo 2/3 long-running prediction polling, Kling async, HeyGen avatar, Whisk i2v, MusicGPT compose. ffmpeg assemble to LUFS −16, brand LUT, 16:9 / 9:16 / 1:1.
monika · sha-256 stampedPosting
YouTube resumable, Meta Graph IG/FB, LinkedIn UGC three-step + document carousel via PDF compositor, X v2 + multi-chunk video. Caption adapter per platform.
FR-POS-004 gate · 30-day calibrationAnalytics
Three modes — hourly_pull / daily_pull / weekly_brief. YouTube Analytics, Meta Insights, LinkedIn Marketing, X v2 + non_public_metrics, GA4, DroneGenie pipeline MCP.
composite score · CPA target ₹1,200Provisioning
Attended Playwright session with FR-PRV-005 enforcement: refuses ToS, OTP, KYC, payment, captcha. KD WhatsApp + email handoff.
OCI Vault · instance-principalBuilder
Orchestration loop. Persona-before-Script/Video/Visual ordering. Audit-log append. Budget-ledger roll-up. Bounded regeneration.
framework/agent-base.tsCritical invariants
Protected at multiple layers: Postgres CHECK constraints, application code, and test coverage. Any violation is a build failure.
- Brand primary #1BAA6EDB CHECK + agent code + test, always.
- Voice ID Ms9OTvWb99V6DwRHZn6qMonika / ElevenLabs — never overridden, config hash audited.
- Persona before Script / Video / VisualBuilder dispatch ordering — enforced.
- persona_specific_forbidden extends, never replacesGlobal vocab is always part of the check.
- audit_log is append-only at the role + RULE levelPostgres-enforced. Not just app-side discipline.
- Kill switch halts dispatch ≤ 60 senv var OR system_state.paused — 5-second poll loop.
Local Quickstart
No API key required. The vertical slice runs offline with deterministic stubs that exercise every code path of the live pipeline.
# Postgres 16 + Redis 7 in docker npm run docker:up # Workspace deps + schema + seed npm install npm run db:migrate npm run db:seed # Plan, run vertical slice, produce assets npm run plan npm run slice npm run produce # Schedule + publish + comment poll npm run publish npm run publish -- --poll # Analytics — 3 modes, all cron-driven in prod npm run analytics -- --hourly npm run analytics -- --daily npm run analytics -- --weekly
# Production deploy (multi-stage Dockerfile) docker compose --profile cron up -d docker compose run --rm orchestrator \ npm --prefix apps/orchestrator run produce # OCI deploy: instance-principal auth export OCI_AUTH_STRATEGY=instance_principal export OCI_VAULT_OCID=... export OCI_COMPARTMENT_OCID=... export OCI_VAULT_MASTER_KEY_OCID=... export OCI_OBJECT_STORAGE_PAR_BASE_URL=... # Real LLMs export ANTHROPIC_API_KEY=sk-ant-... export TAVILY_API_KEY=tvly-... npm run plan && npm run slice
Sample artifacts & source
A representative weekly brief and LinkedIn document carousel rendered by the brand-locked PDF compositor, the FRD load-test report, and the full Wk 10 source tree.