Signed contract. No invoice. Nobody's panicking yet. They will be.
Buyer & pain
Revenue Systems Engineer / Salesforce BSA / RevOps Architect — quote-to-cash is the highest-stakes RevOps seam. When it breaks, real dollars disappear: un-invoiced contracts, un-billed renewals, amount mismatches that got paid at the wrong number. Nobody renders the full chain — Opportunity → Quote → Contract → Invoice → Renewal — as a navigable, per-record graph where you can click a broken handoff and get a structured, system-attributed diagnosis.
Problem
Salesforce CPQ surfaces quote state. Ironclad surfaces signature state. Stripe surfaces invoice state. No native join confirms the contract-exec trigger fired into billing. Orphaned contracts are invisible. The failure manifests as: "we have 12 signed contracts that did not trigger invoicing — find them." That's a custom SOQL query + a CSV + a meeting. Q2See replaces that meeting.
Before
Crestline Digital signed on March 14. The Workato recipe was paused during a Stripe API key rotation and never resumed. 77 days later, $48,000 has not been collected. Nobody noticed because the payment didn't fail — it never happened.
After
One click on the red-glowing Contract node: CRITICAL — Invoice never created. System owner: Workato recipe cpq-to-stripe-prod. Status: PAUSED. Cause: recipe suspended during key rotation, never resumed. Fix: four numbered steps. Revenue recovered.
What the 30-second demo proves
- Object-level Q2C architecture — Contract, Quote, Invoice, and Renewal are modeled as distinct objects with their own owners, states, and linking keys. Not interchangeable nouns.
- Handoff-level diagnosis, not dashboard-level reporting — each broken edge names the owning system (CPQ / CLM / Workato / Zapier), the exact trigger that failed, and the step-numbered fix.
- System thinking, not record-tailing — the six planted breaks are the actual production failure modes: orphaned contract, amount mismatch from race condition, term gap, orphaned quote, currency mismatch, null renewal owner.
- Engineering, not configuration —
HandoffEdge is a first-class type; rules are pure functions; dagre layout + React Flow custom nodes. This is built, not clicked together.
How it works
- Flow graph — 40 synthetic opportunities threading through five node columns (Opportunity → Quote → Contract → Invoice → Renewal). Edges color-coded by handoff health: healthy muted green, warning amber, broken red-orange, at-risk orange. Graph centers on the most critical finding (B-01, Crestline Digital) on load.
- Inspector panel — clicking any node opens the inspector: object type, linked records, system owner, verbatim "What Broke / Which System Owns It / The Fix" structured finding for flagged nodes.
- Six planted handoff breaks — B-01 orphaned contract ($48k, Workato paused), B-02 amount mismatch ($2,400 delta, race condition), B-03 term gap (14-day billing window), B-04 orphaned quote (rep created two), B-05 currency mismatch (Canadian entity added mid-deal), B-06 null renewal owner (CSM departed, never reassigned).
- Findings rail — all active anomalies pinned to the bottom with "Jump to node" links that center the graph and open the inspector.
Integration surface
Static Astro site with a Preact island for the interactive graph. All data is synthetic JSON fixtures — no Salesforce OAuth, no Stripe API, no backend, no secrets. The "Connect Salesforce CPQ" and "Connect Stripe" flows are illustrative; the architecture for wiring them is documented in the spec. Deploys as a Cloudflare Pages subpath.
- Astro 5
- React Flow (dagre layout)
- Preact islands
- TypeScript
- Cloudflare Pages
- Synthetic data only
Skills proven
- Q2C pipeline architecture (CPQ/CLM/Billing)
- DAG visualization & per-record diagnosis
- Handoff-break rule engine design
- System-owner attribution per finding
- Revenue-cycle data modeling
Roles this maps to
- Revenue Systems Engineer
- Salesforce BSA
- RevOps Architect
- AI Automation Engineer