Keugene Lee

Software engineer building AI-powered products.

Open for freelance & contract work — reach out below.

Projects

An AI agent that runs your job search end to end: it finds openings across 20,000+ company career pages, scores how well you fit, answers every application question, and submits from your own browser.

  • Crawls Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable and Recruitee through their public job APIs, 390,000+ open US and remote roles across 20,000+ boards, closing roles by id diff rather than timestamps and skipping the write entirely when a board's listing fingerprint hasn't changed
  • Two-stage matching: a SQL prefilter and a batched LLM rank on title and location, then a deep score against the full description with reasons, gaps, and hard caps when you miss a real requirement. Your resume goes out exactly as you uploaded it
  • A Chrome extension sends approved applications hands-off from pinned background tabs in a real browser, since Greenhouse, Lever and Ashby bot-score every submit, with exclusive server-side claims so nothing sends twice. A Workday driver keyed on data-automation-id creates per-employer accounts with AES-256-GCM-encrypted credentials, verifies them through Gmail and walks the multi-step wizard.
  • Answers you can trust: deterministic rules decide sponsorship, work authorization, self-ID and conflict-of-interest questions before any model sees them, and a second model proofreads every application against your profile before it leaves, flipping anything that contradicts it. Every question and answer is logged and searchable
  • When a send fails it is triaged, not blindly retried: the fields the form rejected are re-answered and resent, and repeated failures with one signature pause that job site until a fixed extension version checks in. Employer receipts are matched from Gmail every five minutes, so you can see which applications a company has confirmed
  • A fast lane re-crawls the 1,800 boards that actually produce roles worth applying to every five minutes and applies on arrival, which cut the median age of a job at application time from 13 days to under an hour. Autopilot still owns the limits: one application per employer a month, plan and daily caps, under a cent of model cost per application
Next.js 16React 19TypeScriptNeon PostgresOpenRouterPlaywrightChrome Extension (MV3)Gmail APIStripeTailwind CSS
understudy.live

A desktop app for running many Claude Code agents in parallel: give each tab its own task, in one project or across several, and move between them while they work instead of waiting on a single terminal. Projects run down the left, each one's Claude tabs across the top

  • Shows at a glance which agents need you: Claude Code's own hooks report every turn, so a tab gets an amber spinning ring while its agent works and a blue check when it finishes or asks for input, and the project list carries the same marks, so an agent that finished in another project isn't missed. Colour, shape and motion all differ, so the two states read apart with colour blindness
  • Starts ready for parallel work: launching reopens the last project with three Claude tabs already running, another is one shortcut away, and the sidebar counts how many sessions each project has open. Windows kills terminals spawned in the same instant, so tabs opened together are started 400 ms apart
  • Real terminals, not a chat wrapper: xterm.js on node-pty with truecolor, copy/paste and font sizing, each tab spawning Claude Code in its project's folder, with PowerShell tabs beside them
  • Keyboard-first so hopping between agents is instant: Ctrl+Tab cycles, Ctrl+1 to 9 jumps straight to a tab, Ctrl+Shift+P searches projects, and typing a project name that doesn't exist creates the folder and runs git init
  • Plain HTML, CSS and JS with no framework or bundler, packed with electron-packager and installed by a script that writes its own Desktop and Start menu shortcuts
Electronxterm.jsnode-ptyJavaScriptClaude Code
Deck with four Claude Code tabs open, one mid-task

A personal AI agent — Claude Code for your life. Your first chat is an interview that builds a long-term memory of you; from then on the agent goes and does things: researches the web, finds places on Google Maps, checks weather and events, drafts messages, manages goals and tasks, and runs recurring routines you approve first

  • Looks and works like Claude Code in a terminal: a monospace transcript of ● Tool(args) and └ result lines, a thinking spinner with live “Thought for Ns” timing, slash commands, light and dark themes, and effort modes from Fast to Standard, Deep and Marathon. No landing page — visitors land straight in the chat, and signing in runs the message they already typed
  • A durable run engine so a task can run for up to 45 minutes on 300-second serverless functions: every run is a Postgres row, advanced by chained, lease-based worker invocations with crash recovery and streamed to the client over SSE. Parallel sub-agents run as child runs that wake the parent when they finish
  • Inference routed across open-weight models — GLM-5.3-Flash via OpenRouter, then DeepSeek, then Groq — with rate-limit-aware retries and per-call cost tracking, so one provider hitting its limit doesn't stop a run
  • iOS and Android apps through a Capacitor shell with native Sign in with Apple, Google sign-in, APNs push, haptics and Whisper voice input — built and signed in GitHub Actions, with TestFlight and Play internal testing builds uploaded
  • Free and Pro plans ($20/month or $100/year) billed through Stripe on the web, StoreKit 2 on iOS and Play Billing on Android, with every purchase verified server-side instead of through RevenueCat — plus App Store privacy compliance, including explicit AI data-sharing consent enforced on the server
Next.js 16React 19TypeScriptNeonOpenRouterGroqCapacitorStripeStoreKit 2WhisperTailwind CSS
tarrow.vercel.app

AI music discovery app — enter a song you love and an LLM builds a playlist of tracks you'll actually want to hear, each with an explanation of why

  • The model weighs genre, vibe, and sonic qualities using Last.fm, TasteDive, and ListenBrainz to match energy and mood, not just genre
  • Every recommendation is cross-verified on YouTube and Last.fm so every song is real and playable
  • Spotify-style playlist player with a now-playing bar, autoplay, and like/dislike feedback that shapes future recommendations
Next.js 16TypeScriptOpenRouterGemini Flash-LiteSupabaseTailwind CSSYouTube Data APILast.fm API
soundsense.vercel.app

The Facebook for Stony Brook University — a social network where verified @stonybrook.edu students find classmates, connect by dorm, and stay in the loop, with 50+ registered users

  • Full profile system with major, dorm, courses, Greek life, clubs, privacy controls, and profile-view tracking
  • Wall posts with photo/video uploads, likes, threaded comments, friend requests, pokes, groups, and direct messaging
  • Defense-in-depth security enforced in Postgres row-level security: email-gated signup, per-IP rate limiting, bot-pattern detection, and owner-protection policies — every privacy rule lives in the database, not the app
Next.js 16React 19TypeScriptSupabaseTailwind CSSGoogle OAuth

AI-powered day planner that turns a city and budget into a complete itinerary, pulling live data from Google Places, weather, transit, events, and more

  • Backend calls every relevant tool in parallel, then Gemini Flash-Lite (via OpenRouter) synthesizes the results into real venues with prices, clickable Google Maps links, and an interactive map
  • Watch the plan build live via Server-Sent Events, with a nightlife mode for evening plans and weather-based outfit suggestions
  • Supabase auth with cloud-synced plan history
ReactViteExpressTypeScriptOpenRouterGemini Flash-LiteSupabaseGoogle Places API
getdaily.live

Skills

Languages
JavaScriptTypeScriptSQL
Frontend
ReactNext.jsTailwind CSSVite
Backend
Node.jsExpressPostgreSQLFirebase
APIs & AI
Claude APIOpenRouterOpenAI APIVercel AI SDKStripe APIGoogle Places API
Tools
GitVercelSupabaseCapacitorClaude Code