← All work

Nebius (acq. Tavily) · Oct 2025 – May 2026 · Abu Dhabi

Giving leadership a twelve-month view they trust

One platform stitching billing, CRM, deals and product usage into a single customer view in Snowflake - serving a daily customer-signals stream for the CS team, and an online forecast of every segment's usage and revenue out to twelve months.

Role

Lead DS, end to end

Volume

1M+ records/day

Outcome

12-mo, auto-refresh

The stakes

Usage-based businesses are forecast-hostile. Revenue is not a contract you can read off a schedule. It is the sum of what a lot of customers happened to do last month, and a handful of them dominate the total. Capacity decisions on the infrastructure side have long lead times, so being wrong is expensive in both directions.

There was a second, less glamorous problem underneath: nobody could reconstruct what the numbers had looked like a month ago. Records were overwritten in place, so a restated figure was indistinguishable from a mistake, and every forecast review turned into an argument about the data instead of the future.

And there were two very different audiences. The customer-success team needs to know which customer to call today; leadership needs to know what revenue and capacity look like next year. Same underlying data, completely different cadence - which is why the platform mattered more than any single model on top of it.

The system, in three stages

1 · Ingest & stitch

third-party platforms, CRM, deals, customers and product usage into Snowflake - one view per customer: plan, 1/7/30-day usage, channel, endpoints, segment moves

2 · Signal stream

churn risk, silent signups, upsell candidates, credit-exhaustion timing, usage spikes and drops - daily, weekly and monthly alerts and reports for CS

3 · Forecast & revenue view

segment-level online forecast, refreshed daily: month-end usage out to twelve months, plus live daily revenue, MRR/ARR, per-segment growth, organic vs marketing-led

Everything sits on CDC-ingested, SCD2-versioned tables - 1M+ records a day with reconstructable history - so an alert can tell a real move from a late-arriving correction.

Three decisions, and what I turned down

01

Fix history before fixing the forecast

SCD2 versioning came first. It meant every model could be backtested against what was actually known at the time rather than against a restated present. It also ended the “is this number wrong, or did it change?” conversation permanently.

Rejected: forecasting on the existing overwrite-in-place tables to show value faster. Every backtest would have been quietly optimistic, and I would have had no way to prove otherwise.

02

Build one customer view, then serve every consumer from it

All sources - third-party platforms, CRM, deals, enterprise accounts, product usage - were stitched into a single per-customer view: what plan they are on, their 1/7/30-day usage, which endpoints they hit, what channel they came from, whether their last-month snapshot says they are changing segment. The CS signal stream and the forecast are both just readers of that one view.

Rejected: a pipeline per use case. Faster to first demo, and then every team's numbers disagree in the Monday meeting, forever.

03

Make the forecast a living number, not a quarterly document

The forecast runs as an online model, updated daily: month-end usage for every segment, extended out twelve months, alongside the live revenue view - daily revenue, month to date, MRR, ARR, which segment is growing, organic versus marketing-led. On top sit 2x/3x growth scenarios, because the real question in the room was never “what will revenue be” - it was “what breaks if we grow three times faster than plan, and when do we need to have bought it.”

Rejected: a forecast rebuilt by hand each quarter. It is stale by week two, and a stale forecast teaches leadership to ignore forecasts.

What came of it

1M+ / day

records ingested with full versioned history, powering leadership dashboards, forecasting and automated alerting.

2x / 3x

scenario simulations used for capacity and revenue planning, refreshed automatically rather than rebuilt by hand each cycle.

The signal stream is the part that changed daily work: churn-risk flags, signups that went silent, lower-tier accounts ready for an upsell conversation, enterprise accounts with a predicted date for exhausting their credits, and sudden usage spikes or drops - delivered to the CS team as alerts and reports before the customer's invoice, or their absence, said it first.

← All work Next: Customer insight engine →