Optics Ph.D. with 8+ years in optical & semiconductor metrology (SEM, AFM, Raman, NSOM), building AI applications that don't just predict β they report how much you can trust the prediction, with GUM-compliant uncertainty budgets (JCGM 100/101).
- π¬ Measurement scientist first: ISO 18516:2019 round robin β Korean-side participant, first author of the resulting paper (Curr. Appl. Phys. 20, 71β77, 2020) Β· practitioner at a KOLAS-accredited ISO 17034 reference-material producer
- π I build the full loop: physics forward model β inverse solver β GUM uncertainty budget
- π§° Domains: OCD / scatterometry, XRR, SEMΒ·TEM image analysis, AFM probe health, Raman/SERS QC
- π€ MCP builder: author of an MCP server for GUM measurement uncertainty β a prior-art search (2026-07) found no equivalent, which is not the same as being first
- π§ͺ 4 solo patent applications in metrology & inspection AI (KR, 2026)
- π± Upstream contributor: conformal prediction (CQR) merged into torch-uncertainty (PyTorch UQ framework, β 500+)
| Project | What it does | Stack |
|---|---|---|
| metroai | KOLAS Compliance OS β MCP server + 6 AI agents + GUM/MCM/QMC measurement-uncertainty engine + Ed25519-signed audit trail, for ISO/IEC 17025 accredited labs. 243 automated tests, CI. | Python, MCP |
| metrology-inverse | Forward β inverse β GUM uncertainty across 3 instruments: OCD (RCWA), XRR (Parratt), autodiff CD fitting β validated on real NIST scatterometry data (L100P300, 9 dies). Exact-Jacobian sensitivity for the uncertainty budget. | Python, PyTorch, Meent, refnx |
| acoustic-resonance-tomography | 3D buried-defect detection & material ID in semiconductor BEOL via GHz acoustic resonance β physics simulations (FDTD/TMM) + PINN inverse scattering. Patent pending (KR 10-2026-0109370). | Python, PyTorch |
| measurement-uncertainty-mcp | MCP server for GUM uncertainty analysis: Type A/B, Welch-Satterthwaite Ξ½_eff, expanded U(k), JCGM 101 Monte Carlo, KOLAS-ready budgets. 44 tests, live on MCPize. | Python, MCP |
| tiphealth (private β patent pending KR 10-2026-0129260) | HAR AFM tip predictive maintenance β image ML at a reference recipe + Archard-model recipe scaling, 8 probe models Γ 6 materials (simulation-based), conformal prediction intervals, Dockerized API. | Python, Docker, Streamlit |
| spectraguard | Uncertainty-aware spectral QC for SERS/Raman/IR β 6-metric confidence score with bootstrap CIs, cross-instrument transfer, streaming SPC, CLI + CI pipeline. | Python, NumPy, SciPy |
| semiconductor-defect-classifier | Defect classification on SECOM fab sensor data (1,567 wafers Γ 590 sensors, 6.6% defect rate) β imbalance handling, Optuna tuning, honest K-fold evaluation. | Python, XGBoost, Optuna |
| semiconductor-ai-portfolio | Analysis pipelines on my own PhD measurement data: MoSeβ photoluminescence peak/FWHM analysis, NSOM defect mapping, TMD comparison. | Jupyter, pandas, SciPy |
Model Context Protocol servers I built and maintain:
- measurement-uncertainty-mcp β 10 GUM/JCGM tools for ISO/IEC 17025 calibration labs, from any MCP client
- vertical-mcp org β Korean government open-data connectors: dart-mcp (corporate disclosures, OpenDART) Β· kolas-mcp (ISO/IEC 17025 accredited-lab registry) Β· ntis-mcp (national R&D projects & funding) Β· grant-mcp (NSF / ERC / NRF grant search)
- schedule-optimizer-mcp Β· notion-workspace-automation-mcp β productivity MCP servers
Metrology & standards: GUM (JCGM 100:2008) Β· JCGM 101 Monte Carlo Β· ISO/IEC 17025 Β· ISO 17034 Β· RCWA Β· XRR Β· SEM/TEM Β· AFM Β· Raman/SERS Β· NSOM
Every figure in these repos ships with its data origin β synthetic, live, or stub β and no
number appears in a README unless it can be reproduced from the repo. Some consequences of that
rule are kept visible on purpose:
- spectraguard Figure 5 is labelled not a benchmark: its ground-truth labels come from the same synthetic generator whose parameters the tool measures, so the comparison is circular by construction and the caption says so instead of quoting the AUC.
- semiconductor-defect-classifier
documents that its demo previously returned a constant probability across all 7,776 slider
combinations, why (
SimpleImputeronly replaces NaN; the input wasnp.zeros), and what replaced it. - Prior-art searches are quoted with their date, registry and search terms β never as "world first".
A measurement you can't reproduce isn't a measurement.
π§ kyb8801@gmail.com