Michael Le
> Hi, I'm Michael Le10.78°N 106.70°E — Ho Chi Minh City

Agents that help
students get
unstuck.

AI engineer in Ho Chi Minh City, building practical systems with LLMs, agents, OCR and automation — mostly for people who are learning something hard.

Agents · Edtech · OCR
Now — AI Engineer at GrowtricsAI
Download CV ↓

Scroll — one late-night study session ↓

> Fig.00 — one study night, four moments

01 — A real moment

11:47 pm. Problem #3. The sign is wrong again.

She did the work and still can't see the mistake. Quiz is Thursday at 8. This is the moment I care about building for.

02 — Listening first

Ask before answering.

The agent doesn't paste the solution. It asks which part feels shaky, keeps what it already knows — this week's topic, the quiz — and breaks the fix into three small steps.

03 — Reading the page

Then it reads the actual work.

OCR is one capability here, not the point: a phone photo of handwriting becomes text the agent can point at — this line, this step.

04 — The next step

“Oh. The inside has a slope.”

The win isn't a perfect answer from a machine. It's a student who can do #4 on her own — and then goes to sleep.

> Fig.01 — the parsing problem

Messy input → LLM-ready context.

  1. 01

    Messy input

    A phone photo, not a clean PDF.

    Skewed page, a coffee ring, a margin scribble, a printed diagram and a running header — the kind of input real students actually send.

  2. 02

    Crop & segment

    Find the regions that carry meaning.

    Layout detection separates body text, the figure and the handwritten note, then crops each region upright so nothing is lost to the noise around it.

  3. 03

    Parse & clean

    Turn pixels into structure.

    OCR reads the text, broken lines are rejoined, page furniture is dropped, the equation stays an equation and the figure gets a caption it can be searched by.

  4. 04

    Chunk with provenance

    Small pieces that remember where they came from.

    Text and figure become self-contained chunks, each tagged with section, page and links to its neighbours — so “see Fig. 3.2” still points somewhere.

  5. 05

    Embed

    Meaning becomes a position.

    Every chunk — text and image description alike — is embedded into a vector space where related ideas land near each other and can be found by meaning.

  6. 06

    Retrieve & answer

    The agent answers from the page.

    A student's question pulls the nearest chunks, the agent packs them into context and answers — citing p.42 and Fig. 3.2 instead of guessing.

Explore the full workflow ↓

Visual explanation — not a live tool. Nothing is uploaded or processed here.

> Intro

I'm Michael Le, an AI engineer based in Ho Chi Minh City. I build systems that meet people where they are — turning questions, notes and messy documents into a useful next step.

Thread 01

Agents

Autonomous systems and practical agent workflows.

Thread 02

OCR

Extracting structure from unstructured content.

Thread 03

Edtech

Better tools for learning and growth.

Curious by nature. Focused by experience. — About →

> ExperienceFull timeline →

Building AI systems
across product
and research.

● CurrentGrowtricsAIAI Engineer
Working on AI-powered tools for real-world workflows.
○ PreviouslyGMO-Z.com RUNSYSTEMOCR Engineer
Worked on multilingual OCR — reading documents across scripts and turning them into structured data.
○ First companySmartpayWorked on fraud transactions.
> ProjectsProject index →

Featured projects

Agents / Context pipelineCase 01 of 03

Messy input →
LLM-ready context

Raw text, documents and photos in; clean, structured context out — so an agent retrieves the right passage or figure and answers from it, with sources.

01 INGEST 02 CLEAN · CROP 03 STRUCTURE 04 EMBED 05 RETRIEVE ↺ AGENT ANSWERS WITH RETRIEVED CONTEXT CASE 01 — RAW → CONTEXT

Problem space

Real inputs are messy: PDFs, scans, screenshots, notes and photos with noise, mixed layouts and no structure an LLM can lean on.

Approach

Parse and clean text, crop and describe visual regions, organise everything into structured chunks, embed them, then retrieve only what a question needs.

Focus areas

Multimodal parsing, structure an agent understands, semantic retrieval and grounded answers.

Walk through the full workflow ↓

Edtech / PlatformCase 02 of 03

EdTech Learning Platform

Tools for personalised learning experiences with AI-driven content recommendations.

01 LEARNER 02 CONTENT MAP 03 LANGUAGE MODEL 04 NEXT STEP ↺ LEARNER MOVES ON — MAP UPDATES FIG.02 — LEARNING LOOP

Problem space

Learners move at different speeds and need material that meets them where they are.

Approach

Use language models to organise content and suggest what to study next.

Focus areas

Learner experience, content structure and sustainable growth.

OCR / Work areaCase 03 of 03

Multilingual Document OCR

The area of my work at GMO-Z.com RUNSYSTEM: reading documents across scripts and layouts.

01 SCAN 02 LAYOUT 03 RECOGNISE 04 STRUCTURE 05 DATA FIG.03 — DOCUMENT → DATA

Problem space

Real documents mix languages, scripts, tables and noisy scans.

Approach

Combine recognition with layout understanding to extract structure from unstructured content.

Focus areas

Multilingual text, document layout and turning output into usable data.

> Life — off the clock

Cinema, quiet moments,
and a few furry companions.

Films, stories.
REEL 01 · CINEMA
Quiet moments.
REEL 02
Good company, better days.
REEL 03 · PETS

Explore life →

> Deep dive — the full workflowBack to Case 01 ↑

From messy input
to grounded answers.

Most of the quality in an agent's answer is decided before the model ever runs. This is how I approach turning unstructured, multimodal material into context an LLM can use — seven stages, each with an output you can inspect.

Traced example One phone photo of a physics textbook page — p.42, body text, a printed trajectory diagram, a margin note and a coffee ring — followed through all seven stages to one student question.

  1. Ingest

    Take input as it really arrives.

    PDFs, scans, screenshots and phone photos arrive in different formats and quality. Each item is typed, split into pages and given a source record, so every later chunk can point back to where it came from.

    in
    files · text · images
    out
    typed items + source ids
    uses
    format detection · page & frame splitting · source metadata
    p.42 at stage 01
    beforeIMG_2231.jpg · 3024×4032tilted · shadow · coffee ringno text layer
    aftersrc: phys-ch3 · p.42type: photo / textbook pagerotated 4° · deskewed
  2. Parse & clean text

    Strip the noise, keep the meaning.

    Text is read (OCR where there is no text layer), then normalised: hyphenated lines rejoined, running headers and page numbers dropped, equations and lists kept as structure rather than flattened prose.

    in
    raw text · OCR output
    out
    clean, sectioned text
    uses
    OCR for photos & scans · de-duplication · layout-aware cleanup
    p.42 at stage 02
    beforeCHAPTER 3 · MOTION 42At the top of its path the ver-tical velocity v_y = 0 . (see Fig
    after§3.4 Projectile motionAt the top of its path, verticalvelocity v_y = 0 (see Fig. 3.2).
  3. Crop & read images

    Find the part of the image that matters.

    The page is segmented into regions — body text, figure, handwriting. The diagram is cropped tight to its bounds, then described and labelled so an agent knows what it shows and which paragraph cites it.

    in
    page photo
    out
    cropped regions + descriptions
    uses
    region detection · smart cropping · captions & labels
    p.42 at stage 03
    beforewhole page · 1 imagediagram + margin scribble+ shadow, all mixed
    afterfig-3.2 · crop 612×388“parabola; v_x constant, v_y → 0 at apex”
  4. Structure

    Organise everything into one shape.

    Clean text and image regions merge into chunks with a title, a place in the hierarchy, a link from the figure to the paragraph that cites it, and metadata the agent can filter on.

    in
    text + regions
    out
    structured multimodal chunks
    uses
    semantic chunking · cross-references · schema & metadata
    p.42 at stage 04
    beforeloose text blocksa separate image cropno link between them
    afterchunk §3.4#2 · kind: text cites → fig-3.2 topic: projectile · ch 3
  5. Embed

    Turn chunks into vectors.

    Each chunk, and each figure description, is encoded as an embedding — a vector of its meaning — and stored with its metadata in an index built for semantic search.

    in
    structured chunks
    out
    vector index
    uses
    text & image embeddings · metadata filters · re-index on change
    p.42 at stage 05
    before§3.4#2 (text)fig-3.2 (description)
    after[0.12, −0.48, 0.07, …][0.09, −0.51, 0.11, …]+ metadata · src p.42
  6. Connect the agent

    Give the agent context as a tool.

    Retrieval is wired in as a tool. The agent decides when to search, rewrites the question into a better query and chooses filters, combining what it finds with its own plan and memory.

    in
    user goal + index
    out
    retrieval calls
    uses
    retrieval as a tool · query rewriting · agent memory
    p.42 at stage 06
    before“why is it 0 at the top??”
    aftersearch(“vertical velocity at apex of projectile”, filter: ch 3)
  7. Retrieve & respond

    Answer with the right context.

    Matching chunks are retrieved and re-ranked, packed into the prompt with their sources, and the model answers from them — pointing at the page, figure or line it used.

    in
    question
    out
    grounded, cited answer
    uses
    semantic search · re-ranking · citations
    p.42 at stage 07
    beforetop hits: §3.4#2 · fig-3.2dropped: ch 5 (off-topic)
    after“At the apex the ball stops rising before it falls, so v_y = 0.” — p.42, Fig. 3.2

Why structure first

Clean, labelled chunks keep retrieval precise and stop noise, boilerplate and broken layouts from leaking into prompts.

Why images matter

Diagrams, tables and handwriting carry meaning text extraction drops. Cropping and describing regions makes that meaning searchable.

Why retrieval

The agent gets only the context a question needs, with sources it can cite — better answers, fewer guesses.

Explanatory workflow from my work — not a live tool on this site. Nothing is uploaded, processed or stored here.

> Contact

Let's build
something.

Open to collaboration, interesting projects, and new opportunities.

Ho Chi Minh City, Vietnam
AI Engineer at GrowtricsAI
Download CV ↓

How to reach me →