Inspiration
Korean everyday notices are full of decisions: what to do, by when, how much it costs, and what to bring. For foreign residents, translating every sentence still does not reliably answer those questions. K-Notice began with a simple idea: a notice should become a plan you can trust, not just another block of translated text.
What it does
K-Notice turns Korean apartment, daycare, school, hospital, utility, and government notices into clear action plans. Users can paste Korean text or take a photo. OCR runs on the device, so the original photo never leaves it; registration-number patterns are masked before recognized text is sent for analysis.
The result highlights:
- what to do and by when
- fees and items to prepare
- important warnings and unclear details
- a Korean inquiry message the user can copy
- the exact Korean sentence supporting every extracted item
That last point is the core: every action, fee, item, and event must cite an exact substring from the source notice. Unsupported claims are dropped and surfaced as warnings.
How we built it
The live web experience uses Astro on Cloudflare Pages, with a Cloudflare Worker, D1, Workers AI, and in-browser Tesseract.js OCR.
For the mobile and higher-quality pipeline, we built a Flutter app backed by a NestJS service on AWS EC2 in Seoul. The service runs OpenAI Codex in an ephemeral, read-only sandbox and forces output through a JSON Schema. A second server-side validation pass checks both the schema and every evidence quote before returning the result. PostgreSQL provides an asynchronous job queue with FOR UPDATE SKIP LOCKED, while Caddy handles TLS and reverse proxying.
The analyzer sits behind a stable interface, so the current Codex-based Build Week pipeline can move to the OpenAI API for public scale without changing the product contract.
Challenges we ran into
The hardest problem was not translation quality—it was trust. A fluent answer is dangerous if it invents a deadline, fee, or requirement. We designed evidence validation as a hard product invariant and made provenance visible in the interface through matching evidence indices and highlights.
We also had to keep privacy promises compatible with a useful photo workflow. That led us to on-device OCR, local masking, text-only server analysis, deletable history, and local-only reminders.
Finally, asynchronous Codex execution required careful isolation, timeouts, concurrency control, and failure handling so one slow analysis could not compromise the queue.
Accomplishments that we're proud of
- A live web product that gets users from a Korean notice to an actionable plan
- A deployed Codex analysis pipeline with schema-forced output and evidence verification
- On-device OCR and privacy-preserving text handling
- Multilingual results in English, Japanese, Chinese, Korean, and Vietnamese
- A document-inspired interface where the notice visibly becomes a plan
What we learned
The most important lesson was that provenance can be the product experience, not a technical footnote. Showing exactly where each action came from makes AI output easier to verify and more useful under real-world stress.
We also learned that strict schemas, deterministic post-validation, and a narrow product promise create more value than a broad assistant that tries to answer everything.
What's next for K-Notice
Next we will release the Android app, connect the premium-quality analyzer through the OpenAI API for public-scale use, and continue improving OCR review and evidence highlighting. The scope stays focused: one Korean notice in, one trustworthy action plan out.
Built With
- astro
- aws-ec2
- caddy
- cloudflare-d1
- cloudflare-pages
- cloudflare-workers
- docker
- flutter
- google-ml-kit
- nestjs
- openai-codex
- postgresql
- tesseract.js
- typescript
- workers-ai
Log in or sign up for Devpost to join the conversation.