Things I'm building
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), evidence-based peer support circles, Stripe billing, and an Android build via Capacitor — solo full-stack across web and mobile.
A 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 — a Three.js 3D globe, a cyber-vulnerability board, and satellite/orbital tracking.
An 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.
A 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 AI horoscope platform I built for the US and Latin American market. It computes real planetary positions with astronomy-engine and statically generates zodiac, compatibility, and weekly/monthly horoscope pages in a six-language SEO architecture designed to capture organic traffic.
A 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, deployed through a GitHub Actions CI/CD pipeline on Docker.
A 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 local web studio that automates voice cloning — pick a speaker from any video and it fine-tunes a GPT-SoVITS v4 model end to end. I collapsed a scattered set of scripts (vocal separation, diarization, clustering, transcription, training) into a single one-click pipeline orchestrated by a GPU job queue.
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.