MarTech / RevOps · Funnel Config Linter
Your funnel is lying to you. Catch it at config time — not at the QBR.
RevOps Manager / GTM Engineering Lead / Marketing Ops Director — attribution rot enters at build time (bad UTM tag, form with no workflow, lifecycle-stage action that demotes existing Customers to Lead) and surfaces months later as corrupted QBR data. Bizible and Dreamdata show the damage after the fact. Nobody enforces taxonomy at form-build and ad-build time.
A blog ad goes live with utm_medium=cpc instead of organic. A Support Ticket form quietly resets Customer-stage contacts to Lead, re-enrolling them in lead-acquisition nurture sequences. A form ID mismatch means the Re-Engage workflow has never enrolled a single contact from the Exit Intent popup. These aren't edge cases — they're the actual class of mistakes RevOps teams inherit.
The Q2 channel ROI report counts organic blog sessions as paid-search clicks. 7 existing customers are receiving "start your free trial" emails. 14 MQLs have no owner assignment and are going cold. The QBR is a meeting where nobody trusts the numbers.
Critical: 6 | Warning: 9 | Info: 1 — Funnelguard scans the synthetic Acme Corp Q2 config and surfaces 16 findings: the blog UTM collision, the Support Ticket lifecycle downgrade, the 14 unowned MQLs, the form-ID mismatch, and more — each with an exact, actionable fix in practitioner voice.
Static Astro site. All rules are client-side TypeScript pure functions — no backend, no HubSpot API, no real CRM data. The rule engine is typed and composable; each rule has a clear signature a team could extend. Deploys as a Cloudflare Pages subpath.