The skill set, in plain text
Full-stack AI engineer: model layer, retrieval, agents, the interface on top, and the deployment that puts it on the internet. Every number below is measured off the running system, not estimated — where a figure couldn’t be verified against something on disk, it isn’t here.
Selected work
Six systems, all built and running. The scroll above is these, as a place.
Indexes every past session into Postgres, scores them with a local LLM judge, embeds the keepers, and injects the relevant ones back into new sessions automatically. Retrieval is vector search fused with full-text by Reciprocal Rank Fusion. A separate audit layer extracts testable claims from past answers, checks them against the filesystem, and flags the false ones on recall — the system catches its own hallucinations.
A local model works a backlog across parallel project lanes overnight while a frontier orchestrator reviews and promotes the work. Orchestrator and workers are strictly separated — workers verify but never write. A verdict only counts if it carries an exit code, a quoted log tail and a file reference, so unproven passes get demoted. Includes atomic task claiming with stale-claim recovery and three-strike escalation to a human.
A production platform where every AI task defaults to a local model, and only routes to a frontier provider when a tenant admin explicitly opts that task in. Before anything can leave the box, a local NER model running in an isolated subprocess finds and substitutes personal data, which is rehydrated on the way back. Natural-language reporting compiles to SQL behind a safety guard, with a stored-query fast path.
A drop-in replacement for OpenAI in a production deployment: the legacy platform points at it unchanged. Four task-specific skills are routed by the requested model name, with no silent fallback on an unknown one. The SQL skill is grounded with few-shot examples retrieved by cosine similarity from an embedded corpus, and degrades gracefully if the vector store is missing. Zero third-party dependencies.
Unattended bakeoffs that gate adoption on the things that actually break an agent loop. A candidate 35B model was disqualified outright for failing tool-calling before it ever reached production; survivors were throughput-benchmarked on identical hardware. Results include an honest limitations section and a documented negative result rather than a buried one.
Generates natural-language→SQL training pairs by wrapping the live production system prompt and schema around a local 35B model, so every pair is in the exact dialect the real system expects. Generated SQL is validated against an in-memory database before it’s kept, and prompt changes are scored as pass-rate against a frozen validation set.
Background
Certified FileMaker developer and independent consultant. Before AI: student information systems for a K–12 board and a private school, a Fortune-500-facing developer role at one of the largest FileMaker premium partners in the world, e-commerce search during the dot-com boom, and a college instructor in dynamic web development. The reason the AI work lands in production is that the production part was never the new bit.
The front end
Every thumbnail below was captured from the live site today, and every one is a link. Cinematic scroll-worlds on a video engine I wrote, real-time 3D in Three.js, and games — all built, deployed and still up.
Cinematic scroll-worlds — pre-rendered camera flights, scrubbed by scroll
Thirty years, one takeCareer fly-through
Colosseum, 107 ADHistorical world
PompeiiHistorical world
TriumphCanvas 2D + video
siTOTisCompany front door
WorldsHub
Papercraft dioramaClient concept
Isometric dioramaClient concept
Real-time 3D — Three.js / WebGL
The Quiet WingExplorable 3D gallery
The WoodsProcedural 3D forest walk
Museum of PlayWalkable games museum
The ArcadeWalkable games portal
Games — Canvas 2D, one mechanic each
DRIFTTwo buttons
TETHERTwo buttons
FATHOMOne button
VIGILChoose what to lose
COUNTERPOINTSoundtrack is the score
The Card RoomNext.js party games
Product & editorial
AUTO_HERMESAutonomous coding loop
Five Hours BackAI assessment offer
Compliance auditData analysis & deck
FridgeMicro-site
Motion
The scenes you scrolled through were generated, chained frame-to-frame so the camera never cuts, colour-graded per scene and encoded for scroll-scrubbing — then verified in a headless browser that measures every seam. Separately, I run a local diffusion-video rig on Apple Silicon with a job queue that arbitrates GPU time against a language-model workload on the same machine, including pause and resume at segment boundaries.
Open to
Full-stack: I take AI work from the model layer through the interface and out to a live URL. Forward-deployed / solutions engineering, applied AI, or AI-heavy product work. Based in Ontario, Canada. Remote, and comfortable with it — everything above was built that way, alone, from this desk.
The scenes above are AI-generated and colour-graded; the camera move is one continuous pre-rendered take, scrubbed by scroll. Built, and the numbers verified, by me.