| Stage | Executor | Provider(s) | Writes | Done-stamp (idempotent) |
|---|---|---|---|---|
| 1 · Firmographic | Deepline play the company-account-enrichment-salesforce | PeopleDataLabs (primary) · LeadMagic · BuiltWith | Account: employees, industry, funding, LinkedIn, CRM, tech stack, email host | Firmographics_Last_Verified__c |
| 2 · Committee | Deepline play the company-buying-committee-salesforce + MCP write | FullEnrich | Contacts: name, title, work email, mobile, LinkedIn | per-contact reconcile |
| 3 · Product | Claude skill /product-enrichment-analyst | Amplitude · Snowflake | product-engagement score, verdict, DAU, Tasks, extension, dialer, AICompose, SF-connected | Product_Usage_Verified__c |
| 4 · Octave | Claude skill /octave-enrichment-analyst | Octave | Octave fit score, playbook, disqualified, DQ reason | Octave_Verified_At__c |
| 5 · Scoring | Deepline play the company-lead-scoring-salesforce | v7.5 scorer (reads 1-4) | Composite_Score, Strike_Signal | Composite_Scored_At__c |
A single scheduled task (enrichment-pipeline) runs all five stages in one pass - Deepline plays via the deepline CLI (stages 1, 2, 5), product & Octave via their MCPs (stages 3, 4). One trigger, not five tools poked by hand.
Salesforce duplicate rules are ON. We let them do the dedupe: attempt create → on DUPLICATES_DETECTED, Salesforce returns the matching record → we update that record. More robust than any scan.
Live proof: Quantum Metric's CRO already existed under a stale email (contact@example.com from his old job) - fuzzy name-match caught what an email query missed. Bonus: enrichment refreshes stale emails & surfaces duplicate contacts (RevOps hygiene).
Octave isn't a Deepline provider, so Stage 4 runs as a Claude skill. If Octave is reachable inside Deepline, Stage 4 moves into the master play.
Canonical product-engagement score v2 is Amplitude-derived; AICompose & dialer aren't warehoused in Snowflake. Stage 3 stays a Claude skill until Amplitude (or a clean product-usage view) is reachable in Deepline.
Deepline's Salesforce provider can't query contacts by account (no SOQL), so committee writes run through the MCP today. A duplicate-aware contact upsert would pull Stage 2 fully into the play.
Plays can invoke deeplineagent / ai_inference and Deepline has native contact tools - so the reasoning steps don't block a master play. Only the three connector gaps above do.
Once ① + ② + ③ land, the five plays collapse into one master Deepline workflow (cron- or webhook-triggered in Deepline cloud) that chains firmographic → committee → product → Octave → scoring and calls AI for the reasoning - fully headless, single platform. Until then, the Claude orchestrator delivers the same end-to-end result from one trigger. No Apollo anywhere - bake-off proved PDL most accurate (414 vs true 420); firmographics = PDL+LeadMagic+BuiltWith, contacts = FullEnrich.