Timothy Park

Practice

Fullstack software engineer.
Currently making things for people learning Korean.

Locale

San Francisco, CA

Statement

I’m a fullstack engineer living in San Francisco. For four years I worked on merchant onboarding at Square. These days I’m on my own, building software for people learning Korean: three apps so far, each picking at a different part of the same problem.

The work is opinionated, motivated by my own frustrations as a learner, and mostly built with Next.js, Supabase, and whichever model is best for the job. Scroll down for more details on what I’ve built.

Selected Work

Comprehensible InputQ1 2026100–200 monthly users

bwabwa.tv

Visitbwabwa.tv

A streaming service for Korean learners following the comprehensible input method — natural speech, native captions, no whiteboards. Videos are ranked by a personalized comprehensibility score derived from the lemmas a user has already encountered, so the next thing you watch is, on purpose, just a little harder than the last.

A Python ingestion worker pulls creator-captioned videos with yt-dlp, classifies them as immersion or lesson content with Gemini, and tokenizes the transcripts with kiwipiepy down to lemmas and POS tags.

The frontend tracks every lemma a user is exposed to across 10k+ tokens per video, recomputes familiarity in real time, and surfaces videos in the 80–90% Goldilocks zone.

A self-healing NLP layer flags slang and compound words the dictionary misses, and a small admin console retriggers ingestion when a channel drifts.

Spaced Repetition2025400–500 monthly users

ContextCards

Visitcontextcards.app

Generic flashcard apps teach the card, not the word. ContextCards generates new contextual sentences and native audio for every vocabulary item you add, and schedules reviews with FSRS so the next one shows up at exactly the right moment to be useful.

Each card is anchored to a unique dictionary entry and a definition embedding. New definitions are matched against existing sentences with pgvector cosine similarity, so good content gets reused across decks and cache hit rates hold above 30%.

On a miss, Gemini drafts a beginner-appropriate Korean sentence that uses the term in grammatical context, and Google Cloud TTS produces a 0.8× audio file for clarity.

Bulk TSV imports run through PGMQ in batches of 25 with live progress over Supabase Realtime; the same backend serves a web app and an Expo mobile app.

Drill2025200–300 monthly users

Count in Korean

Visitcountinkorean.com

Korean has two number systems — Sino-Korean for money and dates, Native Korean for age and counting — and most learners gloss over the rules until they’re standing in front of a cashier. This is a drill app for those rules, with five modes and a sixty-second time trial.

Zero database, zero network calls. Every Hangul string is generated algorithmically: powers of 10,000 for Sino-Korean, decade maps for Native Korean, irregular hours (한·두·세·네·스무) for time.

A logarithmic dual-thumb slider snaps to significant-figure jumps from 1 to 10 billion, and a guide overlay annotates each digit block with 만/억/천/백/십 brackets.

Time Trial scores by character length so a long counting phrase isn’t worth the same as a short one — and the top five scores live in localStorage with a screenshottable result card.

Experience

2017 — 2021

Block,
Inc.

Senior Fullstack Engineer
San Francisco

  • Redesigned the merchant onboarding architecture as a microservice ecosystem so a single team could ship for four sets of regulators (US, UK, JP, FR) without forking the codebase every quarter.

  • Owned the onboarding web experience responsible for > 40% of all Square sign-ups and 100% of regulatory approvals for every Square merchant — collecting and verifying the information each jurisdiction required.

  • Built the onboarding flow that unlocked e-money for Japanese merchants, a payment method used by more than 30% of consumers in the country.

  • Shipped Transferable Ownership, letting a new operator legally assume an existing business and reducing the churn from owners who would otherwise start over from scratch.

  • Pushed a multi-quarter tech-debt cleanup that took on-call from 20–30 pages and ~4 SEVs a month down to 5–10 pages and ~1 incident.

Background

Education

University of California,
Irvine

B.S. in Computer Science

Graduated 2016

Tools of the Trade

Languages

JavaScript·TypeScript·Ruby· Python

Frameworks

React·Next.js·Node.js·Ruby on Rails·Supabase

With

Claude Code·Gemini

Selected Reading

Books I return to. In no particular order.

Get in Touch

© 2026 Timothy Park