AI, automation and workflows

If it repeats, a script runs it.

Marketing work that used to take a day now runs on a schedule: reports that write themselves, leads that score themselves, monitors that watch mentions and forms, a CRM joined to every data source. Built with Python, Claude, n8n and GitHub Actions on free tiers. The judgment about what to build and whether the output is right stays with a person.

Since2025
Runs onGitHub Actions, Google Apps Script, Render, Cloudflare Pages, n8n
StackPython, FastAPI, SQL, Claude, Gemini, n8n, Zapier, Make, Twenty CRM
PublicThree open-source repos, two live demos

Highlights

3open-source repos on GitHub
2live demos you can click through
90+metrics in the automated LinkedIn Ads deck
Hourlynegative-mention monitor
15 minform-to-sheet sync, failures retry themselves
6 slidesweekly report that writes itself

Each build has a cost ceiling of zero and a written note on where that ceiling is.

What this covers

01Reporting automationWeekly and monthly reports pulled from the ad and analytics APIs, with the house definitions coded in. A model drafts the slides, a person checks every number before it goes out.
02Scoring and routingFit, engagement and intent scores on every lead. n8n moves each new signal to score, tier, ad audience and Slack, so the rep starts the same day.
03Data pipelinesGA4, Search Console, Google Ads and LinkedIn Ads in one SQL model. CRM contacts deduplicated, normalised and enriched with rules you can read.
04Monitors and briefsBrand mentions checked hourly, forms synced every 15 minutes, a daily marketing brief, all delivered to a small phone app with per-alert control.
05AI inside the workflowClaude and Gemini for drafting, classifying, image edits and research. Local models where data cannot leave the machine. A profile file as the only source of facts, so the model cannot invent.
06Assistants and agentsThis site's assistant: three modes, streaming answers, a chain of model providers with fallback, rate limits and an origin check. Agent-driven browser work for the tasks no API covers.

How a build is decided

1It repeatedA task done by hand three times, or a number argued about twice, is the trigger. Nothing is built for its own sake.
2Define the numberWhat the output means, in one line, before any code. The same definition that goes on the board slide.
3Smallest versionA script on a free tier, run by hand first. Scheduled only once the output has been right three weeks running.
4Secrets out, alerts inKeys live in a secrets store, never in code. Failures retry, then notify. Public repos audited for leaked credentials.
5Hand it overA README and a handover note, so the next person can run it without the builder.

Work

BuildWhat it does and why it existsWhere
AI Lead Scoring Engine
Python, Flask, SQLite, local LLM
Scores B2B leads on fit, engagement and intent with a dashboard, kanban, bulk import and webhooks. Built when the CRM was full and leads still needed a priority order for nurture. No API costs.GitHub · Live demo
AI Data Governance Engine
Python, FastAPI
Deduplicates, normalises and enriches CRM contact data. 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
Campaign, creative and demographic data from the LinkedIn Ads API turned 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, Google APIs
GA4, Search Console and Google Ads in one model with joined views. First finding: about two thirds of search spend was on queries already ranking top three organically.Private, in use
Weekly report generator
Python, Claude, ad platform APIs
Pulls the week's spend, clicks and enquiries, applies the house definitions, writes the six-slide report. Leads counted by what the person wrote and their designation.Private, runs weekly
Monitors, briefs and a phone app
GitHub Actions, Apps Script, Android
Negative-mention monitor every hour, form sync every 15 minutes, a daily brief, and an app that receives them with per-alert notification control.Private, paused when not needed
Customised Twenty CRM
Open-source CRM, n8n
One buyer-journey view per account: ads seen, pages read, emails opened, who replied. So retargeting and email can be aimed at named people.In progress
Social listening dashboard
Python, Google Sheets
A month of brand-mention tickets classified into themes and sentiment, with charts and insights, built as a management view in a day.Private
This site and its assistant
HTML, CSS, JavaScript, Cloudflare Pages Function
Hand-written pages, no framework, no tracking. The assistant streams from a language model with a profile file as its only source, a provider fallback chain and rate limits.You are on it

Rules

  • Free tiers only. GitHub Actions minutes, Apps Script, Render, Cloudflare. The ceiling is written down.
  • Secrets never in code. Environment variables or a secrets store, and the public repos were audited.
  • Every number has a definition written into the script, so the automated report and the manual one cannot disagree.
  • A person reads the output before it leaves. AI drafts; it does not sign.
Tools, hands-on
CodePython, FastAPI, SQL, JavaScript, Google Apps Script
ModelsClaude, ChatGPT, Gemini, Perplexity, local open models
Workflown8n, Zapier, Make, GitHub Actions
HostingCloudflare Pages, Render, GitHub
DataGA4, Search Console, Google Ads and LinkedIn Ads APIs, HubSpot, Twenty CRM
Ask the assistant