Work / 06
Python · Claude · n8n · GitHub Actions · Apps Script
The automations underneath
Everything here exists because something repeated, broke, or could not be bought on a marketing budget. I write much of the code with AI; the judgment about what to build, what to measure and whether the output is right stays with me. Three of these are open source.
| Build | What it does and why it exists | Status |
|---|---|---|
| AI Lead Scoring Engine Python, Flask, SQLite, local LLM |
Scores B2B leads on fit, engagement and intent, with a web dashboard, kanban, bulk import and webhooks. Built when the CRM was full and leads still needed a priority order for email nurture. Self-hosted, no API costs. | GitHub Live demo Free tier, about 50 seconds to wake. Login is pre-filled. |
| AI Data Governance Engine Python, FastAPI |
Deduplicates, normalises and enriches CRM contact data, with rules you can read. The free alternative to the paid hygiene tools that sit between a form and a CRM. | GitHub Live demo |
| LinkedIn Report Automation Python, LinkedIn Ads API, python-pptx |
Pulls campaign, creative and demographic data from the LinkedIn Ads API and turns it into a dashboard and a PowerPoint deck with 90+ metrics and AI-written insights. One click instead of a day of copying. | GitHub |
| Marketing data warehouse Python, SQL, GA4 and Search Console and Google Ads APIs |
All three Google sources in one model with joined views and dashboards. First finding: about two thirds of search spend was on queries already ranking top three organically, mostly the brand name. That spend was cut. | Private, in use |
| Weekly report generator Python, Claude, Google Ads and LinkedIn APIs |
Pulls the week's spend, clicks and enquiries, applies the house definitions, and writes the six-slide weekly report. Leads are counted by what the person wrote and their designation, never by activity. A week with none is said in words. | Private, runs weekly |
| Monitors and briefs GitHub Actions, Google Apps Script, Telegram, Android |
A negative-mention monitor every hour, form-to-sheet sync every 15 minutes, a daily marketing brief, failures that retry themselves. Delivered to a small Android app with per-alert notification control and a relay that lets the phone run prompts on the laptop. | Private; paused when not needed |
| Customised Twenty CRM Open-source CRM, n8n, GA4, Search Console, LinkedIn Ads, Google Ads |
One buyer-journey view per account: which ads they saw, which pages they read, which emails they opened, who replied. Built so retargeting and email can be aimed at named people instead of segments. | In progress |
| This site HTML, CSS, JavaScript, Cloudflare Pages Function, Claude |
Hand-written pages, no framework, no tracking. The assistant is a Pages Function that streams answers from a language model, with a profile file as its only source, a fallback chain of models and rate limits. The signal scorer on the ABM page is plain JavaScript. | Live, you are on it |
What ties them together
- Free tiers only. GitHub Actions minutes, Apps Script, Render, Cloudflare. Each build has a cost ceiling of zero and a written note on where that ceiling is.
- Secrets never in code. Everything reads from environment variables or a secrets store; the public repos were audited for leaked credentials and came back clean.
- Every number has a definition. The same house rules that go on a board slide are written into the scripts, so the automated report and the manual one cannot disagree.