Back to selected work
01 · Case study

NihonGo Ink

Learn beautiful Japanese handwriting.
Flagship · Indie iPadOSPre-launch

A senior design leader who can also ship. I designed and built this production iPadOS app solo (with no engineering background) by directing a multi-agent AI development team, the same way I led design orgs at Amazon.

Production-quality app built by a non-engineer running AI agents like a team

RoleFounder · Product & UX Lead
StackiPadOS · SwiftUI · PencilKit · Supabase · KanjiVG
TeamSolo, directing a multi-role AI development team
StatusTestFlight beta Summer 2026 · targeting Fall 2026 launch
02

Why this matters

NihonGo Ink Today screen showing the practice goal ring, Today's Pick character cards, and a Coach's Observation with sakura and dragonfly branding
Today screen: practice goal, character pick, and coach observations.

Most design leaders can direct a team; most people shipping solo with AI aren't design leaders. My value is the overlap: senior product judgment plus the operating model that makes AI agents produce real, shippable quality, so I deliver the output of a team at the cost of one.

NihonGo Ink is the proof. It's a technically real app (per-stroke handwriting grading, a hybrid on-device/cloud ML pipeline, offline-first), designed, built, and run entirely through a system I architected and lead.

03

How I built it without writing the code

I set up a structured multi-role team in Claude Code and ran it like an org: the agents execute against a clear spec; I do the leadership.

  • The core team: Product Owner, iOS Developer, UX Designer, QA Engineer, UX Researcher, each with a defined brief. Specialists (tooling, review, growth, finance) pulled in ad hoc.
  • The operating model: a single source of truth every agent decides against, explicit handoffs between agents, and a quality gate nothing merges without passing. This is the part I brought from a decade of running design orgs.
  • Custom skills: project-specific Claude Code commands that formalize the repeated operations (sprint-preview authoring, code-review triage, premise verification, session-start orientation), so discipline holds under daily friction.

On a solo AI build, the bottleneck is whether someone is doing the job of a product owner and an engineering manager, not the model. That's the job I do.

The UX Researcher ran a competitive audit before a line of the design system was written — ten Japanese learning apps reviewed across writing interaction, feedback model, curriculum structure, and visual approach. It was one of many inputs into the product brief.

Japanese Learning App Audit comparing ten apps including Duolingo, WaniKani, Skritter, and Kanji Study across writing interaction, feedback model, curriculum structure, and visual approach
Competitor audit: ten Japanese learning apps reviewed before a line of the design system was written.

I also extended Figma into a programmable surface the agent team writes to directly, producing personas, competitive audits, and wireframes alongside the design system rather than stranding them in chat. And because character forms are immutable assets, I cleared commercial embedding licensing for a pen-kaisho typeface (the script class students learn to write, rendered in a pen-pressure style), so displayed character forms mirror how the strokes are produced.

NihonGo Ink Controls specification page showing four sections: Action Controls with five canonical button styles, Navigation-Row Disclosure with three treatments, Selection Controls with pill strip, module circle, and segmented control, and Input Controls covering writing input and search
Controls spec: four documented control families, each sourced to the Swift file that implements it. One function, one component.
NihonGo Ink HIG specification for My Sets — Personal Practice Library, showing six wireframe states: Library entry row, in-row add affordance, add-to-set picker, My Sets index, empty on-ramp, and set-detail drill grid, with a token map and HIG amendments panel
My Sets HIG: six wireframe states, a token map confirming zero new tokens, and four authored amendments applied in code.

The UX Designer agent works against a full app Human Interface Guidelines — screen archetypes, overlay decision tables, control specs, spacing tokens — maintained in Figma alongside the design system. Agents cite the relevant HIG section in every PR. A PR using the wrong component is a bug, not a style difference.

04

The craft

NihonGo Ink teaches handwriting the way it's taught (correct stroke order, direction, and shape) for two audiences: Japanese learners studying for the JLPT proficiency exam and 美文字 (bimoji) practitioners improving everyday pen handwriting.

NihonGo Ink Learn mode on iPad showing the kanji 書 (write) with ten numbered strokes and a color-coded stroke thumbnail strip below
Learn mode: per-stroke geometry makes stroke order, direction, and shape first-class feedback.

The core interaction is stroke feedback. Built on KanjiVG per-stroke geometry, the app scores individual strokes (shape, proportion, order, line quality) with per-attempt guidance instead of a binary pass/fail. Three modes (Learn → Practice → Test) remove support as mastery grows; Practice includes a worksheet view for multi-cell practice.

NihonGo Ink Practice worksheet on iPad showing the kanji 気 (spirit) with a 4x4 grid of writing cells, ghost guide in the first cell, and column labels 1回目 through 4回目
Worksheet view: 16 cells, four passes, ghost guide visible only in the first.

The worksheet is Practice mode at scale. Sixteen cells across four labeled columns (1回目–4回目). The ghost guide appears only in the first cell; the rest are blank. That single design decision encodes the product's teaching philosophy: you saw it once, now write it from memory.

NihonGo Ink Lessons screen on iPad showing the Kana subject with five module tabs (Kana, Strokes, Kanji, Radicals, Writing), Hiragana selected, and four grouped lessons: Linear Characters, Rotation Characters, Loop Characters, and Voiced Ka and Sa Rows
Lessons screen: structured curriculum with grouped lessons and character counts.

The Lessons screen organizes the full curriculum into subject areas — Kana, Strokes, Kanji, Radicals, Writing — each broken into grouped lessons with character counts and progress tracking. A student always knows exactly where they are and what comes next.

05

Quality, by design

Agents faithfully execute whatever system you give them (including a bad one), so quality is built into the system, not left to individual care:

  • A QA gate nothing merges without passing; backend changes deploy-and-verify.
  • Design tokens canonical in Swift, so design and build never drift.
  • Enforced by tooling: CI, automated code review, crash monitoring, and a shared backlog.
NihonGo Ink Component Directory: a three-column table mapping UI needs to the one canonical component, with a third column listing what never to substitute
Component Directory: every UI need maps to exactly one component. Using a different one is a bug.

The same logic applies to the design system. The Component Directory (§H.0) is a three-column enforcement table: the UI need, the one right component, and what never to substitute. Two components doing the same job is a bug — not a style preference, not a conversation. Agents cite the relevant section in every PR; a non-canonical component blocks merge.

06

Tech stack

  • App: iPadOS 16+, Swift, SwiftUI + UIKit (PencilKit canvas), Core Data (offline-first).
  • Backend: Supabase (Postgres, auth, Edge Functions, Realtime).
  • Grading (hybrid): Gemini Vision online; on-device Core ML + Vision offline, same 0–100 scale.
  • Stroke & type: KanjiVG geometry; licensed embedded pen-kaisho Japanese typeface.
  • Ops: Swift Testing/XCTest, GitHub Actions, Sentry, CodeRabbit, Linear; Claude Code for orchestration.
07

Status

Releasing to TestFlight for beta testing this summer, targeting a Fall 2026 App Store launch.


Want a walkthrough of the agent workflow, or to talk about AI-assisted product development for your team? Get in touch.