citefirst
ACTIVEA RAG system that verifies every citation against the retrieved chunks before it ever reaches the screen, and answers the question of retrieval quality by measuring it rather than asserting it. The corpus is ~3,000 pages of the PostgreSQL 17 manual — full of passages that look nearly identical (pg_dump vs pg_dumpall, five different work_mem settings), exactly where naive vector search quietly returns the wrong paragraph. Across 46 evaluation questions, cross-encoder reranking scores recall@5 0.978 and MRR@10 0.834 against 0.652 for plain vector search, with citation validity at 1.000 and zero hallucinated citations out of 168. Embeddings and reranking run locally through ONNX, so ingestion makes no outbound calls at all.
TypeScriptNext.jsReactPostgreSQLpgvectorTransformers.js
Drymora
ACTIVEPRIVATEAn evidence-based, bilingual (EN/es-US) sobriety PWA that also ships as an Android app. Built on Better Auth, Drizzle, and Postgres with web-push notifications and offline (IndexedDB) support, wrapped as a TWA and published to Google Play. Positioned as a general-wellness tool, not a medical device.
TypeScriptNext.jsReactPostgreSQLDrizzle ORMbetter-auth
← Sobriety App rebuiltSoursea
ACTIVEPRIVATEAI sourcing assistant SaaS I built while preparing my own sourcing business. Analyzes Alibaba/1688 product screenshots with AI to calculate margins, assess risks, and auto-generate supplier messages. Solo full-stack development across web, desktop, and Chrome extension with Stripe billing, Shopify integration, and 5-language support.
TypeScriptNext.jsNestJSElectronReactSupabase
HealFrame
ACTIVEPRIVATEA mental health SaaS I designed around Judith Herman's three-stage trauma recovery model. I built AI-guided journaling with a Gemini-powered crisis-detection safety pipeline (GREEN/AMBER/RED) — deliberately fail-closed on input and fail-open on output, validated by an LLM-judge eval harness with zero tolerance for missed crisis cases — plus peer support circles, Stripe billing, and an Android build via Capacitor, solo full-stack across web and mobile.
TypeScriptNext.jsReactPostgreSQLPrismaNextAuth
Argus Fusion
LAUNCHEDPRIVATEA real-time OSINT situational-awareness web app styled as an intelligence watch floor. I aggregated 10+ live public feeds (USGS, OpenSky ADS-B, CISA KEV, NASA, GDELT, CelesTrak…) through a config-driven feed registry with server-side caching, and visualized them across four views, including a Three.js 3D globe, a cyber-vulnerability board, and satellite/orbital tracking.
TypeScriptNext.jsReactThree.jsReact Three Fibersatellite.js
RentRights
LAUNCHEDAn open-source, bilingual (EN/ES) web app that estimates which rent law protects an LA renter — City RSO, AB 1482, LA County RSTPO, or just-cause — from their address, plus the current legal increase cap and a rent-increase legality checker. With no public RSO-registry API to lean on, I designed an 'honest estimator' over live LA County Assessor and US Census open data (cross-verified against the county roll), with a four-regime rules engine that leans protective at every ambiguous boundary and degrades to 'pending — confirm with LAHD' rather than ever being confidently wrong. Locked by 222 tests; a profiled indexed-query fallback cut lookups from 13–55s to ~1s. PageSpeed 100/100/100/100, WCAG AA in light and dark.
TypeScriptNext.jsReactTailwind CSSLA County GISCensus API
DevDeck
ACTIVEAn Electron command deck for developers juggling a pile of Claude Code, Codex and Antigravity projects. It scans git repos under configured folders and surfaces git state, how long each has been neglected, and per-agent session history as cards, resuming your last session in one click. On Windows a Cockpit replaces the wall of external terminals with in-app ones: each session shows its model, active working time, a context percentage that colors up as it nears the limit, and a one-line summary of what it is actually working on — grouped by urgency, so you can see who is waiting on you. When AI refinement is on, each summary is condensed by that session's own agent CLI, so one vendor's quota is never spent on another's work. I treated Electron security as a first-class concern (contextIsolation, sandbox, argv-not-string-interpolation against command injection) and backed it with 465 tests and a Playwright + axe e2e gate.
TypeScriptElectronesbuildVitestPlaywrightaxe-core