A marketing command center, a rent pricing advisor, a payables processor and an employee support center — each one built because I felt the pain first. The person who feels the pain builds the solution.
All five are employer-internal. No admin URLs anywhere on this page.
Problem → tool → stack → one number
Production software, not demos. Statuses as on the home page.
Marketing command center
Employer-internal
Problem
Twelve communities, each with its own reviews, competitors and Google Business Profile to watch — and no single place to watch them from.
Tool
One portal: review monitoring with AI-drafted replies, competitor intel, GBP audits, brand-checked copy, an asset vault and AI pricing recommendations, fed by a cron pipeline.
Stack
PHP 8 · SQLite · Claude API · cron · no frameworks
12
communities on one portal
Internal
Rent pricing advisor
Employer-internal
Problem
A rent recommendation that only looks at the comps next door is a guess about demand dressed up as a number.
Tool
Every recommendation carries market context — HUD, BLS, FRED and RentCast — so the reasoning moves from comp-relative to demand-versus-supply, written in plain language. The deep-analytics layer is partially built.
Stack
PHP 8 · SQLite · Claude API · HUD · BLS · FRED · RentCast
4
data feeds behind every recommendation · cost per run measured
Internal
Payables processor
Employer-internal
Problem
Card statements and emailed invoices meant thousands of manual coding decisions and image overlays every month, by hand, one line at a time.
Tool
Codes each line, matches it to receipts swept from Gmail, stamps the invoice and hands accounting an export-ready batch. Two models: one matches, one codes.
Stack
PHP 8 · MySQL · Claude API · Gmail receipt sweep · cron
3,000–10,000
decisions a month it is built to absorb · design target
Internal
Employee support center
Employer-internal
Problem
Requests for IT, HR, Yardi, EliseAI and marketing had no single front door, and the same questions were answered again and again.
Tool
Tickets with routing, a help center that answers from past tickets, AI summaries and auto-titled threads, plus employee programs with an embeddable shout-out feed.
Stack
PHP 8.3 · SQLite · Claude API
Productized as ZormDesk
the same engine, sold under my own studio · see Products
Internal
Signed tokens · 90 s · single useLive · •••••••.com/ops
Ops single sign-on hub
One login, four tools, a break-glass runbook. The hub fronts the four tools above plus the website admin.
Identity is read from the support center on every request; it is the one store, and it is read-only to the hub.
Each app has its own signing secret; a token is good for 90 seconds and for one use.
Break-glass accounts and a deactivation timing table live in the runbook, not in anyone's head.
Employer-internal
How I run production
None of these is a marketing tool. That is the point — range. One line each, no screens.
Corporate site, 2026 rebuildBuilt · not yet deployed
Hand-coded PHP 8 and SQLite with a point-and-click block editor, replacing WordPress after a hack investigation. Deploys apply themselves.
The runbook ships with a deactivation timing table and break-glass accounts — who loses access when, and how to get in when the identity store cannot answer.
A zero-backend document portal for residents and prospects: a QR code opens a folder the web server already lists. fpgvid.com, a single-page community video library, sits beside it.
Static HTML · Apache auto-index · QR · employer-internal