Skip to main content
grayswork
Software engineer · Tried most of it

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.

GrayTsao

See the work

01Skills

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.

  1. 4+ yrsLanguagesPython · TypeScript / JavaScript · C / C++ · SQL
  2. dailyBackend & webFastAPI · NestJS · Express · React · Zustand / Redux · REST design
  3. shippedLLM applicationsPydantic AI · RAG pipelines · pgvector · tool orchestration · structured output
  4. shippedEnterprise systems / ERPOrder pipeline design · data modelling · form validation · Asana integration
  5. shippedComputer visionYOLO / YOLOv11s fine-tuning · Ultralytics · PyTorch · annotation
  6. shippedRequirements & deliveryRequirements interviews · process mapping · spec writing · UI/UX calls
  7. workingDataPostgreSQL · MongoDB · MySQL · Redis · Firebase
  8. workingInfra & deploymentGit · Docker · GitHub Actions · GCP · Cloudflare · Linux

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

02Experience

Four years, in order

  1. Jan 2026 — nowCurrent

    Software engineer intern, ERP & AI integration

    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.

    React / NestJS / FastAPI / Pydantic AI / GCP

  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.

    React / Express / YOLO / MongoDB / Firebase

  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.

03Portfolio

Eight projects, eight kinds of problem

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

Personal project · Jun 2026 — nowRAG

Paper Anchor

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

Citation-integrity eval
15 / 15
Bilingual UI
EN / zh-TW
What it took
  1. A bbox-level citation-anchoring pipeline — PDF chunking, embedding, retrieval — built without LangChain.
  2. Two-pane reader with select-to-ask: explain, translate or challenge any passage.
  3. Provider-agnostic backend: any OpenAI-compatible API, with embeddings that can run fully local and keyless.

React / TypeScript / PDF.js / FastAPI / PostgreSQL + pgvector / PyMuPDF / Pydantic AI / Docker

Full write-upRepository

Personal project · May 2026 — nowCAD

Orthoshot

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.

Standard views per export
10
Eager JS (three off the critical path)
220 kB
File uploads
0
What it took
  1. 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.
  2. 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.
  3. As a Vite MPA each language is a real crawlable document; the copy sits outside #root deliberately, since createRoot() wipes that subtree on mount.

TypeScript / React 19 / three.js / occt-import-js (WASM) / Vite / Vitest / Cloudflare Pages

Full write-up

Personal project · May 2026 — nowRAG

Enterprise RAG Assistant

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.

Hybrid recall@1
97.2%
Tests, no external services in CI
111
What it took
  1. 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.
  2. Hybrid retrieval: vector kNN and pg_trgm trigram rankings fused with RRF, because tsvector cannot segment Chinese.
  3. A 20-document / 36-question retrieval benchmark, shipped with an honest reading of what it cannot yet prove.

Python / FastAPI / PostgreSQL + pgvector / pydantic-ai / psycopg 3 / Docker / GitHub Actions

Full write-upRepository

InstaVoxel · Jan 2026 — nowERP

Workflow ERP system

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

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

React / Zustand / NestJS / FastAPI / TypeScript / GCP / GitHub Actions

Full write-up

KindReach · May 2025 — Apr 2026Vision

Badminton automatic editing

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

Target device
Mobile-first
Built solo
End to end
What it took
  1. Detected shuttlecock trajectories with YOLO to identify segments worth keeping.
  2. Shipped the whole path: data pipeline, model integration, product.

React / Express / FastAPI / YOLO / MongoDB

Full write-up

KindReach · Feb 2025 — Apr 2026Product

Sports meetup platform

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

Active users
800+
Owned the pipeline
CI/CD
What it took
  1. Product strategy, system architecture and full-stack development.
  2. Set up the CI/CD pipeline the rest of the team shipped through.

React / Redux / Express / Firebase / TypeScript / GitHub Actions

Full write-up

KindReach · Feb — Jun 2025Vision

Specific vehicle recognition

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

Precision at 763 / 986 / 1024px
>90%
Images hand-labelled
500
What it took
  1. Built the dataset myself: collection, annotation, augmentation.
  2. Fine-tuned YOLOv11s via transfer learning and validated across input resolutions.

Python / PyTorch / Ultralytics YOLOv11

Full write-up

Capstone, Feng Chia University · 2025LLM

Commit summarisation tool

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

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

React / TypeScript / FastAPI / Redis

Full write-up

04Contact
Where
New Taipei, Taiwan · UTC+8
Status
Graduating June 2026 · open to software engineering roles

Say something specific

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

Or leave a message here
Gray Tsao© 2026 · Last updated October 2026