Live product
JobHunterKR
Problem
Korea's postings are spread across dozens of boards and career pages, mostly Korean-only, and the biggest boards forbid collection. 88% of employers publish only a Korean name, so searching "kakao" or "samsung" in English finds almost nothing, and every board uses its own categories.
What broke
Supabase returns at most 1,000 rows per request, with no error.
Ingest read stored listings in one request and saw 1,000 of 5,808, so postings taken down outside that window never counted as missing: 1,229 dead links stayed open, and the alert matcher skipped 76% of new jobs the same way. Paging every read fixed it; the first run after closed 57 stale postings.
Approach
11 permitted sources (Linkareer, Jumpit, KOWORK, K-Campus, GreetingHR, Ninehire, Greenhouse/Lever/Ashby, Kakao, NAVER, LINE, 알바몬) are collected hourly into Postgres; the rest are deep links. One taxonomy for all of them (20 fields, 17 provinces, level, years, contract, language); every Korean title shown in English beside the original; employer aliases let English search reach Korean-only names. Saved searches alert within minutes by email or Telegram, driven by pg_cron.
Stack Next.js · Supabase (Postgres, Auth) · pg_cron · Netlify Functions · Resend · Vitest
Next project →Hannim