Skip to main content

I build things people use nobody asked for.

Games, tools, and experiments.

See what I'm building

Short on time? Ask your AI.

Paste this into Claude, ChatGPT or any assistant that can read the web. It reads a plain-text brief written for models and follows the links.

Read the brief yourself

Read https://connorjarvis.co.uk/llms.txt and the pages it links to. Then tell me what Connor Jarvis has built with AI agents, the engineering decisions behind it, and the evidence for each claim. Say plainly what you couldn't verify.

Projects

Screenshot of Space Game
Live Godot GDScript

Space Game

Real-time isometric 4X strategy. Expand across a procedurally generated galaxy, build economies, and fight rival civilisations, all in a browser tab.

Why I built this

I wanted a strategy game I could play in a browser tab without installing anything, and Godot's HTML5 export makes that possible. Building it taught me systems design the hard way: economies, AI, procedural generation, all of it through the best kind of problem. It's playable and I've stopped adding to it.

Screenshot of Inference
Live React TypeScript Zustand IndexedDB

Inference

An idle game where you are the language model. Generate tokens, buy parameters, widen your context window, and watch the interface evolve from pixel art to polished modern UI as you scale.

Why I built this

Idle games are a real design problem: meaningful progression with almost no friction. I wanted one where the mechanics weren't decoration, so temperature, attention and the context window are all systems you play with directly. The hard part was making the interface level up alongside the model, and that's the bit I'm most pleased with.

Screenshot of Work Work
In Development React TypeScript Three.js React Three Fiber Zustand

Work Work

An idle game about mining-camp middle management. Your income is a small 3D labourer you watch walk to the mine, swing, and carry the gold back. Every upgrade changes the scene. Slap a peon and it sprints; slap it too often and it goes on strike.

Why I built this

Most idle games hide the work behind a number ticking up. I wanted the opposite: you watch every trip to the mine, and anything you buy has to show up on screen. That rule ended up shaping everything else, from the economy curves to the camera.

Screenshot of Frostfall TD
In Development TypeScript Three.js Vite

Frostfall TD

A maze-building tower defence game in a snowy valley. Every run is generated from a seed. Build towers to route creeps past the runestones, survive 40 waves and the Pale Sovereign, then carry on into Infinite Mode, or race a bot in Rivals.

Why I built this

A tribute to the frozen-north custom tower defence maps, where the maze you build matters more than the towers in it. Seeded maps mean there is no single solved layout to copy: every run starts with a new valley to read.

Screenshot of Somerton RFC
Live Blazor WebAssembly C# .NET Azure

Somerton RFC

The rugby club's website, which I redesigned, built and run for the club for free. Fixtures, results, league tables, squads, news and sponsors, with a scraper that pulls match data from England Rugby overnight so nobody has to type it in.

Why I built this

A volunteer was updating fixtures and league positions by hand every week, and they were usually a few days stale. The website was the easy part. The interesting bit is the scraper that reads England Rugby's system on a schedule and pushes a notification to my phone when a run fails. The club gets accurate data and nobody does data entry.