PYTHON · RPA · SQL · Freelance
Freelance BI SuiteFreelance Automation & BI Solutions
A rolling engagement rather than a single project: multiple clients, the same underlying problem. Skilled people spending their week moving data between systems by hand. I take those processes end to end — consultation, architecture, build, deployment, handover — and the manual effort typically falls by around 80%.
- −80% manual effort, via custom Python & RPA automation
- End-to-end solutions architected & deployed for multiple clients
- BigQuery ETL, EDA & predictive insight for forecasting
01 — Context
The problem.
Small teams accumulate manual processes the way houses accumulate cables. A weekly reconciliation here, a copy-paste export there, a report someone rebuilds every Monday morning. Individually none of it justifies a project; collectively it consumes a full working day per person per week and it is where the errors live.
The blocker is rarely the technology. It is that nobody has the time to stop, map what actually happens, and decide what should be automated versus deleted outright.
02 — Method
The approach.
The build, in the order it happened.
-
Map before automating
Every engagement starts with a process walkthrough and a timed observation. Roughly a fifth of the steps I am asked to automate turn out to be unnecessary once someone writes them down — deleting those first is the cheapest win available.
-
Land the data once, properly
I consolidate terabytes of source data from disparate systems into governed BigQuery tables through incremental, idempotent ETL. Re-running a load never duplicates rows, and every table carries a load timestamp and its source lineage.
-
Automate the edges with Python and RPA
Where a system offers no API, Playwright and Selenium drive it the way a person would — but with schema assertions, retries with backoff and a dead-letter queue for rows that fail validation.
-
Hand over something they own
Git-versioned code, a README a non-specialist can follow, and a walkthrough session. If a client cannot change a threshold without me, the engagement has not finished.
03 — Outcome
What changed.
- Manual effort on the automated processes down by roughly 80% — 38 hours a week to 7.5 — verified against the timed observation taken before the build.
- Reporting that previously arrived on a Monday afternoon now lands at 07:00 daily, from a single reconciled source.
- Exploratory analysis and statistical modelling turned demand patterns clients had been guessing at into a weekly forecast they order from.
- Every deployment is version-controlled and re-runnable — no engagement has needed a rebuild.
04 — The numbers
Manual hours per week across the automated processes.
Tracked as hours/week, from Baseline through Wk 14 — low 7.5, high 38.
05 — Screens
What it looks like in use.
The spec sheet each engagement is signed off against — sources, cadence, validation rules and a named owner per table.
Reporting wireframe. Every tile is traced back to a warehouse table before anyone opens Power BI.
06 — Stack & role
Built with.
- Python (Pandas, Playwright, Selenium)
- SQL
- Google BigQuery
- Power BI
- n8n
- Git
- Role
- Freelance data & automation engineer — sole delivery
- Duration
- Ongoing since October 2024
- Client
- Freelance
- Period
- 2024 — Present
07 — Questions
The questions I get asked about this one.
If a process costs a person more than half a day a week and happens at least monthly, it is usually worth automating. Below that, I will normally say so rather than take the work.
The job fails on a schema assertion instead of writing partial data, and the client gets an alert with the failing selector. Selectors are kept in one config file so a fix is a one-line change.