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.

RoleDesigned, built, deployed and ran them
When2025 to 2026
HostingGitHub, Render, GitHub Actions, Google Apps Script, Cloudflare Pages
BuildWhat it does and why it existsStatus
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.