/voc-orchestrator — The Weekly Run
One command, six phases. The intelligence lives in the individual skills; this is a coordinator that runs them in order and fails loudly instead of quietly.
Arguments
| Flag | Effect |
|---|---|
--window 30d |
Override the default window |
--skip-sources chat,notes |
Skip named sources |
--dry-run |
Pull, analyze and synthesize, but do not route or dispatch |
--sources-only |
Stop after Phase 1 |
Use --dry-run for your first three runs. Read the synthesis by hand and check whether the
confirmed themes match what you already believe from talking to customers. If they do not, the
problem is almost always upstream configuration, not the rule.
Phase 0 — Preflight
Before pulling anything, verify the setup and print the result as a table. Do not proceed silently past a broken connector.
Preflight
config/thresholds.json ok
context/product-context.md ok
CALL_PROVIDER=gong credentials present
Apify MCP connected
CRM MCP NOT CONNECTED — signals will be tier U
chat_channels 3 configured
notes_source not configured — skipping
VOC_OUTPUT_DIR=./outputs local, not synced ok
Check VOC_OUTPUT_DIR for the strings Dropbox, Google Drive, OneDrive, iCloud. If it is
inside a synced folder, warn before writing anything. This pipeline writes customer
conversations to disk.
If fewer than confirmation.min_independent_sources sources are configured, say plainly that
nothing can reach high confidence this run, and suggest either connecting more sources or
lowering the threshold deliberately in the config.
Phase 1 — Pull sources
Run in parallel where the connectors are independent:
| Order | Skill |
|---|---|
| 1 | /voc-source-calls |
| 2 | /voc-source-reviews — cost guard: this one spends money. Skip on weekly runs; monthly is enough. Reviews do not change fast. |
| 3 | /voc-source-chat |
| 4 | /voc-source-notes |
| 5 | /voc-source-custom for each registered custom source |
A source that is not configured is skipped, not failed. A source that is configured and errors stops the run — a partial corpus produces a confident-looking synthesis built on a hole.
Phase 2 — Analyze calls
/voc-analyze-calls. Its report is a structured corpus and feeds synthesis directly rather than
being profiled signal by signal.
Phase 3 — Profile
/voc-profiler over every unprofiled signal in outputs/voc/sources/. Parallelize with subagents
above 20 signals, respecting cost_guards.max_parallel_subagents.
Deduplicate before profiling, not after. Cross-source duplicates are the one failure the confirmation rule cannot catch, because by the time it runs they look independent.
Phase 4 — Synthesize
/voc-synthesize. Clusters via subagents, then applies the rule via scripts/synthesize.js.
Phase 5 — Route
/voc-route. Skipped under --dry-run.
Phase 6 — Dispatch
/voc-dispatch. Skipped under --dry-run. Produces drafts only. Nothing is sent.
Final summary
VoC Pipeline — week of 2026-04-20 to 2026-04-26
SOURCES calls 41 · reviews skipped (monthly) · chat 23 · notes 8 · custom 0
duplicates removed 6
PROFILED 72 signals tier A 9 · B 41 · C 8 · U 14 (quarantined)
CALLS ANALYZED 41 in → 12 internal · 8 customer · 21 prospect
SYNTHESIS 34 clusters → 6 confirmed · 9 watchlist · 19 dropped
ROUTED testimonial 2 · case study 1 · objection 3 · product 4 · exec 1
DISPATCHED 11 artifacts, 1 held
Not available this run: CRM (not connected) — all weighting is ICP-only
Runtime 14 min
Start here: outputs/voc/synthesis/2026-04-26-synthesis.md
Always end with the single file a human should open first.
Cadence
Weekly is right for calls, chat and notes. Monthly for reviews — they move slowly and each run costs money. Quarterly, run a wide window to see what has been steadily true rather than what happened last week.
Daily runs are a mistake. The confirmation rule needs time to accumulate corroboration across channels, and a daily cadence produces a watchlist that never graduates.
When it goes wrong
The orchestrator is deliberately thin. If output looks wrong, run the phases by hand — the failure is almost always in one skill and obvious once isolated.
| Symptom | Usual cause |
|---|---|
| Everything is tier U | CRM not connected, or company names not resolving |
| Nothing confirms | Too few channels configured, or duplicates were removed correctly and you genuinely have thin signal |
| Everything confirms | Duplicate signals counted as independent channels. Check Phase 3 dedup first. |
| Quotes sound like your own marketing | Speaker labels missing on transcripts, so internal speakers are being harvested |
| Same theme every week | It is either genuinely your biggest problem, or one loud account. Check the account spread. |