Projects.
AI- and developer-facing things I've built outside the day job — shipped, in the wild, and still being polished.
Grapplay
AI-augmented community platform for jiu-jitsu.
Built and operate one of Korea's largest jiu-jitsu platforms — 500+ monthly active users, near-zero marketing spend — entirely as a solo full-stack engineer. The Next.js web app is live; Android and iOS Kotlin Multiplatform apps ship H2 2026. I run the whole stack as a one-person team and lean on AI harness engineering — evals, guardrails, tool sandboxes, and structured context pipelines — to keep LLM-driven workflows reliable as the product evolves.
Founder & Sole Engineer — 2024 to present.
Highlights
- 500+ monthly active users on near-zero marketing spend; the entire stack — Postgres/Supabase backend, REST APIs, web, mobile, CI/CD, payouts, analytics — run by one person.
- AI harness engineering invested up front: evals, guardrails, tool sandboxes, and structured context pipelines so LLM behavior in product stays reliable as models and prompts change.
- Direct line to a real developer-experience problem — I am the user, the integrator, and the operator, so I know first-hand which docs, SDKs, and abstractions are good and which ones make you give up at 11pm.
Stack
Cross-platform consumer app — Android & iOS, one codebase.
Gallr is a mobile-first guide to art exhibitions across Korea — featured picks, opening/closing this week, and a map view of every gallery. Designed, built, and released live on Google Play and the App Store from a single Compose Multiplatform codebase. The kind of polished, end-to-end sample-quality project I ship to show "here's what good looks like" — not a toy demo, a real product real users open.
Founder & Lead Engineer — 2024 to present.


Highlights
- Single Kotlin codebase ships to Android and iOS via Compose Multiplatform, including a Naver Maps `UIKitView` interop for the iOS map.
- Owned end-to-end: discovery, store assets, release pipeline, and post-launch iteration across both platforms.
- Bilingual KO/EN data pipeline with a sheet-to-Supabase sync job; new schema columns are deploy-safe through an explicit known-columns contract.
- Reductionist monochrome design system — compile-time Kotlin design tokens, custom typography, and a tight component vocabulary.