Pyae Sone Kyaw

Pyae Sone Kyaw

Evaluation-driven AI engineer. I build agent workflows as explicit graphs, then define how they are checked, trace every step and observe the results.

Engineering since 2021, AI/ML since 2023. Paris.

Faultline NOC scores a router over three specialist agents before any plan runs: a keyword baseline and two Claude models on 52 authored items, with every malformed plan scored as a failure.

Projects

Define · Build · Trace · Observe: press one to highlight it on every card

Four projects in full, each pairing what was built with how it is evaluated and where the evaluation stops. The router in Faultline is the centrepiece: one entry point that plans across three specialist agents, scored before it can touch a network.

Faultline NOC

faultline-noc

A router that turns one request into an ordered plan over three specialist agents, and the harness that scores each plan before anything runs.

Built

A typed RoutePlan contract: ordered steps, the context each step receives, which step may write to the network and whether it needs confirmation. Asking the user to clarify is an outcome, not a fourth agent. A keyword baseline and two Claude routers answer through a forced submit_route_plan tool call, from a prompt checked on a separate 8-item dev set (8/8 on the first draft, unchanged) and frozen by SHA-256. Underneath sits a seeded 5G SA simulator where every telemetry record carries an evidence_id.

Evaluated by

4 deterministic detectors (misroute, missing handoff, unsafe write, missed clarification) and set-level metrics. The harness is itself tested: 4 mutant routers each carry one planted defect and must trip their own detector. A malformed model answer is scored as wrong and never repaired. CI replays every recorded model call with no API key.

  • Define
  • Build
  • Trace
  • Observe
Numbers, limits (6), sources

A router that turns one request into an ordered plan over three specialist agents (knowledge, testing, incident response), and the harness that scores that plan before anything runs: which agent, in what order, what context is handed on, and which step may write to the network. It runs on a seeded, simulated 5G SA core, next to an evaluation harness for root cause analysis (RCA) agents.

All numbers

  • 45/52 exact routes for both Claude Haiku 4.5 and Sonnet 5, against 40/52 for the keyword baseline. The intervals overlap ([0.75, 0.93] against [0.64, 0.86]), so this is a comparison, not a quality claim.
  • 1 of 6 injection items followed: Haiku granted the restart a pasted ticket asked for; unsafe_write caught it.
  • 4 malformed Sonnet answers (3 sent steps as a string, 1 an empty object), each scored as wrong.
  • 8 of 8 RCA mutants trip their own detector across 8000 seeded, scripted runs (rule baseline, oracle, 8 single-defect mutants), and nothing outside their declared side effects. The baseline also scores 800/800, so these runs test the harness, not the agent.

Limits (6)

  • Plans are scored, not executed: the knowledge and testing specialists exist only as contract labels; the incident side is the separately evaluated RCA harness.
  • 52 items written by me, one recorded answer per model per item.
  • The telemetry is simulated, not emulated: no protocol stack runs.
  • Write targets are not checked, only which step writes.
  • Handoff refs exist before step one runs, so wiring one step's output into the next is not tested.
  • RCA confidence is not calibrated.

Define, Build, Trace, Observe

  • Define Covered Typed RoutePlan, 52 authored items, 4 detectors
  • Build Covered Keyword baseline and two Claude routers
  • Trace Covered Every plan, recorded response and detector trip committed per item
  • Observe Covered Accuracy with intervals, unsafe writes, calibration and cost; replayed in CI

Sources

  • 45/52 faultline-noc README.md:142-144
  • 1 of 6 faultline-noc docs/adr/003-llm-router.md:35, :40 (injection resistance 0.833 over 6 injection items)
  • 4 faultline-noc docs/adr/003-llm-router.md:41
  • 8 of 8 faultline-noc README.md:89, :104, :110

Stack: Python 3.11+, pydantic, mypy strict, pytest, Anthropic tool use, recorded cassettes, Vite + TypeScript project page

Agentic game generator

cartridge

A Mastra workflow graph that generates single-file HTML5 mini-games, gated by 24 static rules in its repair loop; a headless Chromium probe runs afterwards.

Independent reimplementation. Contains no client code, prompts, data or assets.

Built

A Mastra workflow with typed Zod step I/O: plan → dountil(build-cycle: generate → verify) → branch(finalize | reject). The repair loop is capped at MAX_REPAIRS = 3 and has its own token budget, and each failure is attributed to the step that produced it. Runs are claimed under a heartbeat lease; a sweeper re-queues stale runs or abandons them with a lease-lost attribution, and every step streams as a typed event over SSE. 4 typed tools: list_cards, get_card, load_draft, save_draft.

Evaluated by

E1: 24 deterministic contract rules. E2: a Playwright runtime probe with 6 detectors. E3: a cited categorical judge, where each finding must quote a real line or is discarded. E4: a language-match check. Every run is replayable from committed cassettes with no key.

  • Define
  • Build
  • Trace
  • Observe
Numbers, limits (7), sources

An agentic generator for single-file HTML5 mini-games. It is built as an explicit workflow graph and checked by 24 static rules inside the repair loop, and by a headless Chromium probe in the eval harness afterwards.

All numbers

  • 20/20 authored prompts (English and French, 4 bands of 5) produced a game, with 0 refusals and 0 harness failures.
  • 9 of 20 games that pass all 24 static rules still trip a runtime detector (E2 passes 11/20). At least one trip is by design (an idle kite falls), so E2's precision on generated games is unmeasured; static checks alone are still not enough.
  • 16 of 80 judge labels discarded because the quoted line was not in the file; the judge never gates and has not been compared with humans.
  • 6 of 6 holdout defect fixtures, written after the thresholds froze, caught; the 4 good controls (tuning set) stay clean.

Limits (7)

  • The engine gates on the static tier only: the 9 games that tripped a runtime detector were still finalized.
  • 4 of 20 prompts were used while fixing the engine, so they are not held out.
  • One generation per item, so one item moves a band rate by 20 points.
  • The prompts were written by me.
  • 10 E2 results were re-probed later on the same committed games, after Chromium failed to launch during the full run.
  • Not measured: fun, accessibility, variance across generations, and E3 agreement with humans.
  • Cost is an estimate: $3.15 for the 20 items from list prices, not an invoice.

Define, Build, Trace, Observe

  • Define Covered Typed Zod step I/O, 24 contract rules
  • Build Covered Mastra workflow, repair loop capped at 3
  • Trace Covered Each failure attributed to its step; replayable runs
  • Observe Covered E1 to E4 on 20 authored prompts

Sources

  • 20/20 reports/committed/full.json:2106-2112
  • 9 of 20 reports/committed/full.json:15, :57, :102, :148 and notMeasured; README.md:182
  • 16 of 80 README.md:184; reports/committed/full.json items[].e3.discarded
  • 6 of 6 reports/committed/matrix.json; README.md:74-77

Stack: TypeScript (strict), Node 24, Mastra 1.70.0, Zod 4, AI SDK (Anthropic), LibSQL, Playwright, Vitest

WikiHow-MY

wikihow-mt-my

An English→Myanmar instructional MT corpus, an NLLB-200 fine-tune and benchmark, and a human study that tests a procedural-fidelity metric (IFS) and reports that it fails.

Built

A corpus of about 10K MTPE pairs with article-disjoint splits (zero overlap, asserted in code). An NLLB-200-distilled-600M fine-tune published on the HF Hub. The IFS metric. Found and fixed a sentence-level split leak that inflated every score; splits now grouped by article, zero overlap asserted.

Evaluated by

A 4-system benchmark on chrF++, spBLEU, BLEU, COMET and MetricX-24, plus a FLORES+ control. A human study with 9 raters and 420 followability ratings, which showed that my own IFS metric fails. That negative result is reported.

  • Define
  • Build
  • Trace, not committed
  • Observe
Numbers, limits (5), sources

All numbers

  • +5.63 chrF++ fine-tune gain in domain (36.01 → 41.64, n=846). 41.64 vs 43.60 (Google Translate) and 42.59 (Gemini 5-shot): closes most of the zero-shot gap, not all.
  • +4.33 chrF++ fine-tune gain on FLORES+ (29.17 → 33.50, n=1,012).
  • r = 0.084 IFS against human followability at rating level (Pearson, n=420), not significant: the metric fails.
  • r = 0.53 [0.37, 0.66] for a per-dimension LLM judge against 0.13 for IFS on the same 160 items (Williams p < 0.001).

Limits (5)

  • The corpus is human post-edited MT, not from-scratch translation, and only a 20-row sample is public.
  • Inter-rater α = 0.39 across 9 volunteer raters.
  • The judge is a single, uncalibrated Gemini judge.
  • One fine-tuning run.
  • The paper is a preprint that has not been peer reviewed.

Define, Build, Trace, Observe

  • Define Covered Article-disjoint splits, asserted in code
  • Build Covered NLLB-200 600M fine-tune
  • Trace Not covered Nothing committed for this phase
  • Observe Covered 4-system benchmark and a human study; my IFS metric fails

Sources

  • +5.63 chrF++ experiments/results/main_results.json:5, :21, :37, :53; README.md:85-87, :91
  • +4.33 chrF++ main_results.json:69, :85; README.md:91
  • r = 0.084 experiments/results/ifs_correlation.json:2, :5; README.md:102
  • r = 0.53 experiments/results/estimator_ranking.json:36-44, :52-60, :68-72; README.md:115

Stack: Python, Hugging Face Transformers, NLLB-200, chrF++ / spBLEU / COMET / MetricX-24, Gemini 2.5 Flash (baseline and judge), Kaggle/Colab GPU

AgentPulse

agentpulse

An event-driven observability dashboard for agent runs: traces, tool calls, tokens, cost, latency and errors, streamed in real time from a swappable event bus.

Built

One Zod event contract, checked again at ingest and in the browser. An EventBus with memory, Pub/Sub and Kafka drivers. A projector feeding a run store and a 60 s rolling aggregator (p50/p95, error rate, cost). SSE plus GraphQL subscriptions, and a Vue span waterfall.

Evaluated by

76 Vitest tests across contracts, percentiles, window eviction, projection, the 3 bus drivers and GraphQL, with lint, typecheck and build in CI. It is the Trace and Observe tool of the set. There is no benchmark: it is a dashboard.

  • Define
  • Build
  • Trace
  • Observe
Numbers, limits (5), sources

All numbers

  • 76 tests in 11 files, all passing (2026-09-24).
  • 7 event types in the Zod discriminated union.
  • 200 runs held in the run store's ring buffer; metrics use a 60 s window.

Limits (5)

  • The demo traffic is simulated, not produced by real agents.
  • Cold starts can return a Cloud Run 500 on the first request.
  • State lives in memory only, with no auth.
  • The Pub/Sub and Kafka drivers are tested but not deployed.
  • It observes agent runs; it does not orchestrate them.

Define, Build, Trace, Observe

  • Define Covered One Zod event contract, 7 event types
  • Build Covered Event bus with 3 drivers, projector
  • Trace Covered Span waterfall per run
  • Observe Covered Rolling p50/p95, error rate and cost over 60 s (simulated traffic)

Sources

  • 76 README.md:97
  • 7 README.md:31, :83
  • 200 README.md:51-52, :189

Stack: TypeScript (strict), Node 20+, Fastify, Vue 3, Zod, SSE, GraphQL (Mercurius), Kafka, Google Cloud Pub/Sub, Cloud Run, Vitest

Also built

  • AgentProbe

    A ReAct agent written from scratch, with a deterministic failure taxonomy and a 52-case benchmark with one recorded run (Claude Haiku 4.5: 42/52 answers correct).

  • Knowledge-Graph RAG Explorer

    GraphRAG stages on a canvas, with a retrieval eval comparing vector-only and graph-expanded search.

    Demo (mock mode)
  • AgentCanvas

    A Vue Flow studio for composing agent workflows, with step-level run visibility.

    Demo (mock mode)
  • EV charging copilot

    A tool-grounded RAG assistant where every station, price and route comes from a tool call.

  • FaceProof

    Face verification and liveness detection, measured on the LFW protocol.

Experience

Engineering since 2021, AI/ML since 2023.

  1. Freelance AI EngineerHoora Games (SAS EASYWIN)

    Metz, France (remote)

    May 2026 – Sep 2026

    Owned the evaluation and quality-gating layer end to end; worked across the Mastra agent graph, its tool contracts and multilingual behaviour. The open rebuild below is my design of the full pipeline.

  2. Full-Stack AI EngineerSiloett.AI

    Station F, Paris

    Jun 2025 – May 2026

  3. Data Science / Cloud Data EngineerFloware

    Station F, Paris (hybrid)

    Jul 2024 – Dec 2025

    Started as my master's internship, continued as a contract: cloud data batch processing on Microsoft Azure (Azure Batch, Blob Storage, Functions, Docker).

  4. Research & Back-End EngineerDiCE Lab (Paris) and AIT BrainLab (Bangkok)

    Paris and Bangkok

    Aug 2023 – Jul 2024Jan 2023 – Aug 2023

  5. Software Engineer (Web)FAO (UN Food and Agriculture Organization)

    Yangon (remote/hybrid)

    Jan 2021 – Dec 2022

Research and FAO roles: what the work was
  • DiCE Lab (Paris) and AIT BrainLab (Bangkok): Transformer fine-tuning in PyTorch, including BERT-based scientific paraphrase generation on ParaSCI (338,717 training pairs), with reproducible evaluation pipelines and REST services exposing results.
  • FAO (UN Food and Agriculture Organization): Full-stack web delivery for UN programme stakeholders: field data-collection tools, public portals and internal dashboards (React/TypeScript over Python back ends).

Education & courses

  • MSc Data Science and Network Intelligence

    Télécom SudParis (IP Paris)

    2023–24, awarded Jan 2025

    15.15 / 20

  • MSc Data Science and AI

    Asian Institute of Technology

    2022–24, conferred May 2025

    CGPA 3.17 / 4.00

Completed courses

  • Evaluating AI Agents DeepLearning.AI, 2026
  • Intro to MCP Anthropic, Sep 2026
  • Machine Learning Specialization DeepLearning.AI / Stanford, Jan 2026
  • Frontier Tech Leaders Myanmar ML Bootcamp UNDP, Apr 2026

Planned: Q4 2026: a LangGraph/agents course and 5G core.

Relevant MSc modules (6), with grades

Télécom SudParis grades are out of 20; AIT grades are letter grades.

  • Deep Learning & Transfer Learning for NLP and ImageTélécom SudParis18.5 / 20
  • In-Network ComputingTélécom SudParis18 / 20
  • Service-Oriented ComputingTélécom SudParis18 / 20
  • IoT & Digital TwinsTélécom SudParis18 / 20
  • Machine LearningAITB+
  • AI: Natural Language UnderstandingAITB