Systems & Data
How I design the revenue stack: one object model, one source of truth per metric, and governed flow between CRM, product, billing, and BI. Below is the reference architecture I implement, the governance that keeps it trustworthy, and what I fix in the first 90 days.
SOURCES SYSTEM OF RECORD ANALYTICS / ACTIVATION
Website / Ads ─┐
Content / SEO ─┤──▶ Marketing Automation ─┐
Events ─┘ (leads, campaigns) │
├──▶ CRM ──┐
Product signup ────▶ Product Analytics ───┤ (accounts, │
Usage / activation (events, PQL score) │ opps, │
│ contacts) │
Sales activity ────▶ Engagement Tools ────┘ │
(email, calls) │
▼
Billing / Subscriptions ──▶ Warehouse
(invoices, MRR, churn) (modeled tables:
arr_daily, pipeline_snapshot,
rep_capacity, funnel_stage)
│
┌────────────────────────────────┼────────────────────────┐
▼ ▼ ▼
BI / Dashboards Forecast & Planning Reverse ETL
(GTM console, board) (capacity, scenarios) (scores back to CRM)
Principle: data flows one direction into the warehouse, and only modeled tables flow back out. No tool reads another tool's raw objects.
The durable spine. Hierarchy for parent/child, firmographics, segment, and owner. Everything else hangs off it — never off a contact.
One record per revenue event: new, expansion, renewal. Type is mandatory so NRR is computable without manual tagging.
Billing truth for ARR. Opportunities forecast it; subscriptions confirm it. Variance between the two is a monitored data-quality metric.
Self-serve identity joined to the CRM account. Carries activation state and usage so PLG and enterprise share one funnel.
Lead and contact unified. Lifecycle stage lives here; buying-committee role is a relationship to the opportunity, not a field on the person.
Normalized touch log across email, calls, meetings, and product events — the input to coverage, hygiene scoring, and attribution.
| Stage | Entry criterion (objective) | Owner |
|---|---|---|
| 01 Signal | Inbound form, signup, or target-account intent recorded | Marketing |
| 02 Qualified | Fit + activation threshold met (PQL) or discovery booked | Marketing / SDR |
| 03 Validated | Problem, metric, and economic buyer confirmed in writing | AE |
| 04 Proven | Technical validation or pilot success criteria met | AE + SE |
| 05 Committed | Mutual action plan with dated signature step; pricing approved | AE |
| 06 Closed | Signed order form; subscription record created | Deal desk |
Every gate is evidence-based, not opinion-based. A stage cannot advance without its field populated — which is what makes the forecast model defensible.
Each metric has a named owner, a defined formula, and a single source table. Disputes are resolved by the dictionary, not by the loudest dashboard.
Validation fires on stage change, not on save — capture stays fast, data stays complete where it matters.
Nightly job scores every open opportunity on close-date realism, activity recency, and missing evidence; scores are written back to the CRM and surfaced in pipeline reviews.
Field and picklist changes go through a weekly review with a deprecation path. No silent schema drift ahead of quarter close.
| Metric | Definition | Source of truth | Common miscalculation |
|---|---|---|---|
| ARR | Annualized value of active subscriptions at period end | Billing → arr_daily |
Counting signed-but-unbilled opps, or including one-time services |
| NRR | ARR from prior-period cohort today ÷ ARR at cohort start | Billing cohort table | Including new logos in the numerator, inflating the result |
| Pipeline coverage | Open pipeline closing in period ÷ remaining quota | pipeline_snapshot |
Using total open pipeline regardless of close date |
| CAC payback | Blended S&M spend ÷ new ARR gross margin, in months | Finance + billing | Excluding partially-loaded headcount or expansion spend |
| Win rate | Closed-won ÷ (closed-won + closed-lost), by cohort of creation | CRM opportunity | Measuring by close date, which flatters slow-moving losses |
| Activation rate | Self-serve accounts reaching the value event within 14 days | Product analytics | Counting signups instead of distinct product accounts |