Daily CRM exports for finance analytics

Client
International B2B media platform
Role
Design, build and migration, end to end
Timeline
2 weeks
Stack
Python, Google Cloud Run, Creatio API, Google Sheets

The problem

All of the company’s analytics, from marketing and sales reports to finance, ran on CRM data the CFO worked with in spreadsheets. Getting it there was manual. Every morning a colleague started an hour before her working day to export around 70,000 rows by hand, and the CFO spent another half hour correcting what came out. Mistakes crept in, and on bad days the numbers were late.

What I built

The first version was a set of seven Google Apps Script exports, built in a week. At this volume Apps Script started producing duplicates and empty rows, even with extra checks in place, so I rebuilt everything in Python and moved it to Google Cloud Run in another week.

Now a scheduled job pulls the previous day’s data from the CRM API every morning, and a separate job pulls the full month once a month. Each run removes duplicates, checks the output and writes it to the sheets the CFO already uses. If a run fails, an email alert goes out, so a gap never goes unnoticed. The same data can go to a database or any other format when the team needs it.

The result

About 1.5 hours of manual work a day is gone, around 30 hours a month and 370 a year, half of it the CFO’s. The data is ready before the working day starts, without copy errors, and the CFO spends that time on analysis instead of cleaning exports.