Built in-house · maintained by me

Systems behind the work.

Tools for the team, connections between platforms, and the infrastructure underneath. Two working systems in detail, followed by the other things on my desk.

Live platform data inside the team's AI tools

In daily use · Internal agency tooling

A team question goes through Claude and MCP connectors to advertising platforms; the returned analysis is reviewed by a person.
A simplified read path. The connectors also support other tasks; this diagram shows how data reaches an analysis.

The work it supports

Account analysis starts with numbers held in different platforms. I built connectors so the paid media team can ask about an account through Claude and retrieve the underlying data without assembling each export manually.

The work is in-house and used by the team I lead. It is the basis of my AI integration work, not a claim about a portfolio of outside consulting projects.

What I built

The MCP servers connect to Google Ads, GA4, Google Merchant Center, Meta Ads, Microsoft Ads, LinkedIn Ads and Google Tag Manager. The Google Ads tools cover tasks including keyword research, search terms, Shopping performance and budget analysis.

There are also connectors for Xero, HubSpot, Mailchimp, Toggl and Microsoft 365. That extends the same approach to accounting, CRM, email and documents.

What still needs a person

Fetching the platform's numbers does not make every explanation of them correct. The account, date range and metric definitions still need checking. A model can summarise a change without having evidence for its cause.

Context matters too. The shared account folder records decisions and stable facts so the next session starts with something useful. A colleague remains responsible for reviewing the work.

Related work: AI integrations for a business's existing tools. For a first project, use the process readiness worksheet.

A server between the event and its destinations

Production infrastructure · GTM, nginx and Cloudflare

A browser event and its consent state travel through Cloudflare and nginx to a GTM server container, then to Google or Meta destinations.
The request path used by the server containers I maintain. Destinations depend on the property's configuration.

The collection problem

Browser restrictions and disconnected tags make measurement harder to inspect. I built and maintain first-party tracking infrastructure for the agency's work, including an integration with Meta's Conversions API.

The useful change is having a controlled point between the incoming event and the platforms that receive it. The setup still depends on the source event being collected correctly.

The implementation

The GTM server containers run behind nginx and Cloudflare on infrastructure I maintain. Requests reach a first-party endpoint and enter the server container, where configured tags send data to the relevant destinations.

The Meta integration handles the server-to-server leg. Where a browser pixel also sends the event, the two paths need matching identifiers so the destination can deduplicate them.

The limits

A server cannot recreate missing source events or remove consent obligations. Moving collection also creates an operational dependency: hosting and forwarding must keep working, and a change to the website can still change the meaning of an event.

The server-side guide covers the wider trade-offs. The practical check is to trace a test journey through every stage and verify receipt, as set out in the GTM audit workflow.

For implementation and repairs, see the tracking service.

Other tools and ongoing work

Keyword planner

A tool for the sales team to explore keywords, search volumes and CPC ranges during discovery. It produces one-page exports for prospects. The first version was Python; I rebuilt it as a single-binary application to simplify deployment.

Analytics dashboard In development

A cross-account view of paid media performance, covering PMax reporting, product feeds and comparisons across the client base. This remains development work and is separate from the live connectors described above.

Self-hosted infrastructure

I maintain the hosting alongside the tools. It gives me control over deployment and the connections between services, with the corresponding responsibility for keeping them available.

Start with the process or the tracking problem.

A short description of the systems involved is enough to begin.