Goal
- BizOps (Vincent, Sriram) is doing 2026 revenue planning: setting an MRR target ($330K) and working backwards to determine how many leads they need at each stage to hit it.
- Conversion Rate By Sales Motion: for won deals, what % went through sales-assisted (call first => trial) vs self-serve (trial first => call).
- Sriram and Vincent intuitively feel call-first has a higher win rate but don’t have data to prove it.
- https://media.secondbrain.lelouvincx.com/2026/03/233fc4decf6a75e71f71ef06780ce53e.png
- Why it matters: assess which entry point produces better outcomes => to invest more on.
- Decision-making questions:
- Given we need ~59 raw leads/month to hit 330K MRR, how should we allocate between call-first or trial-first deals?
- Should we consider removing self-serve trials if call-first converts significantly better?
Sales Motion Classification
- Leads are classified based on timestamp ordering of first demo call vs first trial submission:
- call-first:
first_call_at < submitted_at - trial-first:
submitted_at <= first_call_at - trial-only: trial submitted, but
first_call_atis NULL - call-only: call booked, but
trial_submission_skeyis NULL
- call-first:
- For same-day events, uses exact UTC timestamps to determine sequence.
- Leads are classified based on timestamp ordering of first demo call vs first trial submission:
Data Model
Main working dataset: DTS106
Primary table:
fct_sales_leads(enriched withsales_motiondimension)Key tables:
fct_sales_leads— primary lead datafct_demo_call_bookings— Calendly call datadim_customers— identify won customers (status = 'active' AND subscription_tier = 'paid')
Infrastructure: BigQuery project
skilled-fulcrum-90207, datasetmart_holisticsPOC branch:
chinh/lead-funnel-by-sales-motionShared AQL explore earlier:
explore { dimensions { rows { rollup((// label="Month Created Date" dm_fsl_cd_5d20bc: fct_sales_leads.created_date | month())) } columns { rollup((// label="Custom Deal Stage" fsl_ds_2a3cff: fct_sales_leads.deal_stage)) } } measures { // label="Count Leads" count_leads: count_leads } options { isolate_error_in_metric } sorts { dm_fsl_cd_5d20bc desc nulls last, fsl_ds_2a3cff asc nulls last } }
Revenue Planning Baseline
- Data sources used by BizOps:
- Method: simple monthly averages (Jan 2025 – Jan 2026), each stage as % of raw leads.
- Estimation: 59 raw → 29 qualified → 10 trial → 5 won per month for $330K MRR target.
Data Quality Audit
- Because the number of deals/leads is small, even a few mis-categorized leads magnify the conversion rate. Hence conversion rate may not be a good metric to break down here.
- Suggest: average deal value (or something else).
- But their intuition is correct based on recent won deals: sales-first performs better.
- Assessment from growth team:
- Fanserv is trial-first, not call-first (same-day, call slightly earlier in UTC).
- Basata is Nam’s customer, not Janice (rep assignment data bug).
- Novigi is trial-first, not call-first (same-day).
- These customers are not trial-only: iceye.us, myedspace.co.uk, teveo.com, superbexperience.com, mckinnisinc.com, gridcoresolutions.com, getspruce.com, worldvision.org.nz, perfectrx.com, returnless.com, mrdiy.com
- Root causes:
event_uuidwas NULL in Calendly sources since Dec 2024 → join failures → wrong rep assignment.- Domain mismatches (e.g.,
iceye.comvsiceye.us). - Missing call sources: some leads had calls via non-Calendly channels.
Override Mechanism
- Vincent proposed a HubSpot “DataOps Override” property (
Deal Classification: call-first / trial-first / trial-only) as manual fallback. - Quinn created it in HubSpot.
- My position: treat override as last resort — fix data bugs first, re-audit, then use override for remaining edge cases.
- Vincent agreed but noted value for unknown unknowns, ROI, speed, and exception handling.
- Agreed balance: systematic fix + override for exceptions (threshold ~10%).
- Vincent proposed a HubSpot “DataOps Override” property (
Sub-issues
DONE DAT-561: Enrich with additional call sources beyond Calendly demo calls
DONE DAT-562: Add
sales_motiondimension tofct_sales_leadsDONE DAT-563: Fix rep assignment bug in
fct_sales_leadsDONE DAT-564: Re-audit sales motion classification with BizOps
TODO Wrap up the project
Progress
DONE Initialize a document
DONE Share a small POC and data for Vincent and Sriram to decide first, before start doing. The main problem is data does not capture other leads out of demo calls, which not only 1-1 calls but also calls outside of Calendly (in person call). MrDIY is an example of mis-categorized into trial-only.
DONE Understand the data flow and logic https://holistics.slack.com/archives/C79QB3FEV/p1773811610748979?thread_ts=1769485903.515759&cid=C79QB3FEV
((69a2a1cc-fc1f-4802-ba56-48183fa9e9a5))
Question: Now I know the revenue planning logic is produced from our data on 2 primary datasets: DTS100 and DTS106. Is it adequate to reproduce these entirely sheets inside holistics? => Yes. But we will temporarily ignore this for now and focus on adding sales motion dimension.
- First, get started with ingesting all Calendly data into warehouse.
- Let bizops team updated weekly.
Calendly data is already ingested and transformed. The sales motion dimension is also added in dbt and Holistics BI.
My Questions
- What is the relation between doing new year revenue forecasting and drilling down trial-first/call-first?
- How do they define a (won) deal is trial-first or call-first?
References
- 1-Slack 2-Ampcode 3-Ampcode 4-Gemini 5-Notion 6-Ampcode DE 117 context 7-Ampcode DBML 8-Ampcode POC SQL Queries 9-Ampcode Preview Slack message 10-Ampcode (investigate sheets) 11-Opencode 12-Linear 13-Ampcode (full picture synthesis) 14-Ampcode (Holistics PR) 15-Ampcode
- Re-audit sales motion classification with BizOps: Ampcode
/ Lead Funnel by Sales Motion
Created Mon, 25 May 2026 00:00:00 +0000
Modified Mon, 25 May 2026 06:02:25 +0000