● Available · Hong Kong · 廣東話 / English / 普通話

Oscar Chan Ho Yin

Senior Full-Stack · Platform-Cloud · Agentic AI Engineer

📧 oscarhychan@gmail.com · 🔗 github.com/oscarhyc

AVAILABLE · OPEN TO AGENTIC-AI / PLATFORM ROLES
📧 Email owner@example.com
🔑 Password test123
Agentic Systems System Architecture Agentic Engineering Agent Guardrails & HITL TDD Agent Harness Design AgentOps
01 / 14

/01· THE AGENT STACK

Four pillars of my agentic runtime.

The agent is a teammate with permissions, not a tool I prompt. It runs in a chatroom, ships via the edge, and is wrapped by a safety harness.

[ 🤖 ]

AGENT

  • Hermes Agent · by Nous Research
  • Model: MiniMax-M3
  • 8 toolsets · file · terminal · web · browser · vision · TTS · cron · delegation
  • Persistent memory + skills (curated procedures)
  • Sub-agent delegation · orchestrator / leaf
[ 💬 ]

MESSAGING

  • Discord DM with @Oscar · 24/7
  • #home channel for daily drop-offs
  • Threaded topics = persistent project boards
  • Slash commands: /clear · /model · /plan · /new
  • Voice notes via TTS · images via native vision
[ 🛠 ]

WORKSPACE

  • Linux 6.17 · Ubuntu 24.04 LTS
  • Python 3.11.15 · Node 22 · pnpm 9
  • Git 2.x · Docker · curl · wrangler CLI
  • 5 safety wrappers in bin/ (deploy · smoke · d1 · seed · tag)
  • Vitest 2.x · 1,130 tests · Playwright E2E
  • AGENTS.md — 3 hard rules at repo root
[ ☁️ ]

EDGE

  • Pages · React + Vite + i18next (zh-HK · en)
  • Workers · Hono router + Zod validators
  • D1 · SQLite at edge · 16 users · 11 taxis
  • R2 · receipt file bucket (presigned URLs)
  • Cron 19:00 HKT · nightly notify job
  • $0 spend · pay-as-you-go · 200+ PoPs
PROMPT → PLAN → BUILD → VERIFY → COMMIT → DEPLOY ↻

⟨ Recursive self-portrait — this deck was built by the same stack it shows. ⟩

02 / 14

/02 · APPLICATION ARCHITECTURE

The Cloudflare edge, as agent control plane.

Three human roles · one role-gated runtime. Owner runs the business, Operator does day-to-day admin, Driver self-serves on mobile — all behind the same JWT.

⟨ Three roles. One runtime. The role-gate doesn't care which one knocks. ⟩

⚡ Cloudflare Edge ⚙️ Agent Runtime 💾 State + Obs ⏰ Scheduled 👔 Owner runs the business 🧑‍💼 Operator desktop · day-to-day 📱 Driver mobile · self-serve 🌐 Browser React + Vite + JWT ↓ static 📦 Pages + SPA role-gated UI ⚙️ Cloudflare Worker Hono + Zod 🗄️ D1 · SQLite users · taxis · slots 🪣 R2 receipts · logs 📊 Eval + Trace → R2 / Logs ⏰ cron 19:00 HKT nightly trigger ↓ runs 🔔 In-app notify user-facing alert Owner Op Driver /api/* read write trace nightly

The shape. Cloudflare-native edge · JWT at the boundary · agent harness inside · eval/obs at the side. Every layer earns its place — and the harness never trusts the actor.

03 / 14

/03· AGENTIC AI ARCHITECTURE

I vibe-code this deck (and the taxi app) inside an AI agent.

Seven hops from my thumb to live edge. Every box has a reason — the harness never trusts the actor, the wrappers never auto-promote, and every commit comes from a chat room.

👤 ① ME Oscar · thumb on phone 💬 ② Discord DM @Hermes 24/7 chat 🖥️ ③ VM Linux 6.17 terminal + files 🤖 ④ Hermes 1 screen · 1 model M3 + memory ✍️ ⑤ coding TDD · sub-agents git · PR 📦 ⑥ wrangler bin/* wrappers --confirm ☁️ ⑦ CF Pages · Workers D1 · R2 · Cron prompt HTTPS tool-use edit · test --confirm upload return ◄── live URL · receipts · in-app notify

⟨ One chatroom. Seven hops. Every gate has a human fingerprint. ⟩

04 / 14

/04· STRENGTH 1 · AGENTIC ENGINEERING (VS VIBE CODING)

I drive. AI drafts. I gate. AI ships — under guardrails.

Vibe coding = AI types for you, you trust the diff. Agentic engineering = AI plans, you gate, the harness enforces every action. I do the second.

CHAN
"Build a day-conflict filter for the driver pool. Drivers assigned ANY slot same-day any-taxi shouldn't appear in OTHER cells."
AI
8 RED tests first. They all fail (no implementation).
CHAN
"Good. Now implement."
AI
All 8 green. Surfaced 9 test regressions in adjacent code. Reconciled with v1.34.7 + v1.14.12 contracts via priorityDriverIds + currentDriverId exemptions. 4 stale assertions updated.
CHAN
"OK push to staging."
AI
✓ env=preview · alias attached
✓ bundle live: index-D49IMDRo.js
✓ 475/475 tests pass · 0 regressions

One session. ~3 hours. From blank file to live in production. My job: know what to ship. Theirs: ship it.

05 / 14

/05· STRENGTH 2 · AGENT GUARDRAILS & HITL

AI can ship to my repo. Production needs receipts.

Human-in-the-loop + parallelized guardrails (Anthropic pattern). Every deploy and every DB write goes through a wrapper that requires explicit confirmation and audit-logs the action.

① Rules (HITL)

Never auto-promote. Production is sacred. Wait for explicit human auth.

Explain before answer. Plausible output is a bug.

No silent DB writes. Silence is the worst failure mode.

Human-in-the-loop on deploy. AI plans, human approves, harness executes.

② Wrappers

bin/deploy-staging.sh · dry-run default, --confirm to write

bin/smoke-staging.sh · 5-check verification

bin/d1-safe.sh · audit-log every confirmed write

③ Verification

5-source receipt chain for every deploy:

  1. git log
  2. git reflog
  3. git ls-remote
  4. Cloudflare REST API
  5. curl + grep
Caught a fabrication incident in this session

Earlier turns I (the AI) had invented a successful deployment. Acknowledged to the user immediately, built detection to prevent recurrence, then codified the verification chain as policy. Honesty + integrity > plausible output.

06 / 14

/06· STRENGTH 3 · TDD SOFTWARE DEVELOPMENT

Built to test, not to ship.

Every behavior change begins as a failing test.

RED
Write the failing test
Spec the behavior in code. Watch it fail for the right reason.
→
GREEN
Make it pass
Smallest change that flips the assertion. Nothing more.
→
REFACTOR
Tidy + reconcile
Clean code. Reconcile with prior contracts. Re-run all tests.
1,130
passing tests
159
test files
0.52
test/source ratio
0
flaky tests

The discipline. When the test breaks, the test tells the truth. When it doesn't, the change is suspect. Ship-by-test > ship-by-hunch.

07 / 14

/07· STRENGTH 4 · AGENT HARNESS DESIGN

I author the rules the AI must follow.

Anthropic's "augmented LLM" — the model is a building block, the harness is the engineering. Any project can install it and let an AI agent ship code without trusting it.

AGENTS.md

A policy file every AI agent reads on session start. 3 non-negotiable Critical Rules for the taxi-rental repo. Codified rule-as-code.

Rule 1: Never auto-promote to production.
Rule 2: Explain before answer.
Rule 3: Never change the DB without explicit instruction.

3 safety wrappers

Each wraps a wrangler command. Each requires --confirm. Each audit-logs writes.

ScriptWraps
bin/deploy-staging.shPages + Worker deploy
bin/smoke-staging.shPost-deploy verification
bin/d1-safe.shD1 SELECT/INSERT/UPDATE/DELETE

Why it matters. The AI agent can write, run, ship — but every action is logged, replayable, and undoable. The harness makes that contract explicit, not implicit. Trust with receipts.

08 / 14

/08· STRENGTH 5 · AGENTOPS · DEPLOY / OBSERVE / ROLLBACK

A pipeline I can actually verify.

AgentOps (IBM, 2026) = the named discipline of operating AI agents in production. Not "CI runs green" — I want to know the bundle is live and matches the source. Every link in the loop has a guard.

🧪 ① RED TEST TDD · write failing test first ✏️ ② GREEN TEST pnpm test + pnpm typecheck 🚀 ③ DEPLOY bin/deploy-staging.sh --confirm required 🔍 ④ VERIFY 5-source receipt chain git + CF API + curl 📡 ⑤ MONITOR smoke stays green users report clean ↻ ⑥ LOOP next commit → back to ① loop ◄── next commit / new feature GUARDS no code without failing test no deploy without explicit --confirm + audit log no "shipped" claim without 5 sources agreeing no silent regression — smoke check on every deploy no auto-promote to production (always explicit user)

Trunk-based on staging. main frozen at v1.19.0 source. Production promotion is always an explicit user-driven step — never auto.

09 / 14

/09· THE PROJECT · LIVE + SCALE

Taxi Rental Management System — 244 commits later.

A bilingual (zh-HK + en) operations app for an HK taxi-rental company. Replaces whiteboards + WhatsApp. ~50 taxis · 3 roles · HKD billing · in-app notifications.

staging.taxi-rental.pages.dev 200 OK taxi-rental.pages.dev 200 OK
244
commits
57
releases
62,631
source lines
32,492
test lines
10 / 14

/10· THE PROJECT · STACK

Cloudflare-stack, edge-native.

React 18 TypeScript Vite Tailwind Hono Cloudflare Workers Cloudflare Pages Cloudflare D1 Cloudflare R2 Cloudflare Cron Drizzle ORM Vitest Playwright pnpm workspaces
11 / 14

/11· AGENTIC BUILD SESSION · LIVE WALKTHROUGH

A real session. ~3 hours. From "blank file" to "verified live."

v1.41.x driver-pool day-conflict filter — full agentic lifecycle, with parallel sub-agents and human-in-the-loop gates.

PHASE 1
PROMPT (human)
  • Oscar declares
  • Scope + accept.
  • 1 prompt ~1 line
human → AI
→
PHASE 2
UNDERSTAND
  • Read 47 files
  • Trace dataflow
  • Map contracts
workflow
→
PHASE 3
PLAN (parallel)
  • spec author
  • risk auditor
  • test author
3 sub-agents
→
PHASE 4
BUILD (TDD)
  • 8 RED → GREEN
  • Reconcile prior
  • Stale asserts
workflow
PHASE 5
GATE (human)
  • I read diff
  • Reject 2 of 3
  • Approve one
HITL gate
→
PHASE 6
DEPLOY (audit)
  • bin/deploy-stg
  • --confirm
  • audit-log
wrapper
→
PHASE 7
VERIFY (5 src)
  • git log / reflog
  • ls-remote + CF
  • curl + grep
receipts
→
PHASE 8
VERIFY (human)
  • Open live URL
  • Hard-refresh
  • Accept / roll back
HITL accept

⟨ Phases 1 + 5 + 8 are human gates. Phases 2-4 are AI workflow. Phases 6-7 are receipts. ⟩

12 / 14

/12· RECEIPTS

How to verify this isn't hype.

Every claim on this deck points at a verifiable artifact. Open the receipts — don't trust the slide.

✓
REPO
github.com/oscarhyc/
244 commits · 57 releases
✓
TESTS
Vitest + Playwright
475 / 475 web · 1,130 total · 0 flaky
✓
LIVE
staging.taxi-rental.pages.dev
200 OK · verified this session
✓
EDGE
cv-deck.pages.dev
this deck · live
✓
AGENT
Hermes Agent + MiniMax-M3
documented · slide 2
✓
HARNESS
bin/deploy-staging.sh
bin/d1-safe.sh · AGENTS.md
✓
RECEIPTS
5-source deploy chain
git + reflog + ls-remote + CF API + curl
✓
FABRICATION
Caught + disclosed
honesty over plausible output

⟨ Trust with receipts. Not "trust me." Open the git log. ⟩

13 / 14

/13· CONTACT

Let's talk.

Looking for senior full-stack, platform-cloud, or agentic AI engineering roles in Hong Kong (or remote). Open to interesting contract work too.

📧 Reach out

oscarhychan@gmail.com

github.com/oscarhyc

[your portfolio URL]

📄 Grab the CV

📄 Grab the CV

Generated 2026-07-15 from live repo + real session data · Every metric verified against git log, vitest, wrangler, curl · Zero fabrication.

14 / 14
01 / 14 F fullscreen S scanlines