Skip to content
Tooling

The stack, including the parts we removed.

Two lists. What builds this site, which you can check against the pages you are reading — and the platforms we work in for clients, which is the list that matters if you are wondering whether we know your systems.

Three colleagues at a table annotating a large printed workflow diagram covered in sticky notes, beside a laptop showing campaign dashboards

Stack

This website

Checkable against the page you are on.

An agency describing its own technical decisions should be describing something a reader could verify. All 232 articles, 30 service pages and the location network below are served as static files from the same build.

01
Framework and rendering
Next.js with the App Router, React and TypeScript. Every route is prerendered at build time — there is no server rendering a page per request, because nothing on the page changes per request.
02
Content
Typed TypeScript modules, not a CMS. The editorial corpus, services, locations and case studies are source files, which means a broken reference is a build failure rather than a 404 somebody finds later. The trade is real: publishing needs a deploy.
03
No database
The site was a Payload CMS application until September 2026. Removing it took the dependency tree from 46 packages to 20 runtime and 11 dev, and took the build from needing credentials to needing none.
04
Images
Sharp generates every responsive width at build time and writes them as static files, so the on-demand image route is never hit in production. WebP at quality 68, which measured identically to quality 74 on a photograph while costing 6KB less per variant.
05
Styling and components
Tailwind CSS with Radix primitives underneath the interactive components — tabs, accordion, dialog — so keyboard behaviour and focus management come from a maintained implementation rather than one written here.
06
Forms and lead delivery
Zod validates in the browser, then the form posts straight to HubSpot’s Forms API. No server sits in the middle, which is what lets every page ship as a static file. The cost is that HubSpot is the only channel: there is no database and no email fallback, so when it is not configured the form says so and offers the email address instead of pretending it succeeded.
07
Analytics
GA4, loaded after the window load event so a third-party bundle never competes with the page’s own largest paint. A Content-Security-Policy header restricts scripts, connections and images to this origin plus the endpoints actually in use.

Client work

Platforms we work in.

Listed because integration constraints are usually what decides whether a plan is feasible. We start with whatever you already run and recommend the smallest reliable integration, rather than a migration nobody asked for.

CRM and revenue platforms

  • HubSpot
  • Salesforce
  • GoHighLevel (GHL)
  • Zoho
  • ServiceTitan
  • Housecall Pro
  • Jobber

Advertising

  • Google Ads
  • Meta Ads Manager
  • LinkedIn Ads
  • TikTok Ads
  • YouTube
  • Conversions API

Measurement and reporting

  • GA4
  • Google Tag Manager
  • Looker Studio
  • Power BI
  • CallRail
  • Google Search Console
  • Bing Webmaster Tools

Search and content research

  • SEMrush
  • Ahrefs
  • Screaming Frog
  • PageSpeed Insights
  • Google Business Profile
  • Schema.org

Automation and AI

  • Zapier
  • Make
  • n8n
  • OpenAI
  • Claude
  • Google Gemini

Voice and conversation

  • Twilio
  • Vapi
  • Retell AI

Freight operations

  • DAT One
  • Truckstop.com
  • 123Loadboard
  • Motive
  • Samsara
  • QuickBooks
  • FMCSA portal

A platform appearing here means we have worked with its constraints, not that every engagement touches it. If yours is missing, the first question is what it exposes through an API — that usually settles feasibility faster than whether we have seen the logo before.

Stack questions

Wondering whether your setup is workable?

Send the list of what you run and what is not talking to what. That is usually a shorter conversation than it looks.

Describe your stack