I build software with AI. Most of what I make now starts as a spec I write and finishes as working code that an AI agent and I have built together, and a lot of it puts an LLM at the centre of the product itself: games with AI-driven stories, tools for writing long-form fiction, and an internal "company brain" that answers questions over a firm's data. I ship through Octonion Software, and most of my projects are open source on GitHub. You can see the full list on my Apps page.
My background is in physics and information security (penetration testing, then governance, risk and compliance at Cisco), so I care about the parts of AI products that don't make the demo: permissions, guardrails, and what happens when someone feeds the model a malicious prompt.
How I build with AI
I work with AI coding agents rather than autocomplete, and the quality of the result comes down to the process around them. Sometimes I work alongside the agent step by step, and sometimes I let it run on its own for long stretches. Either way, the process is the same:
- Plan first: Every project starts with written documents: requirements, design notes, an implementation plan. Better plans are the single biggest factor in getting good results from an agent, so this is where I spend most of my effort.
- Let the agent build: Boilerplate, tests, refactors, unfamiliar libraries and syntax all go to the agent, and on well-planned work it can take on whole features.
- Check the work: I review what comes back against the plan, run the tests, and try the result myself.
- Fix and feed back: Anything that needs fixing gets fixed, and lessons go back into the plans and project documents so the next round goes better.
I've also built tools for this way of working: VantageTerm, a desktop companion for Claude Code and other CLI agents with diffs for reviewing changes; plimsoll, an autonomous build loop that writes its own spec and checklist and only commits work that passes verification; and LLM Remote Runner, a secure web interface for running agent tasks remotely.
Things I've built
DungeonGPT
DungeonGPT is my most mature project: a live, browser-based fantasy RPG where an AI acts as the Dungeon Master. You create a party of heroes, pick a campaign, and explore a procedurally generated world of towns, caves and ruins, talking to the DM in plain English. It has accounts, cloud saves, membership tiers and a guided tour for new players. Watch the overview or play it.
The hard problem is deciding how much to trust the language model. Strong models can run a game on their own but cost too much per turn; affordable models lose track of who is where, invent characters, and complete quests early. So DungeonGPT splits the work: code referees, the AI narrates. The game engine holds all state and makes every decision (dice rolls, combat, loot, whether a quest objective is met), and the model turns those settled outcomes into prose. I test that split with an evaluation harness that scores models on labelled game turns, which showed small models read player intent well (95-97% for the best one) but make game decisions poorly, while a simple rule table in code got 96% on the same roll decisions in an early test.
What's in it:
- A full game loop: a procedural world map, towns with streets and named residents, explorable sites, shops, equipment, multi-round boss fights, side quests, and campaigns that chain into new chapters in the same world.
- AI that remembers: conversation memory using on-device retrieval over the story so far, so the DM recalls earlier events.
- Affordable models in production: a curated set of open models on Cloudflare Workers AI, with a premium pool through OpenRouter for members and automatic fallback, and no API keys exposed to the browser.
- Production engineering: React on Cloudflare Pages, a TypeScript Worker backend, self-hosted PostgreSQL with per-user access enforced on the server, local-first saves that sync when you sign in, and unit and end-to-end tests.
It grew from a simpler Python version, and the JavaScript code is open source.
LLM Brain Demo
LLM Brain Demo is a working argument that a company "LLM brain" should be a router over governed tools, not one big vector database. It's a single chat interface over a synthetic company, combining text-to-SQL with hybrid document search, with permissions enforced by Postgres rather than by the prompt.
RPG Loom
RPG Loom is a deterministic incremental RPG with quests, crafting and combat, where LLMs generate the narrative content. It supports multiple LLM providers. GitHub
Writing tools
- NovelWriter helps authors write novels with LLMs: generating lore, outlining the story, planning scenes and writing chapter prose. It began as my entry for NaNoGenMo 2024, where an early version produced a 52,000-word novel, Echoes of Terra Nova.
- StoryDaemon takes the idea further: an autonomous agent that plans, writes and evolves long-form fiction on its own.
- LLM Creative Writing Analyzer sends the same prompt to several models, many times over, to measure how consistent and how varied their writing is, including how often they reuse the same names.
Prompt injection research
I've run a series of experiments on using an LLM as a safety classifier to catch prompt injection attacks. Two of my ideas made detection worse; the third made it better.
- ScrambleGate: Inspired by ASLR in computer security, it randomly samples and scrambles parts of a prompt before an LLM classifies it. Detection dropped once inputs were scrambled.
- Prompt expansion: Making prompts more verbose, to see if that helped the classifier spot malicious intent. It made performance worse.
- Adversarial system prompts: Telling the classifier to be suspicious and alert to abuse. This improved detection.
The prompt injection testing tool now compares detectors side by side: LLM classifiers, regex patterns, BERT models, cheap LLM pre-filters and ScrambleGate.
On AI and thinking
In June 2025 an MIT study (Your Brain on ChatGPT) was widely summarised as "AI makes you dumber". The headline missed some nuance buried on page 139 of 206:
"Brain-only writers who later added ChatGPT actually showed enhanced posterior–prefrontal coupling (Session 4)."
In other words, learning first and automating second pays a cognitive dividend. AI isn't brain rot; it's a mirror. If you skip the heavy lifting, it happily keeps the bar low. Do the first reps yourself, then let AI boost your thinking rather than replace it.
Get in touch
If you'd like something built with AI, or want to talk through an idea, the best way to reach me is LinkedIn.