
219 variables in six collections — alias model, naming contract, and four governance rules.六个集合、219 个变量——别名模型、命名契约与四条治理规则。
This designer built an AI product — not just an interface.这位设计师做出的是一个 AI 产品——而不只是一套界面。
An AI-powered money companion for Singapore, taken from zero to an implemented Alpha by one designer. I defined why the product should exist, decided what AI should — and should not — do, built the design system as a governed contract, and implemented one complete financial journey: receipt → OCR review → GST validation → exact split → PayNow settlement.一个面向新加坡的 AI 记账与分账助手,由一位设计师从零推进到已实现的 Alpha 版本。我定义了产品为何存在,决定了 AI 应该做什么、不应该做什么,把设计系统构建为被治理的契约,并实现了一条完整的资金旅程:小票 → OCR 审校 → GST 校验 → 精确分账 → PayNow 结算。
Expense trackers record transactions; people still finish the work — reading the receipt, checking GST and service charge, working out who ordered what, reconciling every cent, chasing payment. The opportunity was the invisible work between a messy receipt and a resolved financial task. SplitKaki's job: turn messy financial evidence into a trusted next action. The north-star metric shifted accordingly — from screen views to weekly completed money tasks.记账工具记录交易,而"活"仍然留给人来干——读小票、核对 GST 与服务费、算清谁点了什么、每一分钱对账、催款确认。机会不在再做一块仪表盘,而在一张凌乱小票与一件被解决的财务任务之间那段"看不见的工作"。SplitKaki 的职责:把凌乱的财务凭证,变成一个可信任的下一步。北极星指标随之改写——从页面浏览量,变为每周完成的资金任务数。
The thesis this case argues: people don't hire designers because they use AI — they hire designers because they know what AI should build.这个案例要论证的命题是:人们雇佣设计师,不是因为设计师会用 AI——而是因为设计师知道 AI 应该去构建什么。
The design work began by choosing the product model, the trust model and the release model — not a visual style. Singapore is treated as a product capability, not a translated skin: GST, service charge, PayNow, local merchants and group-dining behavior shaped the workflow, rules and language from the start. The information architecture follows unfinished work, not financial institutions — home became "Today," answering three signals: what happened, what needs attention, what next.设计工作从选择产品模型、信任模型与发布模型开始——而不是从视觉风格开始。新加坡被当作一种产品能力,而非一层翻译皮肤:GST、服务费、PayNow、本地商户与聚餐行为,从一开始就塑造了工作流、规则与语言。信息架构追随"未完成的工作",而非金融机构的分类——首页变成 "Today",回答三个信号:发生了什么、什么需要注意、接下来做什么。
Rejected a balance-led banking dashboard. Chose a daily assistant that answers: what happened, what needs attention, what next.否掉了以余额为主角的银行式仪表盘,选择一位每日助手:发生了什么、什么需要注意、下一步做什么。
Rejected black-box AI that "just fixes it." Chose confidence, evidence, correction and explicit confirmation at every financial boundary.否掉了"直接帮你改好"的黑箱 AI,选择在每一个资金边界上给出置信度、证据、修正入口与明确确认。
Rejected a wide collection of disconnected features. Chose one vertical slice from sign-in to receipt, split, PayNow QR and activity.否掉了一堆互不相连的功能,选择一条垂直切片:从登录到小票、分账、PayNow 二维码与账目历史。
Tokens created consistency; components encoded behavior. 132 reusable component contracts across nine families carry named states — default, loading, empty, error, offline, permission — and an accessibility description each, documented in Storybook beside curated implementation examples. The delivery chain is governed end to end: Figma → variables → components → Storybook → React/HTML. The handoff is not a static file; it is a chain of reusable decisions.令牌带来一致性,组件封装行为。9 个家族、132 份可复用组件契约,每一份都带具名状态——默认、加载、空、错误、离线、无权限——以及一段无障碍说明,连同精选实现示例记录在 Storybook 中。交付链路被端到端治理:Figma → 变量 → 组件 → Storybook → React/HTML。交接物不是一份静态文件,而是一条可复用决策的链。
Trust is a responsibility model, not a chatbot layer — and it is non-negotiable: AI can recommend the next action; it cannot silently rewrite financial truth.信任是一套职责模型,而不是一层聊天机器人——并且不可谈判:AI 可以推荐下一步,但不能悄悄改写财务事实。
Reusable contracts — every registry contract carries named states and an accessibility description.可复用契约——每份注册契约都带具名状态与一段无障碍说明。
Core screens / views mapped — Consumer and Admin planned as one coherent product system.核心界面/视图规划——消费端与管理端被规划为同一套连贯的产品系统。
Component families — foundations, actions, forms, data, cards, navigation, overlays, feedback and states.组件家族——基础、操作、表单、数据、卡片、导航、浮层、反馈与状态。
Detects and extracts, ranks merchant candidates, suggests category and split, explains assumptions, exposes confidence.检测与提取、给商户候选排序、建议分类与分法、解释假设、公开置信度。
Review uncertain fields, correct extracted values, confirm tax treatment, approve the final allocation and payment state.审校不确定字段、修正提取结果、确认税务处理、批准最终分配与支付状态。
Preserve original and corrected data, validate Singapore tax rules, reconcile every cent, protect private evidence, audit change.保留原始与修正数据、校验新加坡税规、逐分对账、保护私密凭证、留痕审计。
The file is a governed product system, not a canvas of pictures: 219 local variables in six collections with an alias model flowing primitives → semantic → component → product; 135 component sets carrying 1,031 variants; complete product flows where every state — empty, loading, error, offline, permission — is drawn; and a seven-board developer handoff that closes the design phase with acceptance gates. One rule sits above all of it: no HTML or React precedes Figma approval.这个文件是一套被治理的产品系统,而不是一张贴图画布:六个集合、219 个本地变量,别名模型沿"原始值 → 语义 → 组件 → 产品"流动;135 个组件集承载 1,031 个变体;完整的产品流程,空、加载、错误、离线、权限每个状态都被画出;以及一套七块板的开发交接,以验收门禁为设计阶段收口。所有规则之上还有一条:任何 HTML 或 React,都不先于 Figma 的批准。

219 variables in six collections — alias model, naming contract, and four governance rules.六个集合、219 个变量——别名模型、命名契约与四条治理规则。

The entire library as one continuous board, shown compressed for scale — foundations, actions, forms, data, cards, navigation, overlays, feedback and states, in light and dark. Detail boards appear throughout this page.整座组件库压缩为一根连续长卷,以示体量——基础、操作、表单、数据、卡片、导航、浮层、反馈与状态,横跨明暗两态。细节板见本页各处。

Trust, recovery and personalisation: PDPA-aware consent, OTP, in-context permissions, Face ID and privacy mode.信任、找回与个性化:PDPA 合规同意、OTP、按需权限、Face ID 与隐私模式。

Default, empty, loading, error, offline, permission, privacy-dark, notifications, search, activity, AI insight and quick actions.默认、空、加载、错误、离线、权限、深色隐私、通知、搜索、账目、AI 洞察与快捷操作。

Cards, accounts, receipts and payment reminders — freshness states, GST detail, and a dark card view.卡片、账户、小票与付款提醒——数据新鲜度状态、GST 明细,以及深色卡片视图。

Plan, forecast, history and the AI decision loop: confidence, evidence, a reversible move, and settings.计划、预测、历史与 AI 决策闭环:置信度、证据、可撤销的调整,以及设置。

219 variables · 135 component sets · 1,031 variants · 6 prototype flows — frozen contracts and an explicit approval boundary.219 个变量 · 135 个组件集 · 1,031 个变体 · 6 条原型流程——冻结的产品契约与明确的批准边界。

Two color modes, ten text styles, an 8 pt grid, elevation and motion tokens — every visual decision resolves to a token.两种色彩模式、十个文字样式、8pt 网格、层级与动效令牌——每个视觉决策都落到令牌上。

Instances first, core families, and a required state matrix from hover to offline to permission-denied.实例优先、核心家族,以及从悬停到离线、到权限拒绝的必备状态矩阵。

7 auth · 70 core consumer · 12 acceptance · 40 admin screens — stable IDs that stay immutable once engineering begins.7 屏认证 · 70 屏消费端核心 · 12 屏验收 · 40 屏管理端——工程启动后不可变的稳定 ID。

One system from a 390 px mobile baseline to 1,920 px admin — layout rules, thumb reach, no horizontal scroll.一套系统,从 390px 移动基线到 1920px 管理端——布局规则、拇指可达、主流程零横向滚动。

44 px touch targets, AA contrast, five motion tiers, keyboard and focus rules — motion must aid understanding, never reduce control.44px 触控目标、AA 对比度、五级动效层级、键盘与焦点规则——动效必须帮助理解,而非削弱控制。

0 broken aliases · 0 token leaks · 0 layout issues · design QA PASS — the acceptance gate before React, backend and analytics.0 个失效别名 · 0 处令牌泄漏 · 0 个布局问题 · 设计 QA 通过——React、后端与埋点实现之前的验收门。
Hover a card to scroll the full board · on touch devices, scroll inside the card.悬停卡片自动滑览整板 · 触屏设备可在卡片内滚动。
Instead of stopping at polished screens, the product logic continued through authentication, private receipt evidence, durable OCR jobs, field-level confidence, human correction, Singapore GST validation, cent-exact splitting, an amount-locked PayNow QR and a traceable activity history. Money lives in integer minor units; original OCR evidence is immutable; corrections are append-only. The screens below are rendered from the Sprint 1 codebase — the same tokens and components documented in the system, running as HTML and React. Hover any card to glide through the full page.产品逻辑没有止步于精修的界面,而是继续穿过:身份认证、私有小票凭证、可持久化的 OCR 任务、字段级置信度、人工修正、新加坡 GST 校验、精确到分的分账、金额锁定的 PayNow 二维码,以及可追溯的账目历史。金额以整数最小单位存储;原始 OCR 凭证不可变;修正只允许追加。下面的界面直接由 Sprint 1 代码库渲染——与系统中记录的是同一套令牌与组件,以 HTML 与 React 运行。悬停任意卡片即可滑览整页。
Every step has a product state, data contract, failure path and authoritative owner · Receipt demo: NTUC FairPrice, 95% confidence — GST 9% S$7.14, confirmed total S$86.42, total reconciled, Singapore GST logic validated.每一步都有产品状态、数据契约、失败路径与权责归属 · 小票示例:NTUC FairPrice,置信度 95%——GST 9% 计 S$7.14,确认总额 S$86.42,全额对平,新加坡 GST 逻辑校验通过。

Net position, spending pace, money owed and the next useful action on one calm surface.净头寸、消费节奏、待收待付,与下一个有用的操作,收在同一块安静的界面上。

Field-level confidence, correction states and Singapore GST validation before anything is confirmed.字段级置信度、修正状态与新加坡 GST 校验——一切确认之前,先过这一关。

Equal, exact, shares and itemized methods reconciling to the confirmed total, every cent.均分、指定、按份与按项四种方式,每一分钱都与确认总额对账。

Accounts, cards, receipts and memberships behind the transactions.交易背后的账户、卡片、小票与会员凭证。

Governed component contracts — tokens, states and accessibility notes — as a living catalog.被治理的组件契约——令牌、状态与无障碍说明——以活目录的形式存在。
Hover a card to scroll the full screen · on touch devices, scroll inside the card.悬停卡片自动滑览整页 · 触屏设备可在卡片内滚动。
SplitKaki moved from a loose idea to a connected strategy, design language, reusable system, engineering architecture and implemented Alpha journey — one implemented vertical slice prioritized over disconnected demos. The outcome: strategy, design and engineering now describe the same product.SplitKaki 从一个松散的想法,走到了互相咬合的产品策略、设计语言、可复用系统、工程架构与已实现的 Alpha 旅程——一条实现完整的垂直切片,优先于一堆互不相连的演示。结论是:策略、设计与工程,如今描述的是同一个产品。
Why it exists, who it serves and what could create paid value.为何存在、服务谁,以及什么可能创造付费价值。
IA, navigation, user flows and AI-human boundaries.信息架构、导航、用户流程与 AI—人的边界。
Tokens, modes, states, components and interaction rules.令牌、模式、状态、组件与交互规则。
Data contracts, APIs, rules, security and testable invariants.数据契约、API、规则、安全与可测试的不变量。
A receipt can become a manually marked-paid, traceable shared expense.一张小票可以变成一笔手动标记已付、全程可追溯的共同支出。