Available for internships · Irvine, CA

Yeonguk Lee — Software engineer
building real products.

I build end-to-end — from database to pixel. Currently leading backend on CLIR, a food safety app shipping this quarter. Previously built a 6-agent AI platform that makes Flutter apps from natural language, and shipped 4 production mobile apps.

5+ shipped products
2 team projects led
60% API cost cut via caching
1 wk idea → FlowCraft live
// Featured work 01 / 07
● Shipped Team · G-PBL WORK_01

CLIR

Personalized food safety. Scan any product — know instantly if it matches your allergies, dietary restrictions, or health profile.

Every scan triggered an AI call for ingredient analysis. At realistic scale, this breaks the cost model — and makes users wait on every single repeat scan of the same product.

Designed a 3-layer caching strategy: TanStack Query client-side, product-level cache in PostgreSQL, and Claude prompt caching server-side. Repeat scans are free. New products cost 60% less.

~60%AI API cost reduction
0msLatency on cached scans
Backend leadAPI, DB, caching, auth
★ Featured · Agentic AI Solo build WORK_02
FlowCraft logo

FlowCraft

Describe an app in plain English. A multi-agent AI pipeline builds it as a working Flutter app — with live preview.

// Multi-agent pipeline
how it looks what to build structure + design blueprint → flutter Clarifier what does the user want? Design Agent colors · spacing typography · theme Structure Agent screens · widgets state · logic Merger unified AppState JSON Code Generator → runnable flutter app
FlowCraft
Preview
FlowCraft IDE — chat, generated Flutter code, live preview
FlowCraft chat interface — natural language to app

LLMs that generate code directly are fragile and break on every revision. A "make this button blue" request shouldn't require regenerating the whole app — but most AI codegen tools do exactly that.

Designed agents to manipulate a structured AppState JSON instead of raw code, with specialized roles (Clarify · Design · Structure · Merge · Generate). Code is the output, not the medium — making revisions stable, diff-able, and inspectable.

1 weekIdea → architecture → live deploy
5 agentsSpecialized, single-responsibility
JSON-firstStable revisions, no full regen
● Shipped Team · Kernel360 WORK_03
GPSTracker logo

GPSTracker

Fleet management dashboard. Track vehicles in real time, replay routes on a map, and manage the full vehicle lifecycle.

gpstracker.poiurity.com / fleet
GPSTracker live demo - real-time vehicle tracking
Route replay on map Route replay
Trip log table Trip log
Fleet management Fleet CRUD
Login page Auth

A fleet operator dashboard needs live position updates, historical playback, and full CRUD on vehicles — and the frontend had to be developed in parallel with a backend that didn't exist yet.

Built a mock-API-first frontend with MSW so development was fully decoupled from backend readiness. Zustand for global state, TanStack Query for server cache, Recharts + Kakao Map SDK for visualization. CI/CD with Docker + Jenkins.

5+Major screens shipped
0 blockersDecoupled from backend via MSW
CI/CDDocker + Jenkins pipeline
Building · live this quarter Solo build WORK_04

LiveTrack

Real-time group location sharing — with post-session analytics. Built for hikers, road-trippers, and field teams.

// System architecture
ws:// bidirectional geo queries verify token Hetzner VPS · Docker Compose Mobile clients React Native (Expo) react-native-maps Zustand · Victory Native Firebase Auth JWT identity provider WebSocket hub Node.js + Fastify ws library room broadcast Database PostgreSQL + PostGIS on Neon (serverless) geospatial indices live phase in-memory broadcast · sub-second latency post-session heatmap · route replay · stats
// WebSocket message protocol
User A Server User B connect + auth(jwt) connection_ack join_room { roomId } room_state (members) location_update {lat, lng, t} location_broadcast → persist → PostGIS (async, batched) all messages JSON-enveloped: { type, payload, t }

Most "share location" apps either show stale dots updated every minute, or rely on managed real-time services that hide what's actually happening on the wire.

Building a custom WebSocket server with explicit message protocol, in-memory room state for sub-second broadcast, and async batch persistence to PostGIS. Designed to learn the systems, not abstract them away.

Sub-secLive broadcast latency target
Full stackOwned: protocol → DB → mobile
PostGISGeospatial replay + heatmap
● Live · petageai.com Project lead WORK_05
PetAge AI logo

PetAge AI

Upload a pet photo. Get its estimated age in human years — powered by a custom-trained vision model.

Live at petageai.com

Your pet has a secret age.

Trained EfficientNet-B0, served via FastAPI, deployed in days — not weeks.

PetAge AI result screen — 34 years old in human years
PetAge AI landing page with photo upload Landing
PetAge AI onboarding modal explaining the service Onboarding

Build a full ML pipeline — train a model, serve inference, wire up a frontend, and deploy publicly — as a student team without ML infrastructure budget.

Trained EfficientNet-B0 in PyTorch, exported to ONNX for fast CPU inference. Wrapped with FastAPI, paired with a Flutter client and Supabase + Cloudflare R2 for storage. Led the team end-to-end.

LivePublic site at petageai.com
Custom modelTrained, exported, deployed
Team leadPlanning + technical direction
● Shipped Team · Alpha Project WORK_06
Conever logo

Conever

Plan trips with AI — together with your travel companions, in real time.

01 Plan
Conever home — upcoming trips with countdown
D-day countdown for upcoming trips
02 Discover
Conever AI route recommendation by location
Gemini-powered route suggestions
03 Locate
Conever Naver Maps integration to add places
Native maps integration via Naver SDK
04 Collaborate
Conever shared trip plan with travel companions
Real-time sync via WebSocket

Group trip planning today means jumping between maps, messengers, and recommendation sites — context gets lost and friends fall out of sync.

Built one app that integrates Gemini for AI route generation, Naver Maps for native location search, and WebSocket for real-time multi-user sync — wrapped in GetX MVVM with a resilient async API layer.

4 systemsAI, Maps, Auth, real-time sync
Multi-userLive trip collaboration via WebSocket
ResilientRetry + error layer on every API
● Shipped Hackathon · 5-person team WORK_07
Danzam logo

Danzam

Caffeine in, sleep out. Track your intake and predict the perfect time to fall asleep — based on your body chemistry.

🏆
Excellence Award COKOTHON 4th — cross-university hackathon
Danzam main dashboard - caffeine remaining 78.6% Dashboard
Danzam personalization - body profile input Profile
Danzam weekly caffeine statistics Stats
Danzam sleep summary with quality rating Sleep

Generic caffeine trackers ignore that everyone metabolizes caffeine differently — by weight, age, sex, smoking status, medication.

Modeled caffeine half-life decay personalized to body profile, then projected the curve forward to estimate the optimal sleep window. Built end-to-end in 36-hour hackathon sprint.

🏆 1st cohortExcellence Award winner
36 hrsConcept to working app
5-personCross-university team