Skip to content

CalumKinghorn

  • Technical Director
  • Forward Deployed Lead
  • AI Practice Lead

Business in, working software out. I own the roadmap and the budget, and I still write the code.

Calum Kinghorn

Bournemouth, UKOpen to work

$0M

Internal efficiency delivered

0

Hours saved per year, projected

$0M

Annual RTB and CTB owned

0

Users rolled out to

0k

Records under management

0

Enterprise clients on platform

What I do.

Titles for this are still settling down, so here are the areas instead. Hover a card, or tap it, for what I have done in each.

  • Forward deployed engineering

    Head of Forward Deployed Engineering, FDE Lead, Solutions Engineering Lead

  • Technical direction

    Technical Director, Field CTO, Principal Consultant

  • AI capability

    AI Practice Lead, Head of Applied AI, AI Delivery Lead

  • AI product

    Head of AI Product, Principal Product Manager

  • Hands on engineering

    Principal Engineer, Founding Engineer

What I have built on my own time.

Side projects and experiments rather than products with customers. The engineering decisions in them are real, and they are the part worth talking about.

Retrieval over private data

Chunking, embedding and serving a user's own history back as context. The retrieval layer is written directly against Vectorize rather than pulled in from a framework, so I had to understand how it breaks rather than trusting that it would not.

  • Vectorize
  • Embeddings
  • RAG
  • Cloudflare Workers

Built in Looper

Routing before the expensive call

A small fast model decides what a capture is before anything larger sees it. That is a cost and latency decision as much as a quality one, It is also the reason the running cost does not climb straight up with usage.

  • Claude API
  • Haiku
  • Classification
  • Cost control

Built in Looper

Models running client side

Segment Anything running in the browser through transformers.js, so a greenkeeper traces a fairway with one tap and the image never leaves the device. No inference bill, no upload, no wait.

  • transformers.js
  • ONNX
  • Segment Anything
  • WebAssembly

Built in Course Map

Tenancy in the database, not the code

Postgres row level security, so a club could only ever reach its own course. I wanted the isolation to sit in the database rather than in a filter somewhere in application code that someone forgets to apply.

  • Supabase
  • Row level security
  • OAuth
  • JWT

Built in Course Map, Tee Time Traveler

Geospatial data pipelines

Satellite imagery and LiDAR in, usable course geometry out. Multispectral GeoTIFF processed into NDVI overlays by an edge function, elevation pulled per course rather than shipped with the app.

  • PostGIS
  • MapLibre GL
  • GeoTIFF
  • Google Earth Engine

Built in Course Map

Real time 3D in the browser

A terrain mesh built from elevation data with the aerial imagery draped over it, rendered with react-three-fiber. Getting this to look deliberate rather than accidental took longer than getting it to work.

  • three.js
  • react-three-fiber
  • WebGL
  • Postprocessing

Built in Course Map

Building it like it mattered

Typed end to end, migrations in version control, tests in CI. Nobody was making me do any of that on a personal project, which is the point. It is the habit I would bring to something that did have users.

  • TypeScript
  • Vitest
  • CI
  • Migrations

Built in Everything here

How I would run it.

I have led delivery inside a global consultancy and inside a company with two people in it. This is roughly how I would want to run a new team.

  1. Be where the users are, and answer

    In enterprise the quickest way to lose users is to go quiet. I answer on our product forum as close to instantly as I can manage, every day, and my team does the same. Reading the sentiment across it tells me more than a workshop does, because that is where people say what they think when nobody senior is on the call.

  2. Stand behind the decision when it gets noisy

    A few loud voices are not a mandate to reverse. I will make space for the discussion and explain the reasoning as many times as it takes. But changing direction because three people are annoyed teaches everybody that volume works.

  3. Know what you are bad at and trust the people who are not

    I am poor at notes. I know it, so I do not pretend otherwise and I do not try to be the person in the room capturing everything. I trust my business analysts implicitly. My job is to give them the context to be right, not to duplicate them.

  4. Find people who want to build, and give them somewhere to do it

    I look for people who want to innovate and genuinely enjoy the technical side, rather than people waiting to be told what the ticket says. Then I give them room to use it. I run a second board carrying deliberately innovative stories, with an incentive to pick them up, which costs almost nothing and stops proof-of-concept work losing every argument to a backlog of defects. With AI shortening the build we estimate around 40% better story completion, so a $1.5M run budget now buys more than firefighting.

  5. Have the difficult conversation without the heat

    I will have the awkward conversation, and I will have it calmly. Emotion in those meetings is usually a way of avoiding the specifics. I am also happy to open a terminal myself, which helps when we are working out whether something is genuinely hard or just unfamiliar.

The tools are not the point, but recruiters ask.

Build

  • TypeScriptTypeScript
  • ReactReact
  • Next.jsNext.js
  • ViteVite
  • Tailwind CSSTailwind CSS
  • PythonPython
  • React 19
  • Server Components
  • Zustand
  • Vitest

Data

  • PostgreSQLPostgreSQL
  • SupabaseSupabase
  • CloudflareCloudflare
  • FirebaseFirebase
  • MapLibreMapLibre
  • Row level security
  • Migrations
  • PostGIS
  • D1
  • Vectorize

AI

  • AnthropicAnthropic
  • Google GeminiGoogle Gemini
  • Hugging FaceHugging Face
  • LangChainLangChain
  • RAG pipelines
  • Agentic routing
  • Prompt engineering
  • Evals
  • MCP

Ship

  • GitHubGitHub
  • GitHub ActionsGitHub Actions
  • VercelVercel
  • DockerDocker
  • OAuth and JWT
  • CI checks
  • Trunk based
  • Azure DevOps

Where I learned the business half.

2022 to now

Principal, Product Manager

Mercer/Hybrid, UK

Global Benefits Management

Own the strategy, the backlog and the budget for a B2B benefits platform holding 100,000 records across 500 clients, and steer the engineering team that builds it.

  • Direct an outsourced development team in India. Not their line manager, but the person who decides what is built, in what order and to what standard.
  • Set up a separate innovation board for the strongest engineers, giving proof-of-concept work a protected space and an incentive. Estimated 40% improvement in story completion, stretching a $1.5M run budget well past defect fixing.
  • Led a full business process rebuild worth about $3M in internal efficiency and a 35% lift in data completeness.
  • Launched an AI service line converting unstructured client data into upload-ready format, at up to 150% margin with zero upfront investment.
  • Rebuilt on-system support with AI-generated code, Power Apps and Power BI surfaced through Pendo, retiring two legacy systems and about $1M of run cost.
  • Made an inherited database admin-configurable, standardising data capture and saving $200K a year.

$3M

efficiency delivered

2019 to 2022

Senior Associate, Account Manager

Mercer/London

Global Benefits Management

Strategic account lead for 12 multinational clients, and the person a global network of brokers answered to when something went wrong.

  • Ran the global benefits renewal cycle across a portfolio of up to 2,000 individual plans at any one time.
  • Directed in-country broker teams across a global network to hold coverage and continuity to a single global strategy.

2,000

plans in flight

2015 to 2019

Client Service Manager

Aon/Krakow, Poland

EMEA Flexible Benefits

Moved an entire client service function from the UK to Poland without dropping a single SLA. Around 160 EMEA clients, none of whom noticed.

  • Deployed flexible benefit platforms end to end, from scoping through implementation to ongoing support.
  • Held SLA performance across the full portfolio through the transition and beyond.

160

clients served

2011 to 2015

Team Manager, Operations

Aon/Sheffield and Farnborough

Pensions Administration

Administrator to Team Manager in three years, with a team reporting to me. Everything I know about how a business runs day to day started here.

  • First Aon pensions administrator of roughly 1,500 to run a case start to finish with no paper.
  • Case and workflow management, benefits administration, client and stakeholder ownership.

3 yrs

admin to manager

Product impact.

I took the product in late 2022, after three quarters of falling usage. It now runs at about six times that level, and close to five times its previous best.

Took the product
Late 2022
Usage since
About 6x
Against its previous peak
About 4.7x
Falling beforehand
3 quarters

Weekly platform events, indexed to the quarter of handover. The absolute figures belong to my employer, so this shows the multiple and nothing else.

01002003004005006002021202220232024202520260102030405
Quarterly. 100 = the quarter I took it. Dashed line is that level.
  1. 01Late 2022

    Took the product

    Town halls in person with the key user groups, and a reset of how defects were handled. What counts as a bug, what counts as an enhancement, and who decides.

  2. 02Early 2023

    First enhancement out

    Went straight at a priority I already knew from the business side, getting users off the Excel workarounds they had built to cope.

  3. 032024

    Data entry rebuilt

    A full-scale rebuild of the data entry processes. This is where the $3M in internal efficiency and the 35% lift in data completeness came from.

  4. 042025

    Training, and the old system off

    Heavy training across the user base, then retiring the legacy system it replaced.

  5. 052026

    AI features shipped

    Chat layers and document ingestion into the product itself, rather than alongside it.

What I argue for.

Fifteen years of watching the same things go wrong. I am easy to work with about most of it, and hard to shift on these four.

Excel should not be running anything that matters.

I spent years in benefits administration watching business-critical data sit in workbooks with no validation, no audit trail and no owner. Someone sorts one column without the others and nobody finds out for a quarter. The process rebuild I led was worth about $3M in efficiency and lifted data completeness by 35%, and most of that was moving decisions out of spreadsheets and into something that could enforce a rule.

What people ask for is rarely what they need.

That is not a licence to overrule them. It means the job is establishing a collective understanding of the actual problem, and getting there takes longer than writing the spec does. I have run in-person workshops for exactly that reason and delivered 30+ rollout sessions off the back of them. The useful feedback never came from the first meeting. It is also how you notice that twenty separate requests are really one configurable feature.

Build it configurable, even when hard-coding would protect your budget.

The incentive in most product roles runs the wrong way. Hard-code it, and every future change needs a developer, and needing developers is how you justify your funding next year. I took an inherited database and made it admin-configurable so the people using it could serve themselves. It standardised data capture across clients and saved around $200K a year, and it reduced the work my own team could bill for. I would do it again. The alternative is charging the business for a ticket every time somebody wants a dropdown changed.

Innovation needs its own space or it does not happen.

I am usually the person arguing for exploration, not the one blocking it. But a backlog full of defects wins every argument it is allowed to have, so the experimental work needs somewhere of its own to live, with a budget, a boundary and a date to report back. Left open ended you get a demo that impresses a room once. Left unprotected you get nothing at all.

And what I would ask you.

An interview runs both ways. These are the six I would actually bring, and what I would be listening for.

  1. What is running on a spreadsheet right now that should not be?

    Listening forI would end up accountable for that risk, so I would rather see it early.

  2. If I try something and it does not work, what actually happens to me?

    Listening forInnovation dies quietly in places where a failed experiment is career damage.

  3. How do you know your AI features still work six months after launch?

    Listening forIf nobody can answer this, there are no evals.

  4. When engineering and the business disagree, who decides?

    Listening forIt will happen. I want to know where I sit when it does.

  5. How close does the team actually get to the people using this?

    Listening forDistance from users shows up in the roadmap within a quarter.

  6. What do you want in twelve months that you have not got now?

    Listening forIt tells me how much of this is already decided.

Next

I innovate through problems, into what is next.

Forward deployed engineering, or a product role with real build responsibility. If the job needs someone who can sit with the client and then go and write the code, that is the one I want.

A sentence is fine. What the team does and what is in the way is more useful than a job description.

Your application probably meets a parser before it meets a person.

So there is a version of my CV written for one. One column, no tables, no images, no headers or footers to trip over, and the dates in a consistent format. Paste the URL straight into a model if that is easier than downloading it.

Formatted CV

The Word version, for reading. Tell me who you are and it will download straight away. I would rather know who is looking than not.