Read the code before
you email me.

Four of the tools I run on client accounts, public and MIT licensed.

Built With
Python• Google Ads API• GA4• Cloudflare Workers• MIT License
The Repositories
Four Tools, Each Built For One Real Failure.

None of these started as a side project. Each one exists because an account was quietly losing money in a way the interface never showed.

gads-scan

One command prints where a Google Ads account leaks money. Conversion integrity comes first on purpose: a lead action counting every click inflates the CPA and every number built on top of it inherits the error. Read-only against the API, no AI anywhere inside, markdown out.

PythonRead-onlyMIT
View on GitHub
gads-offline-conversions

Sends real closed revenue back into Google Ads from a CSV: calls, clicks, or enhanced conversions. Its actual job is refusing the upload that Google accepts and then records as nothing, the silent failure that leaves an account showing zero offline conversions for a year. Dry run by default.

PythonDry-run firstMIT
View on GitHub
gads-budget-pacing

Month-to-date pacing for every account under a manager account, delivered as one HTML email that survives both Gmail and Outlook. Google enforces a daily budget; the client contract is monthly. The guard only ever lowers budgets to hold the envelope, never raises them. 41 offline tests, and a demo mode that renders the report without credentials.

PythonMCC-wide41 testsMIT
View on GitHub
gads-call-tracking

Self-hosted call tracking on a Cloudflare Worker: a pool number is lent to each visitor, the carrier webhook records who called and for how long, and the qualified calls upload back as offline conversions. Not a free CallRail. The part nobody publishes is the glue between a phone call and the bidding signal. 44 tests, verified end to end on the real runtime.

Cloudflare WorkerAds API44 testsMIT
View on GitHub
Why Give It Away
What Copies In Ten Minutes Isn't What You're Paying For.
A repository is a better credential than a deck

Anyone can claim they understand conversion integrity. Fewer people will hand you the file that decides what counts and let you argue with it.

The tool is not the work

The scan prints the finding. Deciding which finding matters this month, on this budget, in this market, is the part you hire for.

Nothing runs on my server

Everything installs on your infrastructure with your credentials. When we stop working together, the code stays and keeps running.

Read-only and dry-run by default

Nothing here writes to an account until you pass an explicit flag. You can point any of them at a live account today without risk.

Four of the tools I run on client Google Ads accounts are public. They work on any account, they are MIT licensed, and none of them phone home. Clone one, point it at an account you own, and judge the work without talking to me first. That is the whole point of publishing them.

Or Skip The Cloning.

Send read-only access to one account and I run the same checks myself.
In writing, within 48 hours, and if it is clean I say that too.

Get your full audit
White-label for agencies. Your clients never see me.