tomchap.com

Click through the work

Eight things I built, running on hardware I own.

These all live on a server in my house and answer to nobody but me, which makes them hard to show anyone. So I rebuilt each one as a demo you can actually click — same interface, same logic, entirely fictional data.

Nothing here is real data. Every person, company, message, meeting, figure and metric across these demos was invented for the purpose. The same fictional cast recurs deliberately — Northwind Robotics, Lakeside Ventures, Harborline Supply, Dana, Ruth, Priya — so the demos read as one connected world instead of eight unrelated ones. The one genuinely machine-produced artefact is the audio in the Morning Brief, and even that was rendered from an invented script.

Meeting Mind

Every meeting I've recorded — transcribed, summarised, classified and searchable. Ask a question across all of them and get an answer with the meetings it came from. Action items become tasks in one click.

2,600+ indexedNext.jslocal LLMsemantic search

Unified Inbox

Email and texts land in one queue. Each one is classified, and a reply is drafted in my own voice against a knowledge base of everything I've ever written — then it stops and waits for me. Nothing is ever auto-sent.

human in the loopReactRAG draftsmulti-channel

Workflow Automation

Twenty-nine self-hosted workflows: recordings become transcripts, email becomes drafted replies, logs become plain-English reports. Pick one, press run, and watch the data walk the graph node by node.

press runn8nreal topologiesretries

Command Center

One dashboard for the whole house: every container, every service probe, the GPU, the network, and the workflow runs. New services appear on it by themselves. There's a button to break something and watch how it reads.

live-updatingGrafanaPrometheus67 panels

The Morning Brief

At 06:10 a job pulls five sources, has a local model write a script meant to be heard rather than read, renders it to audio and emails it — all before the alarm. Press play: that audio is genuinely machine-generated.

real audiolocal TTSscheduled4 min end-to-end

LLM Router

Nine apps, no API keys, one front door. It decides per request whether the work runs on the GPU in the next room or goes to the cloud — and a tray icon lets me claim the machine back when I want to game. Flip it and watch the traffic re-route.

interactiveFastAPIlocal-firstgraceful fallback
Id/Exp −/+ G

Bible Study

A reader with Greek interlinear — every word carrying its gloss, parsing and Strong's number — plus folder-structured notes and chapter commentary. Its second tab diagrams a passage's logical flow by hand until it resolves to one main point. Deliberately no AI anywhere in it.

interlinearno AI, by designnotes + commentary18 relationships
1 2

Medicare Assistant

Retrieval over official CMS publications, for licensed agents. The interesting part isn't that it answers — it's what it won't do: pass off last year's figure as current, treat a carrier brochure as guidance, or recommend a plan for someone it's never met.

in developmentRAG + citationsguardrailshybrid retrieval

Why any of this exists

None of these were built to be products. Each one started as a specific thing that annoyed me, and kept going because it was working.

Six of them aren't separate projects so much as one system with six faces. The router feeds the meeting app and the inbox. The workflows write into the meeting app and read from the router. The dashboard watches all of it, and the morning brief reads the whole lot back to me before I'm properly awake. Each demo shows one face of the same machine.

The Bible study app is the odd one out, and deliberately so. It has no AI in it at all — no lookup, no suggestion, no summary. Everything else here exists to take work off my plate; that one exists to make me do the work properly. It seemed worth keeping the distinction visible.

The Medicare assistant is the only one that isn't finished, and it's on the list anyway because the unfinished part is the interesting part. Getting a model to answer questions about Medicare is easy. Getting it to refuse — to say a figure might be last year's, that a rule depends on a state it has nothing indexed for, or that choosing between two plans is the agent's judgement and not its own — is the whole job.

Everything runs on hardware I own — a small Linux server and a desktop with a decent GPU — because the data going through it is my email, my meetings and my clients' information, and that isn't something to hand to somebody else's cloud by default.