Creator royalty engine and ERP invoice automation
A European podcast and audiobook streaming platform pays revenue shares to hundreds of creators and publishers every month. The numbers came from three systems that never agreed.
- Monthly payout cycle
- 18 days → 7 days
- Contract logic
- Tested, versioned, reviewable
- Anomalies
- Caught before payout
- Warehouse cost
- Down ~70%
- Annual saving
- ~€1.2M
The situation
Each contract carried its own logic: different revenue splits, different minimum guarantees, different rules for how streams and subscriptions convert into money owed.
The process ran on manual exports, spreadsheets and institutional memory. Every month, finance spent up to 18 days assembling numbers from systems that didn't naturally agree — streaming data from the product platform, revenue data from billing, contract terms from documents. Errors were hard to catch, disputes were hard to resolve, and the people who understood the process were a single point of failure.
The problem underneath
This wasn't a spreadsheet problem. It was a reconciliation problem: three systems, each with its own version of the truth, and a set of contractual rules that existed only on paper.
Any automation that didn't first make the numbers agree would just produce wrong answers faster.
What we built
Working on the client's BigQuery, dbt and Airflow stack:
- Encoded the contracts as codeEvery revenue-share rule, minimum guarantee and edge case from the agreements became tested, versioned transformation logic — reviewable by finance, not buried in anyone's head.
- Built the reconciliation layer firstBefore a single payout was computed, we modelled how streaming, billing and contract data map onto each other, and made disagreements visible instead of silent — with automated outlier tests that flag anomalies for finance to investigate before money moves.
- Automated the pipeline end to endFrom raw platform data to payout-ready figures, orchestrated on a monthly schedule, with data-quality tests at every stage and alerts when something needs a human.
The results
Payout cycle time fell from 18 days to 7, with a clear path to same-week payouts, and roughly €1.2M in annual savings from correctly applied contract logic and eliminated manual effort. Re-architecting the models also cut warehouse costs by roughly 70%.
Anomalies now surface beforepayouts go out. Finance investigates exceptions instead of rebuilding everything from scratch each month. And the process survives personnel changes: the rules live in tested code, not in one person's memory.
Why it matters beyond this client
Every business that shares revenue — with creators, publishers, artists, partners or affiliates — runs some version of this problem. The systems never agree out of the box. The contracts are always more complicated than the first spreadsheet assumed.
The fix is the same discipline every time: reconcile first, encode the rules, automate with tests, and keep humans in the loop for exceptions.