Made with Fable 5.1Operators who need a revenue number they can trust
RevOps
One dashboard that unifies customers, subscriptions, renewals, and revenue across Stripe, AWS Marketplace, GCP Marketplace, and direct invoices, anchored to the general ledger. A Stadil product, white-labeled by Scalr.
Deployed at Scalr on real revenue data, so there is no public instance. The preview above uses illustrative figures. Photo: Mika Baumeister on Unsplash.
RevOps with illustrative figures and fictional customers. The real instance runs on the deploying company's books.
Four billing rails each have their own dashboard and none of them shows the company. RevOps merges them into one entity per customer, keeps committed and on-demand revenue as two streams that are never silently combined, and renders any difference from the books as an explicit reconciliation gap rather than a plug.
Data as code, no database
A Python pipeline pulls each source and builds a single committed JSON file. The web app is a pure function of that file, so every number is diffable in git history and any clone rebuilds from the checked-in inputs.
Identity anchored to the ledger
A customer who leaves Stripe and continues on AWS stays one customer with continuous history, merged by curated references, never by name heuristics. Closed months anchor to the QBO profit and loss.
Recognition is layered
Committed revenue is recognized straight-line over the service window; on-demand usage is recognized in the month billed and never deferred. Deferred revenue waterfalls produce the schedules finance books the close from.
Corrections happen upstream
A wrong figure is fixed in the pipeline or a curated map and rebuilt. Each build writes review files that surface unlabeled customers and unresolved invoice windows for a human to curate.
Photo: Denny Müller on Unsplash
Specifications
- Stack
- Python 3.12 pipeline, Next.js 16, React 19, Tailwind, TypeScript
- Sources
- Stripe, AWS Marketplace, GCP Marketplace, QuickBooks Online, Mixpanel, Ramp
- Views
- Revenue, customers, accounts, receivables, retention, growth, forecast, cash, spend, KPIs, financials
- Storage
- One committed data file per build; no server, no runtime API calls
- Close cycle
- Monthly; closed months anchor to the GL, open month from billing sources
- Refresh
- Operator-run pipeline inside a Claude session, then a commit
Principles
- 1The books win. Differences are reported, never resolved by adjusting the dashboard.
- 2Two streams stay two streams.
- 3Identity is curated, never inferred.
- 4Internal does not mean careless. Small audience, full polish.