Developer & Entrepreneur
AI 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.
A 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.
HealFrameA 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.
Argus FusionAn anonymous emotional-release app where you pour out what's weighing on you and burn it with a 3D fire animation. I built the burn effect with React Three Fiber and a Blender CG pipeline, routed anonymous comfort messages through an AES-256 encrypted escrow design, and shipped it as a Turborepo monorepo spanning a Next.js web app and an Expo mobile app.
MinddumpA habit-breaking app I built from my own experience with trichotillomania. Detects hand-to-face contact in real time through your webcam and alerts you instantly. Customize detection zones for scalp, eyebrows, cheeks, and more, then track your progress with daily stats and streaks. All video processing stays on your device — nothing is ever sent externally.
An 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.
RentRightsAn Electron command-deck desktop app for developers who manage many projects with Claude Code. It scans git repos under configured folders and surfaces git/session state, staleness badges, and token-cost estimates as cards; 'Open' spawns `claude -r <session>`. I treated Electron security as a first-class concern (contextIsolation, sandbox, argv-not-string-interpolation against command injection) and backed it with 132 tests and a Playwright + axe e2e gate.
A horoscope content platform aimed at the US and Latin American markets. I built a birth-chart calculator on real planetary positions (astronomy-engine) and statically generate zodiac, compatibility, and astrology-learning pages across a three-language (EN/ES/PT) SEO architecture designed to capture organic search traffic.
ZodiaclyA web app for discovering places across Greater LA — beaches, hikes, date courses — reachable without a car. I built the full data pipeline (GTFS ingestion, OSM scraping, PostGIS reachability scoring) and ran a self-hosted OpenTripPlanner 2 instance for live multimodal routing. To keep recommendations honest I reconciled straight-line 'nearest stop' estimates against the real router from multiple origins, and deployed the whole thing through a GitHub Actions CI/CD pipeline on Docker.
TransitLAA multi-user PWA that turns a receipt photo into a tidy budget entry — Gemini OCR extracts merchant, total, date, and category. I scoped every endpoint per user (down to the SSE-stream and image-serving seams), made the usage quota concurrency-safe with transactional row locks, and added a janitor that reclaims OCR jobs stranded by a mid-process redeploy.
Receipt TrackerA real-physics multiplayer browser game inspired by SpaceX's Mechazilla booster catch. I implemented suicide-burn physics calibrated against public SpaceX data, real-time competition and a leaderboard on an authoritative Colyseus server, and Three.js WebGL rendering with nine camera modes and a bilingual EN/KO UI.
A sobriety commitment app where you stake real money and verify each day with a selfie check-in. I designed a non-custodial Stripe Connect flow that auto-donates the stake to charity on failure (the platform never holds funds), and built it as an Expo + Fastify monorepo with 313 tests and full CI.
A self-hosted image and video generation platform that uses Claude Code as an automated prompt engineer — turning Korean or English input into optimized prompts and ComfyUI API-format workflow JSON. I built the full multi-user layer around it: a sequential job queue, thumbnail pipeline, and a social gallery with likes and comments.
A Windows tray app for the TP-Link Kasa KL125 smart bulb. I drive the bulb directly over the LAN with python-kasa and built an Ambient mode that samples a selected monitor's dominant color in real time and mirrors it to the bulb — Philips Hue Sync for a single bulb. Built with PySide6 with multi-monitor selection, global hotkeys, a color-preset library, and a bilingual KO/EN UI; credentials live in Windows Credential Manager and it ships as a single-file EXE via PyInstaller.
A WW2 browser FPS/defense game holding the 1944 Normandy cliffs. I built a hybrid battlefield in Three.js — commanding infantry, operating tanks, helicopters and fighters, naval engagements, and an RTS-style supply-truck economy — with PeerJS-based P2P co-op multiplayer and a bilingual KO/EN UI, shipped as a single deployable HTML build.
Normandy Cliff DefenseA local tool that auto-transcribes piano performances from an audio file or a YouTube URL into sheet music (PDF/MusicXML) and MIDI. It extracts notes with a PyTorch piano-transcription model and renders scores through the MuseScore CLI, with a pipeline that still returns partial results when a conversion step fails.
A real-time, participatory web app inspired by the divergence meter in Steins;Gate. It pulls live news feeds from Reddit to nudge a shared world-line value, and lets visitors submit positive observations ("D-Mails") that pull the divergence toward its canonical attractor. I hand-built the nixie-tube / neon-CRT terminal UI.
Observer of LinesA local-business review-analysis SaaS: paste a Google Maps or Yelp URL and it scrapes the reviews, analyzes them with AI, and returns scores, keywords, and growth suggestions. I built the full stack — a FastAPI backend that scrapes with Playwright and analyzes with OpenAI, and a React frontend with a React Three Fiber 3D card UI.
GrowgleA web hub collecting several mini-games plus a standalone Socket.io multiplayer server. It serves five games built on different engines (2D Canvas, Babylon.js, CesiumJS, Three.js): an escape racer, a 3D survival world, a flight sim over real Earth, a desert drifter, and Fryffel Tower. Most recently I built a 3D fry-stacking game on cannon-es physics with real-time 2–4 player competitive multiplayer — each client simulates its own tower while the server relays heights and adjudicates best-of rounds — with pure logic under Vitest and the games under Playwright E2E, gated in GitHub Actions CI.
Mini Games HubA comedic PS2-retro construction-management game where a hot-tempered foreman bullies incompetent workers into raising a building. I designed a double-edged-sword loop — pushing workers boosts output but raises their rage, leading to slacking, sabotage, fleeing, or riots — with delegating AI managers (veteran/drill/vibe/intern), deterministic seeded RNG, and pure-logic unit tests. Built on build-free Three.js ESM with a PS2-style render pipeline (vertex snapping, dithering, fog), including a Story Mode (Act 1). Extracted from Mini Games into its own repo.
Tantrum TowerReleased public-data and developer-tool projects — RentRights (LA rent-control estimator for tenants), DevDeck (a command-deck desktop app for Claude Code projects), and TransitLA (car-free LA discovery on public transit).
Rapidly designed, built, and shipped web and mobile products — healframe (mental health), argus-fusion (real-time OSINT), zodiacly (horoscope), and minddump (emotional care).
Solo-built an AI sourcing assistant SaaS while preparing my own sourcing business. Developed web, desktop, and Chrome extension with Stripe billing and Shopify integration
Built a webcam-based habit-breaking desktop app driven by personal experience with trichotillomania. Real-time hand-to-face detection using MediaPipe Vision
Contributed to a multi-service e-commerce SaaS for online sellers — React frontend and NestJS backend, Shopify/Cafe24 marketplace integration, subscription billing, and OCR/AI image tooling.
The real problem with trichotillomania is that you don't notice your hand going up — so I built Don't Touch, a webcam app that catches the moment.
A breathalyzer, a friend, and a fine for every missed reading kept me sober once. Now I'm building it properly: a sobriety app that donates your stake if you fail.
It started with a library book and became an AI pipeline that can't miss a crisis signal. My hardest question building HealFrame isn't technical — it's about legitimacy.