Ethan Tan
Solo developer building products end to end. I’m a current CS student at Case Western Reserve University, graduating May 2027, and open to new-grad SWE roles anywhere in the US.
Projects
Gamertaggd
Letterboxd and Strava for games, built and shipped solo: an iOS app, its API, a website and a Windows tracker. Live on the App Store since September 2026.
Why this
I track a lot of my life: workouts on Strava, films on Letterboxd. Games had nothing. When friends, or strangers, get competitive about games, we compare how many we've played, on what, how many we've 100%'d and how many hours we've sunk in, and nobody actually knows. So I built the app I wanted in my pocket: one true record of everything I play that I can pull up and show someone, and that uses the same data to tell me what to play next when I'm in a slump.
Key decisions
- One record across every store. Steam, Epic and GOG all number the same game differently, so everything is keyed on one catalog (IGDB). Hours from your PC and a rating from your phone add up on the same game.
- Automatic logging. Start a game on Steam and Gamertaggd picks it up and times the session live on your iPhone Lock Screen. For games that don't track their own playtime, a small Windows tracker logs it for you, even offline. Hours were the number nobody knew, so you never have to type them in.
- Your whole library in one tap. An empty app is a dead app, so the first thing you can do is import your whole Steam library in one tap. Imports run as jobs that retry safely, so a big library never half-imports or duplicates.
- Made to be shown. The point is pulling it up for someone. Blends, which compare your taste with a friend's, and recaps are shareable links that open as a proper preview in any chat, no app needed.
- What to play next, from your own games. The backlog planner suggests games you already own based on your mood, and AI-built lists can only pick real games, so a suggestion is always something you can actually play.
Gamertaggd on the App Store · gamertag.gd · GitHub
Salience
A Fortnite auto-clipper built by a competitive gamer for competitive gamers: it keeps the clips you would have kept.
Why this
Clipping a moment always pulled me out of it. Hitting a hotkey or saying “clip that” meant stepping out of a funny moment with friends, out of the immersion of the game, or out of flow in the middle of a hard play. It’s like carrying a camera everywhere, waiting for the right shot instead of living the moment.
So Salience does the watching for me. It records in the background and looks back over every moment once the match is over, so I can just play. It also had to beat the usual triggers: when I measured them on my own footage, a live trigger caught only 5 of the 15 moments I actually kept. And a good clip is personal, so it learns what you keep.
I’m a competitive gamer and a former budget gamer with a potato PC, so performance was everything. Squeezing every last frame out of a new PC was a ritual, and at some point I realised part of what I was fighting was bloatware: software quietly slowing the hardware down. So Salience had one rule: you should never notice it’s running while you play.
Key decisions
- Invisible while you play. Recording runs on the graphics card’s built-in video encoder, at about 3% of one CPU core (my first version took 63–112%). Every bit of analysis waits until the game closes, because doing it live cost about 11 fps, and no competitive player gives up 11 fps.
- Look at everything, not just triggers. A vision model describes every 8-second window for about $0.003 each, chosen from 8 models at 1/20 the price of the best.
- Your taste, measured. A model trained on your keep/skip ratings puts 97.4% of kept/skipped pairs in the right order.
- Keep data local. Only gameplay frames leave the PC. Audio, transcripts, inputs and ratings stay on it.
- No game hooks. Capture uses the same Windows APIs as any screen recorder, so anti-cheat sees nothing unusual, and there’s no OBS to set up.
Experience
- Gamertaggd, Founder & Product Engineer (Jun 2026 – present): built and launched a social game-tracking iOS app; designed Blend, a taste-matching algorithm for groups; added subscriptions with a free-trial A/B test; extended tracking to PC with a Rust + Tauri Windows app.
- Handshake AI Fellowship, RLHF Model Evaluator (May 2026 – present): wrote adversarial prompts to find where language models fail at multi-step tasks, and ranked responses to produce human preference data.
- SearchOwl, Backend Engineer Intern (Mar – Aug 2024): built sign-in for 250+ users on AWS Cognito, replaced manual account creation with one-click OAuth, and built the GraphQL API for account data on AWS Amplify and DynamoDB.
- Massage Chair MCP Controller (Jun – Jul 2026): reverse-engineered an undocumented Bluetooth LE protocol and exposed the chair as Model Context Protocol tools.
- CYMKO & The Chimera of Antarctica (Apr – Dec 2024): 3rd Most Innovative Game at the ECSE 390 Game Jam; built collision and sound systems and led the team.
Case Western Reserve University: B.A. Computer Science, minors in Japanese and Computer Gaming, graduating May 2027.
Languages: Python, TypeScript, JavaScript, Java, C#, Rust, SQL. Frameworks and tools: React, React Native, Expo, Next.js, Node.js, FastAPI, GraphQL, Tauri, PyTorch, FFmpeg, Unity, Docker, AWS, PostgreSQL, Supabase.
Off the clock
Off the clock, I enjoy going to the gym for powerlifting and bodybuilding. I love playing video games and also make games on the side, and I like to get my hands dirty building PCs. The rest of the time, I enjoy shooting content, editing videos, travelling and learning new languages like Japanese! I believe technology is a vessel for documentation, which is why I create content, use apps like Letterboxd and Strava, and build apps like Gamertaggd.
Video editing: YouTube. Gaming: currently playing Fortnite. Making games: itch.io. Japanese: N4 level. Bodybuilding: going for a bench PR.
Contact
Open to new-grad software engineering roles from summer 2027, anywhere in the US. Based in Cleveland, open to relocating.