Production software I designed, built, and operate end-to-end. QA on
Autodesk Maya and 3ds Max taught me exactly how software breaks — this is what I build when I own the
whole stack, from schema to server. Every project below is live. Click through and use it.
Sign in to any of the apps as demo@evomedia.net — ask me for
the password and it is yours. The open-source tools need no login at all.
evo.ehs
Beta · Live demo
Multi-tenant SaaS for environmental, health & safety compliance at multi-plant manufacturers.
Tracks permit deadlines and evidence, manages incidents and corrective actions, runs OSHA
incidence-rate reporting, and auto-discovers facility data straight from EPA and Texas TCEQ
databases — with per-site live weather and NWS alerts. Passkey sign-in, Stripe subscription billing, and
generated PDF reports.
A multi-tenant Retrieval-Augmented Generation (RAG) platform I designed and built — it turns an
organization's own records into a grounded, guarded, cited assistant that answers only from those
records and declines everything else. Model-agnostic per tenant, private-capable, and deployed in
production as the "Ask AI" capability inside evo.ehs.
The multi-tenant foundation beneath these apps: shared authentication, per-tenant data isolation
at the row level, and an API designed from the ground up as the platform's core — not an add-on
bolted to an existing app. A common SDK means a new product ships in days instead of months.
Four products run on it as tenants today — evo.ask-ai, evo.civilcode, evo.provensheet and
evo.docketmail — ahead of an open-source release.
API Design
NestJS / Node.js
Prisma
PostgreSQL (row-level isolation)
JWT + WebAuthn
Stripe billing
Docker
// Internal platform — no public URL. Happy to walk through the architecture in an interview.
evo.civilcode
Beta · Live
Ask the Texas statutes a question and get an answer grounded in the statutes themselves — every
response cited to a specific section, with its hierarchy, the passage it came from, a deep link to the
official text, and the snapshot date. A second evo-ai RAG product: the
complete statutory corpus retrieved from the official Legislative Council source, parsed into clean
sections, and answered by a local model so nothing leaves the box. Guardrails are the
product — it tells you what the law says, never what to do.
// Beta — retrieval verified by a 30-question citation gate before the product shipped.
evo.provensheet
Beta · Live
Turns the spreadsheet a business actually runs on into a shared web application — and
proves the numbers survived. Drag in an Excel workbook and it is a working cloud app
seconds later: formulas, not screenshots. Every formula is then recomputed and compared against the
result Excel itself cached in the file, so you see cell-by-cell that the maths is intact before
anyone relies on it — the report is the product, where everything else in this space asks you to
trust the conversion. Multi-user and local-first, so edits survive a dropped connection and sync
when it returns. The built-in sample is an 18-sheet industrial estimating workbook refined over
30 years of in-field use: 5,121 formula cells, all matching.
Automated court-record monitoring for Southeast Texas. Scheduled pipelines pull new filings, a React
front end filters and selects them, and the matching direct-mail pieces are generated as merged Word
documents ready for print. Built on evo.platform through its SDK — one of the four products running
on it as tenants.
// Public records only — nothing sealed, nothing confidential, nothing bought.
evo.zscripts
Live · Open source
Open-source CLI built for AI-assisted development — one-word commands (zstart,
zdeploy, zbackup) that wrap the routine start / deploy / backup chores
so a coding agent doesn't have to reason through them. It saves tokens, but the real win is
keeping the AI's context window focused on the actual work. The tooling I use to run everything
on this page.
Self-hosted IP geolocation API — no account, no API key, no per-query cost, and no
visitor IP ever leaves the machine it runs on. It returns the same JSON field names as
ip2location.io's free tier, so it drops into anything already written against that API by repointing
the URL. Data comes from DB-IP's free Lite databases, held locally and refreshed monthly by the
service itself.
Python
FastAPI
DB-IP Lite (MMDB)
Docker
pytest
// Built while evaluating the paid options. If it drops a third-party dependency, keeps user data private, or cuts a recurring cost, I build it — this one does all three. Ran in my own apps first, then went open source.
Built because I needed a confetti system and was sure I could do better than what was
available. Most effects throw dots along a ballistic arc, so they read as sparks. Paper is
nearly all surface and almost no mass — it sheds its launch speed in a fraction of a
second, then descends slowly, fluttering. This models that: air drag, tumble-driven flutter,
and a numpad grid of twenty-five firing positions. One file, no dependencies, no build step.
Headed for open source.
Everything here runs on infrastructure I built and operate end-to-end: a single nginx edge routing
every site, containerized services, self-hosted email, Git, and full metrics and dashboards — on one
AWS box, no managed PaaS. When something breaks at 2 a.m., I'm the one who fixes it.
Systematic QA / SDET practice applied to a production LLM platform I designed and built — a documented
defect loop against text-to-SQL, retrieval, and guardrail failure modes. Every bug tracked with a
reproduction, root-cause analysis, a regression test, and verification against database ground truth.
Self-hosted visitor analytics for every site on this page — sessions, page views by path, status-code
distribution, and per-visitor IP geolocation answered locally by
evo.locate on the same box, so visitor data never goes to a
third-party service. A single HTML dashboard served directly by the nginx edge, parsing its own
access logs.