Skip to main content
Gray Tsao
Software engineer · Tried most of it

Gray Tsao

A software engineer who has tried most of it: ERP internals, YOLO training, LLM applications, deployment — and sitting down to work out what someone actually needs.

Skills

What I actually reach for

Four years of writing code. The range is wide because the work came that way. Depth is self-assessed and deliberately conservative.

DomainTools in productionDepth
LanguagesPython · TypeScript / JavaScript · C / C++ · SQL
4+ yrs
Backend & webFastAPI · NestJS · Express · React · Zustand / Redux · REST design
daily
LLM applicationsPydantic AI · RAG pipelines · pgvector · tool orchestration · structured output
shipped
Enterprise systems / ERPOrder pipeline design · data modelling · form validation · Asana integration
shipped
Computer visionYOLO / YOLOv11s fine-tuning · Ultralytics · PyTorch · annotation
shipped
Requirements & deliveryRequirements interviews · process mapping · spec writing · UI/UX calls
shipped
DataPostgreSQL · MongoDB · MySQL · Redis · Firebase
working
Infra & deploymentGit · Docker · GitHub Actions · GCP · Cloudflare · Linux
working

Depth: daily use · shipped to production · working knowledge. Nothing here is listed because it looked good on a slide.

CPE professional level — 213 / 2,515 · English IELTS 6.5 · Chinese native

Experience

Four years, in order

  1. Jan 2026 — now

    Software engineer intern, ERP & AI integration

    Current
    InstaVoxel · Taiwan
    • Designed and shipped an end-to-end order-creation module as the sole engineer — data model, form flow, validation — cutting order creation from several hours to 10–15 minutes.
    • Built a Pydantic AI retrieval agent orchestrating vector search, direct database read/write and Asana order lookups, with type-safe structured outputs.
    • Structured a domain-specific knowledge base around the workflows the company already ran, rather than the ones a diagram wished it ran.
    ReactNestJSFastAPIPydantic AIGCP
  2. May 2025 — Apr 2026

    Co-founder

    KindReach · Taiwan
    • Co-founded a sports-tech startup for amateur sports communities — product direction, technical architecture, team execution.
    • Built and deployed the badminton automatic editing system alone, from data pipeline to shipped product.
    • Co-developed the sports meetup platform to 800+ active users, balancing features against infrastructure and CI/CD.
    ReactExpressYOLOMongoDBFirebase
  3. Aug 2023 — Jul 2024

    Chairman, football club

    Feng Chia University · Taichung

    Budget, compliance paperwork, match-day logistics and member recruitment. Included because running a club taught me more about requirements gathering than any course did.

  4. Sep 2022 — Jun 2026

    B.S. computer science & information engineering

    Feng Chia University · GPA 3.5 / 4.3

    Artificial intelligence, image processing, data structures and algorithms, database systems, software engineering and software testing.

Portfolio

Eight projects, eight kinds of problem

The whole list stays visible, so nobody scrolls past the one they wanted.

Personal project · Jun 2026 — now

Paper Anchor

RAG

A self-hosted, citation-anchored reader for academic papers: every LLM answer links back to the exact highlighted passage in the source PDF.

15 / 15
Citation-integrity eval
EN / zh-TW
Bilingual UI
What it took
  • A bbox-level citation-anchoring pipeline — PDF chunking, embedding, retrieval — built without LangChain.
  • Two-pane reader with select-to-ask: explain, translate or challenge any passage.
  • Provider-agnostic backend: any OpenAI-compatible API, with embeddings that can run fully local and keyless.
ReactTypeScriptPDF.jsFastAPIPostgreSQL + pgvectorPyMuPDFPydantic AIDocker
Personal project · May 2026 — now

Orthoshot

CAD

Open a STEP file in the browser, read off its dimensions and weight, and export ten standard views in one click. No backend — the geometry never leaves the machine it was dropped onto.

10
Standard views per export
220 kB
Eager JS (three off the critical path)
0
File uploads
What it took
  • Snapshots use an offscreen orthographic camera locked to the model's original pose, routed through three's OutputPass so the PNG carries the same tone mapping and colour space as the canvas — without it every export came out darker than the view.
  • STEP is parsed in-browser by occt-import-js (OpenCascade via WASM), with geometry always in millimetres because linearUnit is passed explicitly rather than inherited from the library default.
  • As a Vite MPA each language is a real crawlable document; the copy sits outside #root deliberately, since createRoot() wipes that subtree on mount.
TypeScriptReact 19three.jsocct-import-js (WASM)ViteVitestCloudflare Pages
Personal project · May 2026 — now

Enterprise RAG Assistant

RAG

A RAG backend for enterprise knowledge bases: tenant isolation enforced in SQL, the tenant derived from the API key alone, and a lexical retrieval arm rebuilt on character trigrams for Chinese.

97.2%
Hybrid recall@1
111
Tests, no external services in CI
What it took
  • Tenant isolation lives in SQL: every table carries tenant_id, the tenant is derived from the API key, and the X-Tenant-Id header is ignored outright.
  • Hybrid retrieval: vector kNN and pg_trgm trigram rankings fused with RRF, because tsvector cannot segment Chinese.
  • A 20-document / 36-question retrieval benchmark, shipped with an honest reading of what it cannot yet prove.
PythonFastAPIPostgreSQL + pgvectorpydantic-aipsycopg 3DockerGitHub Actions
InstaVoxel · Jan 2026 — now

Workflow ERP system

ERP

One order-creation pipeline replacing a fragmented, multi-step manual workflow — requirements to production, as the only engineer on the module.

~15 min
From several hours
1
Engineer on the module
What it took
  • Redesigned the data model, form flow and validation logic around the real ordering process.
  • Owned requirements gathering, UI/UX, backend architecture and production deployment.
  • Used Claude Code to accelerate scaffolding while keeping architectural decisions mine.
ReactZustandNestJSFastAPITypeScriptGCPGitHub Actions
KindReach · May 2025 — Apr 2026

Badminton automatic editing

Vision

A lightweight, mobile-oriented system that edits badminton footage by itself: YOLO tracks the shuttlecock and keeps only the rallies.

Mobile-first
Target device
End to end
Built solo
What it took
  • Detected shuttlecock trajectories with YOLO to identify segments worth keeping.
  • Shipped the whole path: data pipeline, model integration, product.
ReactExpressFastAPIYOLOMongoDB
KindReach · Feb 2025 — Apr 2026

Sports meetup platform

Product

Event organising for amateur sports communities — the product that found the users, then had to keep them.

800+
Active users
CI/CD
Owned the pipeline
What it took
  • Product strategy, system architecture and full-stack development.
  • Set up the CI/CD pipeline the rest of the team shipped through.
ReactReduxExpressFirebaseTypeScriptGitHub Actions
KindReach · Feb — Jun 2025

Specific vehicle recognition

Vision

Five hundred images hand-labelled, then a YOLOv11s fine-tuned by transfer learning until the numbers held at every resolution.

>90%
Precision at 763 / 986 / 1024px
500
Images hand-labelled
What it took
  • Built the dataset myself: collection, annotation, augmentation.
  • Fine-tuned YOLOv11s via transfer learning and validated across input resolutions.
PythonPyTorchUltralytics YOLOv11
Capstone, Feng Chia University · 2025

Commit summarisation tool

LLM

Reads your starred GitHub repositories and has an LLM explain what actually changed between commits.

LLM
Diff summarisation
Capstone
Undergraduate project
What it took
  • Pulled starred repositories and commit diffs through the GitHub API.
  • Cached summaries in Redis to keep repeat reads cheap.
ReactTypeScriptFastAPIRedis
Contact

Say something specific

Email is fastest. I reply within a working day, usually with more questions than answers.

Or leave a message here
Where
New Taipei, Taiwan · UTC+8
Status
Graduating June 2026 · open to software engineering roles
Gray Tsao© 2026 · Last updated August 2026