I build agent and retrieval systems that have to survive contact with production — reproducible, auditable, and cheap enough to run every day. LLM agent platforms, the retrieval underneath them, and the evaluation harnesses that keep both honest.
Deepest in Korean-language pipelines, where the tokenizer, the morphology, and the benchmarks are each their own problem.
Deterministic first. If a morphological analyzer, a rule, or a lookup table can do the job, it doesn't get an LLM call. Reproducible beats clever, and it stays explainable to whoever has to sign off on the output.
Design from the constraint inward. A masking rule that isn't sure has to block, not guess. A pipeline that has to be auditable can't have an LLM sitting in the middle of it. Write the hard limit down first and most of the architecture answers itself — no grey-zone default like score=0.7, passed=True survives the exercise.
Measure, or it didn't happen. Golden set and holdout eval before the change, regression gate after. I publish the runs that lost, too — a negative result I can trust is worth more than a benchmark I can't reproduce.
Ship the boring interface. Zero core dependencies, injected providers, opt-in extras. Someone else should be able to adopt one piece without adopting all of it.
| Project | What it is | Notable |
|---|---|---|
| xgen-ontokit | Deterministic Korean ontology & hierarchy extraction — no LLM anywhere in the build path | KLUE-RE holdout F1 0.6274 · 489-doc corpus in 4.5s / $0 · zero core deps · provenance down to the triple |
| PromptTailor | Rewrites underspecified prompts to fit the target model's profile | Model profiles as data, not prompt strings · clarity gate skips already-clear input · ships its own negative result (lost 3–0 on already-clear tasks) |
Closed-source, so no links — but it's where most of the hours go.
| Agent & workflow platform | A multi-service platform — Rust gateway in front of Python services, a shared SDK kernel across all of them, and a workflow node system teams build on. Most of my week is spent on the contracts between those services, where a quiet break costs the most. |
| PII & guardrails | Span-level masking for regulated-industry documents. Rules for guaranteed coverage, NER models for the context rules can't see — and the two measured against each other rather than assumed complementary. |
| Distillation & self-hosted serving | Own-GPU serving with on-demand model loading; distilling task models small enough that inference stops being the line item anyone argues about. |
| Eval infrastructure | Golden sets, holdout scoring, and regression gates for LLM pipelines, so "it got better" is a claim someone else can check. |
Previously: GraphRAG on Apache AGE + pgvector · OpenSearch relevance tuning for Korean retail search

