Korea publishes a lot of government subsidies. Local housing support, youth programs, childcare benefits, energy rebates, and so on. The information is public, but it is scattered across dozens of government pages, and each page has its own format and its own conditions.
So I built ideukcheck.com. You answer four questions, and it tells you which programs you are eligible for right now.
How it works
The four questions are where you live, your birth year, your current situation, and your annual income. That is enough to check most eligibility rules, because almost every Korean government program is gated on income (as a percentage of the median income for your household size), age, household composition, and employment status.
The matching runs entirely in your browser. Your answers are never sent to a server. They stay in localStorage on your own device, so nothing identifies you and nothing is stored on my side. The only network request is the page itself.
The benefit data comes from the public government24 portal. Every rule I use has a source link and a date when a human last checked it against the original announcement, and that date is shown on the benefit page. When a program closes or its conditions change, the entry stops being offered rather than quietly giving wrong answers.
What was harder than expected
The income thresholds are published as percentages of the median income, and the median income changes every year. In 2027 the threshold for a one-person household rises from 2,564,238 won to 2,736,042 won. Any rule written as 'income is at most 60 percent of the median' therefore shifts every year even though the program text does not change.
The second problem is that the percentages are not round numbers. One line in my rule set was 62.4 percent, which lands inside a range instead of on its edge, and a threshold sitting inside a range splits that range into two outcomes. I ended up computing the threshold in whole won and rounding only for display, so a displayed label never disagrees with the calculation that produced it.
The third problem was worse than a data problem. Some programs have age exceptions, such as shared-housing loans that let a single household head under 30 qualify under extra conditions, but the exception is written across two sentences in the original notice. If I only read the first sentence, a 19-year-old single renter passes the check when they should fail. Reading policy text carefully turned out to be most of the work.
The stack
Next.js 16 with the App Router, React 19, Bun as the runtime and script runner, and Biome for linting. Deployment is a Vercel webhook fired by GitHub Actions on push to main. The eligibility engine is a pure TypeScript module with no framework dependency, which is what made it possible to unit test rules like the income-band boundaries above.
What I did not build
I did not build an AI assistant that answers benefit questions. Eligibility is a set of deterministic comparisons, and deterministic comparisons can be tested against known cases. A language model would make the answers harder to trust and impossible to reproduce.
I also did not add a signup or an account. There was no need for one, and not having one removes a whole category of privacy questions.
Try it
If you live in Korea, the site is at ideukcheck.com. It is in Korean, so please tell me if something is unclear to you as a non-Korean reader.
Two questions I would like answered by anyone reading this: which subsidies do you think I am missing, and did any answer on the site look wrong to you? Both go to the same place and I read every one.
Top comments (0)