Jihoon Lee

Production AI Systems Engineer · since 2022.04
AI Infrastructure · Agent Systems · LLMOps · Production ML

Contact · lijihoon1206@gmail.com


Summary

I design, deploy and operate AI systems that actually run in production — from sensor signal pipelines to LLM agents. I decide technical choices on measurable evidence, and I treat finding the failures after shipping as half the job.

Selected Impact

  • 3.3× faster end-to-end on a production inference pipeline (65.8 s → 19.9 s, 24h of real-animal data)
  • Designed and run an internal natural-language data agent solo — chose its architecture by A/B measurement and recorded the cost of what I adopted
  • Found and closed silent failures — after a 4 h 41 min outage with no symptoms, moved health checks to real calls and added outage alerts
  • 1 SCI(E) journal paper · 1 IMU behavior-classification paper under review at Sensors (90% feature reduction, under 1pp accuracy loss) → Research

Skills

Area Detail
AI / LLM Claude API (tool-use), LangGraph, RAG (pgvector), MCP, eval design, de-identification
ML LightGBM, PyTorch, MLflow, time-series & IMU signal processing, feature-extraction optimization
Language / Data Python, TypeScript, SQL · PostgreSQL, MySQL, ClickHouse, OpenSearch, Parquet
Backend / Web FastAPI, REST API · SvelteKit 2 (Svelte 5), Drizzle ORM
Infra AWS (IoT·S3·RDS·Lambda·ECR·OpenSearch), Docker, Cloudflare Access, Linux, cron operations

Experience

Bodit Inc. — Data Analysis Part, Engineering

2024.12 – present · Livestock IMU behavior analysis (6-axis 25Hz → ML pipeline → farmer app)

Responsible for both analysis models and the internal data/AI infrastructure.

Internal LLM agent platform 2026.04 – · designed, built & operated solo — an assistant that answers questions about internal data in natural language. Started as an MVP and moved to a tool-calling agent.

  • RAG knowledge base over 3-tier data routing (MySQL / PostgreSQL / ClickHouse with fallback) — started at MVP with 730 schema documents (95 tables · 635 columns) and grew with more sources, plus an auto-promotion loop from real query logs
  • Decided the architecture shift by A/B measurement. A single-label LLM router regressed table-jaccard (0.86 → 0.69) and was discarded. Exposing each capability as a tool tied on execution success (47/47), passed 5/5 compound queries — impossible under the old structure — and asked back on about 5/6 ambiguous questions (previously 0/6)
  • Fixed the rationale as capability expansion, not accuracy, and recorded the adopted approach’s −5 to −7pp single-query table-jaccard cost
  • Fail-closed de-identification — transmission to an external LLM is blocked outright when masking has not been applied. Row-level pre-masking plus a regex backstop catches identifiers that column context alone would miss
  • Four surfaces: remote MCP gateway (SSO) · Slack bot · REST API · app API. Active anomaly detection (30-minute scan + root-cause analysis → Slack) ran live and is paused while thresholds are revisited
  • Silent-failure response — when the API credit ran out, the health check only verified a key existed and returned 200 ok for 4 h 41 min. The exhaustion signal arrived as 400, not what the docs implied, so the backup-key failover never fired → deleted that unverified path, switched health to a real call (300 s TTL), added a 5-minute outage alert

Behavior classification inference pipeline — 3.3× end-to-end 2026.02 · led the rework — reworked the production core package that extracts 903 features from 6-axis IMU raw signal and classifies behavior.

  • Measured the bottleneck first — one cough feature set took 48.6% of runtime. Selectively vectorized 61 of 63 features into NumPy batch operations (9.8× on that stage); 2 stayed per-row
  • Replaced six third-party (tsfresh) calls with a NumPy reimplementation — 37% faster on that stage, one dependency removed
  • Checked every swap numerically against the original per-row functions (within 1e-6). One statistic that shifted at a threshold (53 → 40) was recorded, not hidden
  • Moved model management from a local-file fallback to a single MLflow registry path
Metric Before After Gain
End-to-end time 65.8 s 19.9 s 3.3× faster
Throughput (end-to-end) 131 win/sec 433 win/sec 3.3×

Measured on 24h of real-animal raw data — 2.16M rows / 8,640 windows · full suite 208 passed / 0 failed

Company-wide knowledge base — privacy-safe compilation pipeline 2026.07 – · designed, built & operated solo — internal conversations compiled and maintained by an LLM. Answers come from compiled documents, not from retrieval over raw text.

  • Pipeline: 12-channel ingest → two de-identification layers (regex + GPU NER) → LLM compilation → wiki → agent queries
  • Tuned de-identification precision in both directions — plaintext ID numbers 181 → 0, farm names replaced with one-way hash codes; loosened over-masking of public institutions and documented the rules (20 regression asserts)
  • Found that manual compilation had stalled for two weeks, leaving answers grounded in unverified raw text → automated it as a weekly batch. First backlog compile: 12 min · $7.34, 5 → 13 pages
  • Final review and merge stay human — NER accuracy sits at 90–95%, so the last gate on personal data is not automated. Review found 0/6 personal-data leaks

Also

  • Real-time livestock accident detection — IMU anomaly signals, shadow deployment
  • Business management system — requirements to deploy in 4 days, 1,090 tests, session layer built on the standard library alone
  • Analytics dashboard — SvelteKit 2, Role × Group ACL + audit log
  • Gateway on-device inference — full model rejected on flash limits; porting a measured (CPU 3–6%) lightweight hybrid (~193 KB)
  • Alert threshold analysis — showed the two-tier rule was effectively a single threshold

SecuLetter Inc. — Threat Intelligence Team, Research Institute · Researcher

2022.04 – 2024.12 (2 yrs 9 mos) · Team of 3

Threat-intelligence AI research and TI service platform development/operations.

  • Built the MARS-TI data lake and ETL — extracted visualization data from AWS-crawled raw data and OpenSearch, transforming it into mail/URL/file relationship structures. Built the monitoring UI in Svelte
  • Implemented MARS AI for malicious mail classification (70% contribution) — mail preprocessing, BERT-CNN header feature extraction and classification, served via FastAPI + AWS Lambda·ECS·ECR
  • Built the training-data crawler (50%) and the internal data inspection platform ConTI (80%) — Svelte/Tailwind + FastAPI/Lambda/OpenSearch
  • Improved MARS-TI platform ↔ AI service integration (60%) — connected FastAPI to AWS Lambda over VPC, strengthened API Gateway·ECS·ECR·OpenSearch wiring

Ingest → clean → store → API → UI, run by a small team. → Threat Intelligence Data Platform

Education

Hoseo University Graduate School, Computer Engineering (M.S.) · 2020.03 – 2022.02 · GPA 4.09 / 4.5 Thesis: Design and Implementation of a Graph Neural Network-based Behavior Classification Model — wearable 6-axis sensor → LSTM features → GAT node classification, 91.1% test accuracy across 5 behaviors

Hoseo University, Computer Software (B.S.) · 2014.03 – 2020.02

Awards

  • Best Graduate Thesis Award — Hoseo University Graduate School, 2022
  • Encouragement Award — Korean Institute of Broadcast and Media Engineers, 2019

Research Projects

  • 5 funded research projects — NRF ×2, industry-academic foundation ×1, local government ×1, university ×1 (2019–2022)

The full list of papers and talks is on the Research page.