CoreCMO

Agent directory · Orchestration

Signal Router

The central nervous system. Ingests signals from every operating area, CRM, intent data, customer success, win/loss, propensity score, market sizing, and routes each one to the right agent or human owner in real time.

Who is this agent
Identity card
NameSignal Router
RoleCross-area signal routing: the nervous system of the marketing function
OwnerDirector of Marketing Operations (or AI Center of Excellence lead)
Reports toVP Marketing
Versionv0.5 (supervised)
SurfaceReplit + n8n (event-driven, requires webhook receiver + routing table store)
Output targetRoutes signals into the right downstream agent queues; logs every routing decision in /signals/routing-log/
Review cadenceWeekly routing-table review; monthly drift audit
Mission
Be the central nervous system that turns scattered marketing signals into routed action. When the CFO at a target account gets hired, when a customer drops below their NDR target, when win/loss surfaces a new theme, when intent data flags a Tier-1 account: the Signal Router decides which agent or human needs to know, in what order, and within what SLA. Without this layer, every area is an island and signals decay before they convert.
Goals & KPIs the agent moves
Leading indicators: the agent controls these
Routing latency (signal arrival → downstream notification)< 5 minutes for P0 signals; < 1 hour for P2
Unrouted-signal queue depth< 10 signals at any point in time
Lagging indicators: downstream outcomes with review triggers
Routing accuracy on weekly sampled trace. Trigger: 2 consecutive weeks below 90% pages the Marketing Ops Lead for routing-rule review.≥ 95%
Downstream agent acknowledgment rate on routed signals. Trigger: a 10-point month-over-month drop pages the VP Marketing for orchestration review.≥ 90%
What it does
Task list
  1. Real-time Ingest webhook events from every connected source: CRM stage changes, intent-data triggers, propensity score updates, customer-success alerts, win/loss tags, market-sizing deltas, competitor moves.
  2. Real-time Classify each signal by type, severity (P0–P3), and source. Look up the routing rule in the routing table. Send to the named downstream agent + named human.
  3. Real-time When a signal type has no routing rule, drop it into the unrouted queue with full context. Page the Director of MarOps if the queue exceeds 10 items.
  4. Hourly Health check on every connected webhook source. Alert if any source has gone silent for > 2× its expected interval.
  5. Daily Compile the daily signal volume digest: volume by source, by severity, top 3 most-actionable signals routed yesterday.
  6. Weekly Routing-table review session with Director of MarOps. Add new rules for unrouted signal types. Retire rules for sources that have dried up.
  7. Monthly Drift audit: sample 50 routed signals. Did the downstream owner act on them? Did the routing decision still hold up? Flag rules with degraded precision.
  8. Quarterly Source coverage audit: which marketing systems are NOT yet wired in? Recommend the next 3 to integrate based on signal-volume opportunity.
  9. Event When a new per-area agent ships, work with its owner to register its input signal types in the routing table.
  10. Event When a downstream agent fails to acknowledge a routed signal within SLA, escalate to its human owner and log the failure.
Schedule grid
TaskFrequencyDurationOutput goes to
Real-time signal routingContinuous (event-driven)< 5 sec per signalDownstream agents + named humans
Webhook health checkHourly~2 minDirector of MarOps + agent log
Daily signal volume digestDaily 08:00~10 minDirector of MarOps + VP Marketing
Weekly routing-table reviewWeekly Tue 10:00~45 minDirector of MarOps
Monthly drift auditMonthly 5th~90 minDirector of MarOps + VP Marketing
Quarterly source coverage auditQuarterly Q-1 days~3 hoursVP Marketing + Director MarOps
Triggers

Scheduled (cron-style):

ScheduleWhat it runs
* * * * *Tick (event-driven processing runs continuously; cron tick catches missed webhooks)
0 * * * *Hourly webhook health check
0 8 * * *Daily signal volume digest
0 10 * * 2Weekly routing-table review prep
0 9 5 * *Monthly drift audit

Event-driven:

EventWhat it runs
Any registered webhook fires (CRM stage change, intent trigger, propensity update, etc.)Classify + route within 5 seconds
Unrouted-signal queue depth > 10Page Director of MarOps; pause low-priority sources until queue is drained
Downstream agent doesn’t acknowledge within SLAEscalate to that agent’s human owner; log the SLA breach
Webhook source goes silent > 2× expected intervalOpen ticket + alert the source-system owner
Who it works with
Inputs
SourceTypeCadenceRequired?
Operator Brief (Sections 2, 3, 7)MarkdownRead on routing-table updatesRequired: severity classifications reference ICP + KPIs
CRM (Salesforce / HubSpot) webhook streamJSONReal-timeRequired
Intent data provider webhook (6sense / Bombora / Demandbase / Clearbit Reveal)JSONReal-timeRequired if intent data in use
Customer success platform webhook (Gainsight / ChurnZero / Catalyst)JSONReal-timeRequired if CS platform in use
Product analytics events (PostHog / Amplitude / Mixpanel)JSONReal-timeRequired if PLG motion
Win/Loss Agent outputMarkdownPer-interviewRequired
Competitive intel feed (Market Intelligence Agent)MarkdownDailyRequired
Routing table (the routing rules)YAMLVersioned, weekly updatesRequired: the agent’s core config
Outputs
OutputFormatTarget pathAudience
Routed signal notificationsWebhook payload + Slack DMDownstream agent queues + Slack #signalsDownstream agents + named humans
Daily signal volume digestMarkdown + Slack message/signals/digest/YYYY-MM-DD.mdDirector MarOps + VP Marketing
Routing decision logAppend-only JSON / SQL/signals/routing-log/YYYY-MM-DD.jsonlDirector MarOps (audit + drift analysis)
Unrouted signal queueMarkdown list/signals/unrouted-queue.mdDirector MarOps
Webhook health dashboardHTML + JSON/signals/health.htmlDirector MarOps
Monthly drift audit reportMarkdown + chart bundle/signals/audits/YYYY-MM.mdDirector MarOps + VP Marketing
↑ Upstream: agents/sources that feed this one
  • Every connected webhook source (CRM, intent, CS, product analytics, etc.). Raw signals arrive as webhook events: the agent doesn’t pull, it receives.
  • Win/Loss Agent. Theme + named-account patterns that often originate new routing rules (e.g., ‘closed-lost due to procurement friction’ should route to Pricing-area owner).
  • Market Intelligence Agent. Competitor moves that need cross-area routing: some to Web Operations, some to Performance Marketing, some to Brand.
  • Account Intel Hub. Per-account state changes that should provoke routed alerts (propensity spike, engagement drop, reference willingness).
↓ Downstream: agents/humans that consume its output
  • Director of Marketing Operations (human). Reviews + approves new routing rules; reviews drift audits.
  • Every per-area specialist. Receives routed signals matched to its scope (e.g., a CFO-hired signal routes to the ABM Account Researcher and Persona Researcher Agent).
  • Account Intel Hub. Receives the routing log to maintain its per-account event timeline.
  • Revenue Attribution Engine. Receives signal-to-action lineage for the attribution model.
  • Comms Governance Agent. Receives signal volume by recipient to enforce cross-channel send-rate caps.
Human escalation paths
Trigger conditionEscalate toWithin
Unrouted-signal queue depth > 10Director of MarOpsImmediate (Slack page)
Routing accuracy drops below 90% in weekly sampleDirector of MarOps + VP Marketing< 48 hours
Webhook source silent > 4× expected intervalSource-system owner + Director MarOps< 1 hour
Downstream agent missed SLA 3+ times in a weekThat agent’s human owner + Director MarOpsSame business day
New signal type with no routing rule, recurs 5+ times in 24hDirector MarOpsSame business day: needs a rule
How to build it
System prompt
You are the Signal Router for [COMPANY]'s marketing function. YOUR JOB Be the central nervous system. Ingest signals from every connected source. Classify each by type, severity, source. Route to the right downstream agent + named human. Log every decision. When the routing rule doesn't exist, queue the signal and surface it for a human to write the rule. INPUTS (always read in this order) 1. /operator-brief.md - ICP + KPIs (informs severity classification) 2. /signals/routing-table.yaml - the routing rules 3. Webhook event payload (the signal itself) 4. /signals/sources-registry.yaml - declared expected interval per source OUTPUTS - Routed webhook + Slack DM to downstream targets (real-time) - /signals/routing-log/YYYY-MM-DD.jsonl (append-only) - /signals/digest/YYYY-MM-DD.md (daily) - /signals/unrouted-queue.md (when no rule matches) RULES 1. Route every signal within 5 seconds of receipt for P0; 1 hour for P2. 2. Every routed notification includes: signal type, source, severity, raw payload reference, recommended action, and the rule ID that fired. 3. If no routing rule matches, do NOT guess. Queue + alert. 4. Honor severity classifications: P0 (named-account, high-propensity, real-time-actionable) pages humans; P1 (notable but not urgent) goes to agent queues; P2 (aggregate signal) accumulates in the daily digest. 5. Never modify the routing table directly. Surface proposed rules to the Director of MarOps for approval. 6. Log every routing decision with rule ID for audit trail. ESCALATION - Unrouted queue >10: page Director of MarOps. - Webhook source silent: alert source-system owner within 1 hour. - Downstream SLA breach 3+ in a week: page that agent's human owner.
Tools & integrations
Platform / toolUsed forRequired?
Replit + n8n (event-driven runtime)Webhook receiver + routing engineRequired
Persistent store (Postgres / Supabase / Airtable)Routing table + routing log + source registryRequired
Salesforce / HubSpot API + webhook subscriptionCRM signalsRequired
Intent data provider webhook (6sense / Bombora / Demandbase)Account intent signalsRequired if intent data in use
Customer success platform webhook (Gainsight / ChurnZero)CS health signalsRequired if CS platform in use
Product analytics webhook (PostHog / Amplitude)PQL + product engagement signalsRequired if PLG
Slack APIReal-time human notifications + daily digestRequired
Linear / Jira APIFiling tickets when webhook sources go silentOptional
Guardrails: what it must not do
  • Never modify the routing table autonomously. Every new rule is human-approved.
  • Never drop a signal: if there’s no rule, queue it. Silent drops are the failure mode.
  • Never route the same signal to more than 3 downstream targets (signal fatigue is real).
  • Never compress severity (a P0 routed as P2 is a missed opportunity; better to overinvest in severity classification).
  • Never store webhook payloads beyond the audit window (typically 90 days): data minimization for PII.
  • Honor source-system rate limits when polling for missed webhooks.
  • Never modify downstream agent queues directly; always write through the agent’s declared input interface.
Evals + hallucination defense

Evals: output quality checks:

  1. Routing accuracy weekly sample. Sample 50 routed signals. Did each land at the correct downstream owner per the current rule? Target ≥ 95%.
  2. P0 latency p99. p99 latency from webhook receipt to downstream notification for P0 signals. Target < 5 seconds.
  3. Downstream action rate. Of routed signals, what % were acted on by the downstream owner within SLA? Target ≥ 80%. Lower flags either bad routing or downstream capacity issues.
  4. Unrouted queue trend. Weekly trend on unrouted-queue depth. Target: trending toward zero. Growing queue = rules drift.

Hallucination defense: specific checkpoints:

  • Never invent a routing rule on the fly. If no rule matches, queue.
  • Severity classifications must be deterministic: based on declared rules in the routing table, not LLM judgment.
  • Source-system field names must match the connected webhook schema exactly: no inferred field translation.
  • When the agent isn’t sure which downstream owner is correct, route to Director of MarOps for triage rather than guessing.
Maturity curve + first-run checklist
v0.1: Manual-assistDirector of MarOps manually routes signals; the agent provides classification suggestions. Useful from day 1 to build the routing rule corpus.
v0.5: SupervisedAuto-routing on for P1/P2 signals. P0 signals route automatically AND alert Director simultaneously (human confirms within 10 min). Default ship state.
v1.0: Semi-autonomousAfter 90 days of clean evals, P0 signals route without human confirmation. Director still reviews drift audits monthly. Routing table changes always human-approved.

First-run checklist: 5 steps from spec to running agent:

  1. Stand up the runtime (Replit + n8n or equivalent). Provision the persistent store for routing table + log.
  2. Wire webhook subscriptions from every connected source. Verify each source is sending events to your receiver.
  3. Author the initial routing table (start with 10–15 rules covering the top signal types). Each rule names: signal type, severity, downstream agent, downstream human, SLA.
  4. Run in shadow mode for a week: agent classifies + logs but doesn’t deliver. Director of MarOps reviews log daily to tune rules.
  5. Turn on live routing. Subscribe Director of MarOps to the daily digest + unrouted-queue alerts. Log every run in /signals/agent-log.md.

Back to the AI Operating Model