Yoonbo Cho

AI engineer. I build LLM products where the privacy rules live in code, not in a policy doc: de-identification before any model sees a record, retrieval that stays on the device, and local models where the data shouldn’t travel.

Open to AI engineering roles (remote, US). Resume · yoonbocho1@gmail.com

Writing

Arbiter

Project page · arbiterai.tech · code · prototype · synthetic data only

Now a records agent that runs under a written policy: 23 rules, each citing the HIPAA section, state law or measured failure behind it, enforced in code and named on every audit row. It refuses non-permitted uses, keeps psychotherapy and substance-use records out without consent, never makes coverage decisions, and passes 8 of 8 policy scenarios on a local model. The findings are published at arbiterai.tech as sourced reads, a 95-date AI-law tracker, and 15 safe practices other teams can drop into their agents.

A HIPAA-oriented RAG system for clinical documents, built as a prototype and tested on synthetic records only. No real patients and no compliance claim. It has one rule, enforced in code: nothing reaches a model until the document is marked de-identified.

Documents are scrubbed with Presidio before indexing (FastAPI, Redis Streams, LangGraph, Postgres with pgvector). The map back to the original identifiers is encrypted per tenant and never enters the vector index. Row-level security sits on every table holding PHI, and cross-tenant probes prove it: during bring-up the services were connecting as the Postgres superuser, which bypasses row-level security entirely, so the policies existed and applied to nothing.

The eval harness caught its own flattering metric. Recall read 0.967 while ZIP codes survived in 14 of 20 documents, because the metric matched whole strings. A per-component metric and new recognizers took it to 1.000, and answer accuracy went from 23/40 to 38/40 in four measured iterations. Answers are rejected on an identifier leak, a missing citation, or low faithfulness, and the leak check on the way out uses the same threshold as the scrub on the way in.

Everblue

Project page · everblue.me · live on the App Store · built and operated solo

An AI journaling app. People write about their lives in it, so I treat its privacy copy as a technical claim that has to be backed by something.

The journal is stored on the phone, and so is retrieval: MiniLM embeddings through ONNX, BM25 and recency decay in SQLite. The index and the embeddings never leave the device. The companion has also run entirely on Apple’s on-device Foundation Models. What does leave, chat and photos the user adds, is listed exactly: photos pass an on-device sensitive-content check and are EXIF-stripped first, and the backend passes requests along without keeping them.

Provider data retention is account configuration, not code, so the code doesn’t pretend. A flag for zero-data-retention routing stays off until the routing is verified, and the app reads its privacy wording from a backend endpoint that reports the real posture, falling back to the cautious version.

Every prompt change goes through an eval harness that runs the production pipeline on synthetic days: a 92% bar on generation quality and 100% on no-fabrication. A companion that invents a memory is worse than no journal at all.

tickatap

tickatap.com · live · built and operated solo

A group going-out planner. The host picks a day, each friend taps what they’re into from a board of real events and places, and the plan builds itself when the last person finishes. Friends can vote on a shared night through one link, no account needed.

The board is fed by a daily curation agent. Page extraction runs on a local 14B model that I chose by measuring two candidates on the same real pages (11 clean events in 968 tokens, against 3 truncated events in 3,117 from a 26B model), so page text never leaves my machine for that step. The planner treats web text as untrusted data, and every stop the model proposes is checked in code against real records before anyone sees it.

Analytics are first-party and minimal: no user id, IP or free text, and any parameter not declared in the event schema is dropped before it reaches a third party. Under it is a TypeScript monorepo (Fastify, Next.js 15, Expo, Postgres) with 3,682 tests that run with no database, network or vendor keys.

A View From My Seat

Senior Developer · Nov 2024 – Jul 2026

A sports and venue platform with 1.2 million monthly active users. I owned native iOS and Android end to end: 80+ releases, feature parity throughout. I rebuilt the maps feature and cut its server costs with caching, reworked every seating chart on the platform as optimized SVG, and shipped vision moderation for seat-view photos.

I also automated the seating-chart ingestion pipeline that publishes charts to client websites; a teammate reported it saved a full day of work per chart.

Earlier

Jibbr 2024
An OpenAI-powered conversation coach: interest-tailored prompts and actionable soft-skills feedback.
+Luv 2022
A couples app, shipped to the App Store and Google Play. Real-time WebSocket chat, drawing notes, photo sharing, OpenAI-generated prompts, subscriptions.
Fabspeed Motorsport 2022
Launched wholesale.fabspeed.com, raised site conversion with heatmap-driven UX changes, built React tools for bulk product updates, and wrote Python scrapers pulling Google and Yelp reviews at scale.

Get in touch

If your team puts sensitive data near LLMs, or builds on-device or local-model AI, I’d like to compare notes. Email yoonbocho1@gmail.com or message me on LinkedIn.