Beyond Falkor
Client and product work, plus selected projects
The same habits outside the home lab: small, useful products with privacy designed in and plain status notes. Client names and people stay private.
Client and product work
Two client engagements and one product prototype, with names left out. Each reads problem, delivered, status and constraint.
Client work · built, awaiting deployment · Jul–Sep 2026
An HR policy assistant, and an AI roadmap
For an IT services and staffing firm
- Problem
- Staff needed trustworthy answers about HR policy, and personal HR questions had to reach a person, not an AI.
- Delivered
- An on-premises assistant that answers only from published policy and checks every citation, plus a phased AI roadmap.
- Status
- Built and tested; going live is the client's call.
- Constraint
- Chats are encrypted and deleted after 24 hours, and the local model is pinned so it can't change underneath the answers.
What I built
- Hybrid retrieval (Postgres full-text plus vector search) over a local model pinned by digest
- Chats encrypted and deleted after 24 hours; every citation checked before it is shown
- An 80-case acceptance set: 50 factual, 30 safety
- A phased AI roadmap that ordered three products by risk, so an automated score can never reject a candidate
- A recruiting-intelligence engine that records graded evidence instead of scores about people, with approved sources only and injection screening on every fetched page
- RAG
- pgvector
- Local LLM
- Evals
- Next.js
- Python
Client work
A local-first CRM for a loan officer
For a mortgage loan officer
- Problem
- A loan officer needed one place for the pipeline, referral partners, tasks and closing dates, with client data kept off the cloud.
- Delivered
- A CRM that runs entirely in the browser: a pipeline board, referral partners, templates and a closings calendar.
- Status
- A leaner rewrite replaced the original after the original's own audit found it not release-stable.
- Constraint
- No server, no account and no data leaving the laptop.
What I built
- A Kanban pipeline from long shot to past client, with referral partners in tiers
- Email templates with merge fields, and a calendar of birthdays and closings
- CSV import with column mapping; JSON backup and restore
- Plain JavaScript with no runtime dependencies, and a one-click Windows installer
- JavaScript
- IndexedDB
- Offline-first
- Zero dependencies
Product prototype · working demo
Classroom wishlists, with the research to match
For teachers and parents
- Problem
- Teachers wanted a simple way for parents to chip in for classroom supplies, without putting anyone's contribution on display.
- Delivered
- Classroom wishlist pages and a teacher console, with checkout built and exercised in test mode.
- Status
- Working demo. A real-money pilot waits for a compliant payout model.
- Constraint
- Policy research found that direct payouts to teachers conflict with district policy and state gift limits.
What I built
- Privacy by design: the public page shows progress and a donor count, never goals, totals or amounts
- Stripe Connect checkout and webhooks, built and exercised in test mode
- Moderated comments, seven progress visuals, and a status page showing which integrations are live and which are stubbed
- Next.js
- tRPC
- Prisma
- Stripe Connect
- Postgres
Selected projects
Built for the fun of it, with the same habits: privacy designed in, tests, and plain status notes.
CouchCred
A party game that runs itself. Phones join by room code, picks lock in, and every call settles from the live sports feed, then AI, then a crowd vote, or it scores no points.
- Real-time rooms over WebSockets
- About 17,000 lines of TypeScript and 32 test files
- Next.js
- WebSockets
- Prisma
- SQLite
God's Eye View, wired up
A 3D world-events globe built by joining two open-source apps behind one bridge. It starts them when you open the page, sleeps them when idle, adds 29 live public-data layers, runs summaries on the local model, and holds voice AI to a hard $2 budget.
- Built on God's Eye View (MIT) and World Monitor (AGPL-3.0)
- A bridge of about 9,000 lines with 24 test files
- CesiumJS
- Docker
- Node.js
A face for the voice
A 64×64 LED panel that cycles through information scenes, and lip-syncs when Falkor speaks.
- One serialized device writer with priority leases
- About 11,700 lines and 36 test files
- Node.js
- Hardware
- Pixel art
Family Huddle
A fantasy-football league designed for every age at the table: a live draft on one shared device, large-text modes and 44-pixel touch targets.
- Hashed PINs and an audit log of manager overrides
- Scoring from public sports data
- Next.js
- WebSockets
- SQLite
Archive
Smaller and paused work.
Signal Deck
A radio and podcast player with no runtime dependencies, covering about 58,000 stations, plus a dial that links out to public amateur-radio receivers.
- About 3,000 lines and 14 test files
- JavaScript
- Audio
- Zero dependencies
DreamForge
A child describes a game in a sentence, and the system builds it in Roblox. It now produces a real game file from one sentence; making it playable and editable is the unfinished half.
- 2,323 tests passing
- Paused, and labeled honestly as not done
- .NET
- React
- Luau
Also: a playoff salary-cap fantasy league with a lineup optimizer, a two-player pick'em with trading-card reveals, and a desktop prize wheel.