Olly Salanson

I build software for real businesses, and I build it fast.

More than 20 years in business and digital marketing, and I build the software myself.

I direct a team of AI agents through firstmate, Kun Chen's open-source agent supervisor. They work on several projects at once, every change is tested, and I approve what ships.

Customer Care and Ready Reckoner, built for Renew Energy. Shown with made-up data.

Work

Software for a real business. Renew Energy.

Renew sells solar mounting systems to installers. Its staff answer phones, chase orders and price roofs. Three of my projects exist to make that work faster.

Launch nextBuilt 22 Sep to 1 Oct 2026

Customer Care

One screen where Renew's staff take a call, see who's calling from Shopify, and run the case to the end.

  • Amazon Connect's softphone runs hidden inside the app: a ringing call bar, Answer, Mute, Hold and Hang up, with the caller already matched.
  • Shopify is the only customer book. The app does read-only lookups and exactly one write: Create contact.
  • Staff-only Google sign-in, enforced by Postgres row-level security. Every case change goes through an audited database function.
  • Calls are recorded and transcribed, but only redacted copies are kept, behind signed links that expire after five minutes.
On firstmate

Built in ten days, from an empty repository on 22 September to a working phone, customer and case system. The repo has 140 test files and 44 SQL migrations, and a fixture preview with made-up data that CI tests and these screenshots come from.

  • React 19
  • TypeScript
  • Vite
  • TanStack Query
  • Supabase
  • Postgres RLS
  • Amazon Connect
  • Terraform
  • Shopify
  • Vitest
Fixture preview. Every name, number and order is made up.
DeployedClerk: awaiting its first real customer

Ready Reckoner & Clerk

Renew's quoting engine for solar mounting systems: lay out the array, price it, lock it, email it, and turn it into a Shopify draft order.

  • Clerk is its email front door. An installer emails a request, and Claude triages and analyses it. After a person approves, a questionnaire goes to the customer, and their answers become a draft quote. A second human gate approves it before it is sent.
  • Clerk never counts panels from pictures. It takes rows and panels per row from the customer's own words, and asks when they are missing.
  • An npm-workspaces monorepo: the web app, a pure pricing calc package and shared Clerk types, with Postgres policy tests in pgTAP.
On firstmate

Started by hand in May. Since September the agents have added Clerk's ask-don't-count rule, a privilege-escalation fix, and the link that lets Customer Care open a customer's quotes.

  • React 19
  • TypeScript
  • Vite
  • Supabase
  • Deno Edge Functions
  • pgTAP
  • Claude
  • Shopify
Clerk run on invented installers, a local database and a stand-in model.
Day oneStarted 1 Oct 2026

Chinwag

Listens to an interview on your own PC and suggests the next questions to ask.

  • Runs on my own PC, with no API keys and no paid services.
  • Speech is turned into text locally by Whisper large-v3 on the GPU. In the listening job, now in review, words reach the screen about 1.7 seconds after each pause.
  • It has four swappable parts that talk only through agreed messages, so the page can move to the web later without a rewrite.
  • "Get ready" builds a briefing pack for each project before an interview by running Claude Code headless.
On firstmate

A scout researched the plan and drew it on a visual board. Crewmates now build it job by job, each change passing the no-mistakes review pipeline.

  • Node 24, TypeScript with no build step
  • WebSockets
  • Python
  • faster-whisper
  • Claude Code
  1. ListeningPython · Whisper on the GPU
  2. ProgramNode · saves everything
  3. Question makerClaude Code, headless
  4. Pagethe screen in the interview

Roadmap2 done · 1 in review · 5 to go

  1. Sheet
  2. Listen
  3. Packs
  4. Questions
  5. Words
  6. Facts
  7. Speakers
  8. Finish
How Chinwag fits together, from its README. Day one, so no screenshot yet.

How I work

I direct the work. AI agents build it.

firstmate is Kun Chen's open-source system for running a team of AI coding agents. I talk to one supervising agent. It plans the work, gives each task to an agent of its own, and reports back when something needs my decision.

  1. 1

    Brief

    I describe what is needed in plain English, and answer questions as they come up.

  2. 2

    Plan

    The supervising agent writes a brief for each task and hands it to its own agent.

  3. 3

    Build

    Every agent works in its own clean copy of the code, so several projects move at once without colliding.

  4. 4

    Check

    Changes are tested, and a project can require a full review, test and lint pipeline before anything goes out.

  5. 5

    Approve

    I approve what ships, or let a trusted project ship passing work on its own.

What that looks like in practice

  • Ten daysto build Customer Care, a phone, customer and case system for Renew's staff, from an empty repository.
  • 17 daysfrom starting Escape from Pallet Town to a full game anyone can play online.
  • Half an hourfrom a new repository to github-worklog publishing its first page.
  • One nightto build SHUNT's handling lab, first circuit and menus.

Dates from each project's GitHub history.

Tools I built

Tools for running the agents.

Running agents every day shows where the system strains. When it does, I fix it, and I build what is missing.

In useFive fixes and additions

firstmate, the fork

My fork of firstmate, where I fix and extend the fleet I run on.

  • The memory watchdog. On 23 September, twelve workers plus tests and browsers froze a 16 GB machine. Now an admission gate holds new workers back at 85% memory and lets them in again below 70%. At 95% it stops the single largest heavy job, such as a test runner or headless browser, and never a worker agent.
  • It also adds --help on every script, exact tmux targeting so a dead worker window never reads as alive, and two supervision fixes.
  • All five changes went through the no-mistakes pipeline, and its review-and-fix commits are in the history.
  • Bash
  • tmux
  • /proc/meminfo
  • no-mistakes
OllySalanson/firstmate

52% of memory in use, so another agent can start.

  • 85%New agents wait for room.
  • 70%Waiting agents are let in again.
  • 95%The single largest test run or browser is stopped. Agents never are.
The watchdog's own reading on 1 October, while this page was being built.
Publishing nightlyOpen source · MIT

github-worklog

Turns GitHub activity into a password-locked daily record of work.

  • The page is encrypted in the build, with PBKDF2-SHA256 at 600,000 iterations and AES-256-GCM. Only the encrypted page reaches gh-pages.
  • It can split one repository into separate products by the files each change touches. That is how Clerk gets its own line.
  • It has no runtime dependencies, and 54 tests run on node --test.
On firstmate

One agent built it, and it was online half an hour after the repository was created.

  • Node.js
  • Web Crypto
  • GitHub Actions
  • GitHub Pages
OllySalanson/github-worklog
DonePlain HTML and CSS

The operations manual

A dense field manual for running firstmate from the terminal: "Run the bridge, not the tabs."

  • Ten sections, from the five commands worth memorising to how the fleet behaves under load.
  • It has no framework, no build step and no JavaScript. Open the file and it works.
On firstmate

A manual about firstmate, written by firstmate's own crew and rebuilt once to raise the bar.

Research23 Sep 2026

Is firstmate the bottleneck?

A study of whether the first mate itself had become the fleet's bottleneck, and whether second mates are the fix.

  • Method: a read-only Python script parsed the watcher logs and the session transcript. Every design claim cites a file and line.
  • Verdict: second mates are the right long-term fix, but not the first one. Delegating hands-on jobs and restarting long sessions sooner come first.
  • Python 3, standard library
  • Markdown

First mate busy151 of 287 min

Wake-ups that were worker news20 of 85

47 more were monitoring-restart notices

Conversation size82k → 570k tokens

Median step time3–7 s → 48 s

Measured over one 287-minute working session.

Side projects

Two games, built the same way.

Games are a hard test of the method, because feel and polish can't be faked. The agents check their changes in a real browser, using scripted playtests.

PlayableLive on GitHub Pages

Escape from Pallet Town

A single-player Pokémon extraction roguelike: Escape from Tarkov's raid loop, fought in Game Boy Advance-era battles.

  • Raid, then extract to bank everything. Wipe, and you keep only one chosen Pokémon and two items. Lost Pokémon are gone for good.
  • A raid clock and a roaming rival "hunter" who grows stronger as the raid goes on, and enrages when time runs out.
  • Five raid maps, all 151 Kanto species, double battles, evolution, TMs, a grid bag and a walkable home base.
  • 178 test files, plus scripted playtest drivers that drop a bot into any map.
On firstmate

Playable online 17 days after it was started.

  • TypeScript
  • Phaser 3
  • Vite
  • Vitest
  • GitHub Pages

A personal, non-commercial fan project. Pokémon sprites and tiles belong to Nintendo, Creatures and Game Freak.

Screenshots from the repo's own docs.
EarlyHandling lab built

SHUNT

A same-screen, top-down combat racer: four cars on one shared screen, and the last car in frame wins. Rebuilt from memory with all-original assets.

  • About a hundred lines of hand-written car physics with no physics engine, on a fixed 60 Hz simulation. A test proves the result is bit-identical at 30, 60 and 144 fps.
  • Every handling dial is a live slider and can be exported as JSON or code. The first circuit, Cutter's Yard, has 641 metres and 14 corners.
  • Built so far: the handling lab, the first circuit with walls, and the session screens. Shared camera, eliminator line and weapons come next.
On firstmate

A scout wrote the design plan, then agents built the skeleton, the handling lab, the track and the menus, all overnight on 7 and 8 September.

  • TypeScript
  • Phaser 3
  • Vite
  • Vitest
OllySalanson/wrecked
Captured from the running game today.

Next

Planned, not yet built.

Both of these exist as a written spec and a reviewed plan. Neither has code yet. This is where the next stretch of work goes.

Spec stage452-line spec · 6-phase plan

Crow's Nest

X marks the SERP. A playbook and build system for client websites whose job is to rank number one on Google.

  • The goal is to turn the five-minute gaps firstmate frees up in a day into finished client sites, with a handful of short prompts and one-click approvals.
  • Static sites with near-zero JavaScript. Copy should sound like the business owner, not like an AI, with a trope blacklist enforced by lint.
  • Phase 1 counts as done when a fixture site scores Lighthouse mobile 100 with 0 KB of first-party JavaScript.
  • On firstmate: one Crow's Nest second mate plus a crewmate per job, with strategy and design directions approved on visual boards.
  • Astro
  • Cloudflare
  • Lighthouse CI
  • axe
  • Playwright
  • Search Console API
  1. Parleyrecorded client interview
  2. Spyglass
  3. Charter
  4. Treasure Map
  5. Figurehead
  6. Shipwrightthe build
  7. Sea Trialsautomated gate
  8. Message in a Bottleclient feedback
  9. Maiden Voyage
  10. Lookout
  11. Harbour Master
  12. Ship's Log
The twelve stages of the spec, in order.
PlanSecond draft

Shipshape

A personal life programme covering work, health, money and social life, run by its own agent alongside firstmate.

  • Shipshape is its own conversational agent with its own home and memory, linked to firstmate through files, not folded into it.
  • Its memory plan is "Load less, not remember less": a small always-loaded core, topic cards loaded by tag, and numbers kept in data files that scripts query.
  • Firstmate's crew builds Shipshape's code through pull requests. Personal details never enter the repository.
  • Claude Code agent
  • tmux
  • Telegram bot
  • Scheduled check-ins
Shipshape life agent
  • Work
  • Health
  • Money
  • Home
  • Social
  • daily outbox
  • life notes
  • decisions waiting (read-only)
  • code, via PRs
firstmate work fleet
The planned bridge between the two agents, at concept level.

About

Business first. Then the build.

I have more than 20 years of business experience: working my way up, running businesses, and working with other businesses. Digital marketing has run through all of it.

I am also a computer scientist who can actually build software. Working with a team of AI agents, I now build it very fast.

Put together, that means I understand the business problem, and I can build the software that solves it.

Contact

Get in touch.

Every project on this page was built this way: briefed by me, built by agents on firstmate, tested, and approved before it shipped.