Section A–A · Selected work作品选 SFO 37.7749°N 122.4194°W

Kaihuan Huang

Backend / AI Engineer — financial APIs, AI-assisted reviews and data pipelines.后端 / AI 工程师 —— 资金类 API、AI 辅助审核与数据管道。

Python and Go services: FastAPI and PostgreSQL in production, with AWS and Azure deployments, transaction controls, idempotent ingestion, release safety and asynchronous workflows.Python 与 Go 服务:生产环境中的 FastAPI 与 PostgreSQL,涵盖 AWS 和 Azure 部署、事务控制、幂等接入、发布安全与异步工作流。

Open to AI / backend engineering roles · US permanent resident正在看 AI / 后端工程岗位 · 美国永久居民

Six works on the wall墙上的六件作品

Live · independent reimplementations · synthetic data · source & tests在线 · 独立重写 · 合成数据 · 附源码与测试
AI systems · 2025 — 2026 · Kaihuan Huang Hover to measure · click to enter悬停测量 · 点击进入
01

— Behind the wall墙后的工作

Production, private and in-progress work生产环境、私有代码与进行中的项目
Nº07Re-run of my York MSc thesis · Oct 2026重做约克硕士论文 · 2026 年 10 月

Revisiting my MSc thesis

Time-series forecasting · evaluation design时间序列预测 · 评估设计

I re-ran my master's thesis this year. It turned out my model couldn't beat the simplest guess, “tomorrow's price equals today's”, and I found two bugs in my code. I wrote that down honestly, and now I always compare against the simplest baseline first.今年我重跑了自己的硕士论文。结果我的模型连最简单的猜法「明天的价格 = 今天的价格」都没打过,我还在代码里找到了两个 bug。我如实写了出来,现在我总是先和最简单的基准比。

  1. Reproduce复现
  2. Find the errors找错
  3. 2026 protocol2026 协议
  4. 16 models vs random walk16 个模型对随机游走
  5. Second test period第二段测试期
  6. Conclusion结论
Read the case →阅读案例 →
Nº08Personal tool · Oct 2026个人工具 · 2026 年 10 月

Bilingual Note Reader

Local speech synthesis · Obsidian · GPU home server本地语音合成 · Obsidian · 家用 GPU 服务器

My notes and papers mix Chinese and English. This reads them aloud in Obsidian, switching to a native voice for each language mid-sentence and highlighting the exact sentence being read, on the PDF page itself, all on my own hardware.我的笔记和论文中英混杂。它在 Obsidian 里把它们读出来,句子中途按语言切换成母语声音,并在 PDF 页面上高亮正在读的那一句,全部跑在自己的机器上。

  1. Note or PDF笔记或 PDF
  2. Line chunks按行分段
  3. Split zh / en中英切分
  4. Qwen3-TTS · KokoroQwen3-TTS · Kokoro
  5. Trim, pause, stitch裁静音、加停顿、拼接
  6. Play + highlight on page播放 + 页面高亮
Read the case →阅读案例 →
Nº09Personal tool · Oct 2026个人工具 · 2026 年 10 月

Narrated Study Videos

Script-to-video pipeline · local speech synthesis · Playwright · ffmpeg脚本生成视频 · 本地语音合成 · Playwright · ffmpeg

I write a system-design walkthrough as one sentence per line, and one command turns it into a narrated mock interview: two voices, Chinese and English subtitles, guess-then-reveal quizzes, motion on whatever changed, and code traces taken from actually running the code. Five episodes so far, each one improving the engine.我把系统设计讲解写成一行一句的脚本,一条命令就生成一场模拟面试视频:两个声音、中英字幕、先猜再揭晓的小测、变化的地方会动,代码执行画面来自真跑代码。目前做了五集,每一集都让引擎更好一点。

  1. Script (1 line = 1 sentence)脚本(一行一句)
  2. Speech per line逐句配音
  3. Scene → HTML → frame画面 → HTML → 截图
  4. Clip per sentence逐句成段
  5. Join + loudness拼接 + 响度
  6. MP4 + bilingual SRTMP4 + 中英字幕
Read the case →阅读案例 →
Nº10Independent prototype · Oct 2026独立原型 · 2026 年 10 月

Dispute Ingestion Service

Card disputes · Go · synthetic data银行卡争议 · Go · 合成数据

Card networks redeliver and regulators set deadlines; this service turns both into one record per case, a dated deadline and a person in the loop for anything risky.卡组织会重复投递,监管会设截止时间;这个服务把两者变成:每个案件一条记录、明确的截止日期,有风险的都交给人。

  1. CSV batch · webhookCSV 批次 · webhook
  2. Validate校验
  3. Dedupe去重
  4. Deadlines + risk截止日期 + 风险
  5. Manual review人工审核
  6. Hash-chained ledger哈希链账本
Read the case →阅读案例 →
Nº11Independent rebuild · private repo独立重建 · 私有仓库

AI Governance Platform

Privacy & policy platform · Sep 2026隐私与策略平台 · 2026 年 9 月

Detect personal data in what employees send to AI tools, decide allow / mask / watch / block, and keep an audit trail no one can quietly edit.检测员工发往 AI 工具内容中的个人数据,决定放行 / 脱敏 / 观察 / 拦截,并保留无法被悄悄修改的审计记录。

  1. AI-tool eventAI 工具事件
  2. OutboxOutbox
  3. Worker · row lockWorker · 行锁
  4. Policy decides策略判定
  5. Incident + audit chain事件 + 审计链
Read the case →阅读案例 →
Nº12Operations toolkit · private repo运维工具集 · 私有仓库

Remote Commander Ops

macOS supervision & monitoring · Oct 2026macOS 进程监督与监控 · 2026 年 10 月

Keeps a home Mac reachable from a phone through an AI chat client: launchd supervision, a safe installer, and a metadata-only monitor that says why remote access is down.让家里的 Mac 能通过手机上的 AI 聊天客户端随时被调用:launchd 监督、安全的安装器,以及只记元数据、能说清为什么断线的监控。

  1. Phone · AI chat client手机 · AI 聊天客户端
  2. Vendor relay厂商中继
  3. launchd · pinned runtimelaunchd · 锁定运行时
  4. Single instance?单实例?
  5. Monitor · class + alert监控 · 分类 + 告警
Read the case →阅读案例 →
Nº14BloomFrontier · Jackson Ventures · 2026BloomFrontier · Jackson Ventures · 2026

Loan-Draw Review Controls

Fintech lending · merged Oct 2026金融科技借贷 · 2026 年 10 月合并

Money leaves only after two people sign off, the same draw cannot be funded twice, and every step lands in a verifiable audit chain.资金只在两人签字后放出,同一笔提款不能重复放款,每一步都写入可验证的审计链。

  1. Draw request提款申请
  2. AI checks (team)AI 检查(团队)
  3. Review queue审核队列
  4. Maker + checker?制单 + 复核?
  5. Fund + audit chain放款 + 审计链
Read the case →阅读案例 →
Nº15Founding engineer · 2023–24创始工程师 · 2023–24

REEA

AI real-estate platform · 2023–24AI 房地产平台 · 2023–24

A real-estate platform for buyers, sellers and agents: listings and search, plus a GPT-3 tool that writes listing content.面向买家、卖家和经纪人的房地产平台:房源与搜索,外加 AI 撰写的房源内容。

  1. Buyer · seller · agent买家 · 卖家 · 经纪人
  2. Listings + search房源 + 搜索
  3. AI content studioAI 内容工作台
  4. Word allowance?字数额度?
  5. GPT-3 APIGPT-3 API
Read the case →阅读案例 →
Nº16Concept 2023 · prototype 2024 · restarted 20262023 年构想 · 2024 年原型 · 2026 年重启

LightUp

Charity giving platform · Gold, London Design Award慈善捐赠平台 · 伦敦设计奖金奖

Giving that shows its impact: match donors to causes, tell each donor whose life their gift changed, and connect the charities behind it.让捐款看得见影响:为捐款人匹配项目,告诉每位捐款人他的捐助改变了谁,并把背后的慈善机构连接起来。

  1. Donor捐款人
  2. Match causes匹配项目
  3. Gift捐款
  4. Charity reports机构报告
  5. Story checked?故事核对过?
Read the case →阅读案例 →
02

— How I decide我怎么做决定

Three calls, what they cost, the rule I kept三个决定、各自的代价、留下的规则

Three calls I made on real projects, in the same shape as the learning archive: what happened, what it taught me and what it cost, the rule I kept, and where it shows today.我在真实项目里做的三个决定,格式和学习档案一样:当时发生了什么,学到什么、代价是什么,留下的规则,今天体现在哪里。

D01 · 2026Nalu · IPOT · pre-launch testingNalu · IPOT · 预发布测试

The model can suggest; code decides what is booked模型可以建议,订什么由代码决定

Then当时
We let a language model fill bilingual restaurant bookings. In a 30-case pilot only 17 were fully correct, and 3 contained details the guest never gave.我们让语言模型填写中英双语的餐厅预订。30 例试点里只有 17 例完全正确,3 例填了客人根本没说过的信息。
What I learned · the cost学到的 · 代价
A better prompt could not be the only guard on a booking a real guest relies on. I moved every booking field and the final confirmation into code and kept the model for language. The cost: one more confirmation step for the guest.真实客人要依赖的预订,不能只靠更好的提示词把关。我把每个预订字段和最后的确认都改由代码处理,模型只负责语言。代价:客人要多确认一步。
The rule规则
Anything committed on a customer's behalf is validated by code and confirmed with an explicit yes.凡是替客户提交的东西,都由代码校验,并且要客人明确说「是」。
Now现在
On a separate 39-case held-out set: 33 fully correct, 0 invented values. The two sets are not a like-for-like before and after.在另一份 39 例留出集上:33 例完全正确,0 个编造值。两套数据不是严格可比的前后对照。
Shows today in今天体现在 Booking Agent →
D02 · 2026Career OPS · personal project · Sep 30 snapshotCareer OPS · 个人项目 · 9 月 30 日快照

A traceable record beats a bigger dataset可追溯的记录,胜过更大的数据量

Then当时
A third-party job feed showed the date a posting was found as the date it was published, so stale jobs looked new. Of its 1,375 “recent” rows, only 214 were actually recent.第三方岗位数据把「抓到的日期」当成「发布日期」,旧岗位看起来像新的。它标为「最近」的 1,375 条里,真正是最近的只有 214 条。
What I learned · the cost学到的 · 代价
More rows were worth less than rows I could trace. I switched to employers' own ATS APIs and kept the source link and timestamp on every record. The cost: every ATS has its own schema and its own meaning of “posted”, so each source needs its own mapping.条数多,不如每条都能追溯。我改用雇主自己的 ATS 接口,每条记录都保留来源链接和时间戳。代价:每个 ATS 的格式和「发布」的含义都不同,每个来源都要单独做映射。
The rule规则
Know where a field came from before you trust it.先知道一个字段从哪来,再决定信不信它。
Now现在
264,148 postings from native sources in the Sep 30, 2026 snapshot, each with its source link.2026 年 9 月 30 日快照:264,148 个岗位,全部来自原始来源,每条都带来源链接。
Shows today in今天体现在 Career OPS →
D03 · 2026BloomFrontier · Jackson Ventures · merged Oct 2026, not deployedBloomFrontier · Jackson Ventures · 2026 年 10 月已合并,未部署

A model never moves money模型永远不能自己动钱

Then当时
Loan officers review construction-draw evidence before money is released. Automated checks could flag missing documents; the question was how far to let them go.放款前,信贷员要审核工程提款的证据。自动检查能标出缺失的文件,问题是让它走多远。
What I learned · the cost学到的 · 代价
Checks may raise a flag, but release needs a person and the database. I separated evidence checks, two-person approval and database-enforced limits, and split the work into small pull requests that could each be reviewed on their own. The cost: more review time and a more complex workflow, in exchange for clear accountability.检查可以报警,但放款要靠人和数据库。我把证据检查、双人审批和数据库强制的限制分开,并把工作拆成能各自单独审核的小 PR。代价:审核时间更长、流程更复杂,换来的是清楚的责任归属。
The rule规则
Anything that moves money needs a person's sign-off and a database constraint, not a model's answer.凡是动钱的操作,要有人签字、有数据库约束,而不是靠模型的回答。
Now现在
5 pull requests merged on Oct 9, 2026, with 103 financial tests on real PostgreSQL, including concurrent approvals. Not yet deployed.5 个 PR 于 2026 年 10 月 9 日合并,103 个资金相关测试跑在真实 PostgreSQL 上,包括并发审批。尚未部署。
Shows today in今天体现在 Loan-Draw Review Controls →
03

— Learning Archive学习档案

2023 — 2025 · what each early project taught me2023 — 2025 · 每个早期项目教会我的事

Earlier projects that are not portfolio pieces on their own: tutorials, coursework, hackathons and prototypes. Each one taught me a rule I still build by, and each rule points to the work where it shows today.单独拿出来不够格当作品的早期项目:教程、课程、黑客松和原型。每一个都教会了我一条至今仍在用的规则,每条规则都指向今天体现它的作品。

  1. A01 2023 First LLM apps第一批 LLM 应用Self-started自发项目 Measure on a held-out set before claiming it works.先在留出集上测量,再说它能用。 → Booking Agent
  2. A02 2023–26 York MSc in AI约克大学 AI 硕士MSc coursework硕士课程 Report recall and precision per category and per language, and state the limits next to the numbers.按类别、按语言报告召回率和精确率,并把局限写在数字旁边。 → PII Detector
  3. A03 2023 Weekend products周末产品Hackathons黑客松 Write down what it does not handle, next to what it does.把它处理不了的写清楚,放在它能做的旁边。 → Career OPS
  4. A04 2023–24 Inside the models拆开模型看Learning by rebuilding照着重建来学 Know a model's shapes and memory cost before downloading it.下载模型之前,先弄清它的形状和内存成本。 → LLM Arch Cards
  5. A05 2023–24 REEA · Django AI web appREEA · Django AI 网站Team product团队产品 Tests and a release gate before production; every deploy traceable to a commit.上生产之前要有测试和发布闸门;每次部署都能追溯到提交。 → IPOT Restaurant Platform
  6. A06 2025 Generated apps生成出来的应用AI-agent prototypesAI Agent 原型 Write the failing test first, even when an agent writes the code.即使代码由 Agent 来写,也先写失败的测试。 → AI Governance Platform
04

— The Engineer工程师

Section drawing: a message passes rules, then an explicit-yes gate, before any action is written to an audit ledger. SECTION B–BSCALE 1:1 MESSAGE “Table for 4 tomorrow at 7” RULES resolve fields · no model call EXPLICIT YES? else: ask ACTION create_reservation() #a1f3#7c02#e9b4 0 INVENTED VALUES LEDGER
FIG. 01 — The model proposes; the system decides模型提议,系统决定York · MSc
Profile简介

Measured before it ships上线之前,先量清楚

“A model's answer is a proposal. What runs is decided by rules, tests and an explicit yes.”“模型的回答只是提议。真正执行什么,由规则、测试和一句明确的‘是’来决定。”

I build production Python services and evaluated LLM applications. At Jackson Ventures I shipped a reservation service real guests use, led the IPOT POS backend, rebuilt Nalu after its LLM pilot invented booking values, and built loan-draw review controls for BloomFrontier. Before that, at Polygraf.ai, I built PII detection and policy enforcement for text sent to AI tools.我做生产级 Python 服务和经过评估的 LLM 应用。在 Jackson Ventures,我上线了真实客人在用的预订服务,主导 IPOT 的 POS 后端,在 LLM 试点编造预订字段后重建了 Nalu,并为 BloomFrontier 构建提款审核控制。此前在 Polygraf.ai,我为发往 AI 工具的文本构建 PII 检测与策略执行。

Every number on this site names where it was measured. Where the code is private, the case page says so.本站每个数字都注明测量来源;代码不公开的,案例页会直接说明。

33/39
held-out cases fully correct · Nalu留出集全字段正确 · Nalu
264K
postings collected · Sep 30 snapshot岗位采集量 · 9 月 30 日快照
136 ms
p95 PII detection · local GPUPII 检测 p95 · 本地 GPU
243
tests in my governance platform我的治理平台中的测试数
  • Apr 2023 — now
    AI Engineer · Jackson VenturesBloomFrontier fintech lending · IPOT restaurant platform · revenue analytics · San Francisco Bay Area · affiliate of REAAI under the same ownershipBloomFrontier 金融科技借贷 · IPOT 餐饮平台 · 营收分析 · 旧金山湾区 · 与 REAAI 同一老板旗下的关联公司
    • Building BloomFrontier's AI-assisted loan-draw review (FastAPI/PostgreSQL): missing or flagged documents go to loan officers instead of being approved automatically.构建 BloomFrontier 的 AI 辅助提款审核(FastAPI/PostgreSQL):缺失或被标记的文件转给信贷员,而不是自动通过。
    • Two-person approval for higher-risk draws behind a feature flag, with loan-level row locks, repeat-funding checks and hash-chained audit records; 103 financial tests on real PostgreSQL.高风险提款采用双人审批(功能开关控制),配合贷款级行锁、重复放款检查和哈希链审计记录;103 个资金测试在真实 PostgreSQL 上运行。
    • Transactional outbox and Temporal recovery for draw verification: retries, a watchdog that hands stuck runs to manual review, and a constraint against overlapping runs.为提款核验加入事务性 outbox 与 Temporal 恢复:自动重试、把卡住的任务转人工的看门狗,以及防止重复运行的约束。
    • A release gate that replaced a deploy workflow which hid failed migrations: verified backup, preflight checks, health check and rollback; 4/4 Docker rehearsals.发布闸门取代了会隐藏迁移失败的部署流程:经过验证的备份、预检、健康检查与回滚;Docker 演练 4/4 通过。
    • Rebuilt Nalu's bilingual booking flow with deterministic field resolution and explicit confirmation: 33/39 held-out cases fully correct, 0 invented values.用确定性字段解析与明确确认重建 Nalu 双语预订流程:留出集 33/39 全字段正确,0 编造。
    • POS settlement and refund APIs for an AWS-hosted restaurant stack: atomic transactions, sale-time price snapshots and logged voids.为部署在 AWS 上的餐厅系统构建 POS 结算与退款 API:原子事务、售出时价格快照、作废留痕。
    • Reservation APIs used by real guests: Twilio OTP, token-based self-service changes and SMS delivery-status tracking.真实客人在用的预订 API:Twilio 验证码、基于令牌的自助改期,以及短信送达状态跟踪。
    • Turned Chowbus sales statements into daily revenue records: 36 of 40 months reconcile to the statement totals; the rest are rejected, not guessed.把 Chowbus 销售对账单转为每日营收记录:40 个月中 36 个月与对账单合计一致,其余被拒收,不做猜测。
    • Google Ads and Meta spend importers feeding the revenue agent's code-based financial calculations.编写 Google Ads 与 Meta 花费导入器,供收入 Agent 做基于代码的财务计算。
  • Oct 2025 — Jun 2026
    AI Engineer Intern · Polygraf.aiRemote, USA远程 · 美国
    • Built a PII detection and masking prototype for LLM inputs using Presidio, Hugging Face Transformers NER and rule-based checks.用 Presidio、Hugging Face Transformers NER 和规则校验,为 LLM 输入构建 PII 检测与脱敏原型。
    • Worked on a React/TypeScript and FastAPI governance dashboard for privacy policies, credentials and security incidents.参与 React/TypeScript + FastAPI 治理后台,覆盖隐私策略、凭据管理与安全事件处理。
  • Feb 2022 — Apr 2023
    Founding Engineer · REAAISan Mateo, CA加州圣马特奥
    • Built a full-stack real-estate platform (Next.js/React, Node.js, MongoDB) with NextAuth authentication and Google Maps API property search, deployed through CI/CD on Azure.构建全栈房地产平台(Next.js/React、Node.js、MongoDB),NextAuth 认证与 Google Maps API 房源搜索,通过 CI/CD 部署到 Azure。
  • Sep 2023 — Jan 2026
    MSc Computer Science with Artificial IntelligenceUniversity of York, UK (Online)英国约克大学(在线)
  • Jun 2022 — Dec 2022
    Certificate in Full Stack Web DevelopmentUC Berkeley Extension加州大学伯克利分校进修部
Backend / Data
Python, Go, SQL, TypeScript · FastAPI, REST APIs, SQLAlchemy, Alembic, PostgreSQL, SQLite/FTS5
Systems / Security
database transactions, row locks, Temporal, transactional outbox, idempotency, RBAC, audit trails, release gates
Cloud / Testing
AWS, Azure VM, Docker, OpenTofu (IaC), GitHub Actions, pytest, go test, Playwright, Vitest
AI / Full Stack
Hugging Face Transformers, Presidio, LLM tools, evaluation, pgvector, Ollama · React, Next.js
Spoken
English, 普通话, 粤语, Español
05

— The Invitation邀请

Hiring for AI or backend engineering?在招 AI 或后端工程师?
Let's build
what ships
一起做
能上线的东西
huangkaihuan0216@gmail.com

San Francisco Bay Area · US permanent resident, no sponsorship needed.旧金山湾区 · 美国永久居民,无需工作签证担保。