Lab

I build the tools I work with.

The projects here share one idea: automate agency routine so there is time for the one thing the client actually sees – the deliverable.

Not a showcase portfolio. These systems run daily in real agency operations, from first concept through architecture to production. The Lab documents tools and workflows; open panel research, methods and data boundaries live separately under Research.

01 In-house systems

01 · In-house TypeScript · MCP · Cloudflare Workers · OAuth $230 plan costs saved per month

MCP connector for Productive.io

Productive holds everything – budgets, tickets, follow-ups, hours – just spread across reports and views.

The connector makes this data queryable via MCP directly in Claude: one plain-language question instead of a click path through reports. No plan upgrade, on our own infrastructure, read-only.

From internal tool to product

02 · In-house Productive API · Snapshots 59 clients 10 team members · one board

Workload board for the monthly close

Did we deliver the agreed hours for this client?

Before, that meant pulling data from Productive by hand and checking it against the client budget spreadsheet. Now every client card carries one big number – live from Productive, frozen as a snapshot after the monthly close.

Deterministic snapshots

02 Open tools

03 · Open source · CC BY 4.0 SKILL.md · Claude · ChatGPT Claude / ChatGPT Agent Skill · CC BY 4.0

GEO content engineering: the method as an agent skill

The discipline I work in, packaged as an executable format: the skill turns a general AI agent into a specialist for GEO content.

It walks the agent through the retrieval mechanic of answer engines – chunk, embed, retrieve, ground, cite – and applies it as a repeatable workflow. Two modes: create new content, or rebuild existing pages, baseline first.

The method to take away

04 · Open source · CC BY 4.0 n8n · OpenRouter · Google Sheets $35 instead of €85 per month · weekly cadence

GEO Share of Voice monitor as an n8n workflow

Share of Voice, mention rate and citation rate in AI answers, measured without a SaaS subscription: 50 prompts through one OpenRouter account to ChatGPT, Gemini, Perplexity and Claude.

Every question three times per model, so the stochastic answer becomes signal instead of noise. Detection on regex rather than an LLM judge, so every number stays reproducible. Raw data in Google Sheets, a weekly email report, an alert when the citation rate hits zero – plus an honest reckoning of when the self-build costs more than Peec.ai.

Reproducible, not a black box

05 · Open source · CC BY 4.0 n8n · OpenRouter · Google Sheets $0.0035 per page run · injection-hardened

FAQ Factory: drafts from foreign page text, without trusting it

A language model writes FAQ blocks for service and product pages in a minute – it gets delicate the moment that same model reads foreign page text while holding the company data.

The workflow separates the two along Simon Willison's dual LLM pattern: the model in control works strictly on enums, counters and IDs and never sees page text; the model that reads page text receives zero company data. Three code gates check without a model, every answer has to cite fact IDs – and nothing publishes itself.

Quarantine instead of trust

Which routine eats the most hours in your agency? Write to me – time sinks like these can be eliminated.