Skip to content
resoluna.

AI Solutions PM

An instructional designer who ships products by working with AI.

I define the problem, set the constraints and make the trade-offs; AI turns those decisions into code. This site shows the judgment behind each case, how the work was split between me and AI, and how user feedback drove each iteration.

4
Cases
87
Real users
42
Decisions logged
All cases →
Live2026-04 – 2026-08

Earth Day × Six Thinking Hats

A classroom tool that builds Six Thinking Hats into group discussion, iterated live on classroom feedback

My role:Product & instructional design, requirements; built with Claude

87
Students · About 87 seventh graders
3
Classes · Three homerooms
In progress2026-02

Taipei Zoo Course Assistant LINE Bot

Rules for questions with one right answer, a language model for the rest, and a home-made blind-testing skill to find what visitors expect but the bot cannot answer

My role:Product definition, architecture calls, test-method design; built with Cursor and Claude Code

6
Development stages · From scaffold to memory and retrieval
2
Blind-test personas · Wheelchair companion, field-trip teacher
Shipped2026-05 – 2026-10

MinutePad

An iOS sticky-note app built decision-by-decision, with CLAUDE.md as the AI's product requirements doc

My role:Product definition, scope and subscription design, decision log; built with Claude Code

26
Logged decisions · each with context, options and change triggers
5
Target markets · TW, HK, CN, English, Japanese

How I work with AI

Every case records what I decided, what AI did, and what came of it. Across projects, the same method shows up.

  1. Chinese Homework Tracker ·Putting it under git: prove it is the live code first

    What I decided

    The source lived only in the Apps Script editor, and my Google account held several look-alike projects. I decided the source of truth is whatever the live URL is running, not whatever a project is named.

    What AI did

    Claude Code used clasp to compare each candidate project's deployment IDs against the live URL, then diffed the deployed version against HEAD file by file, and only then cloned it into the repo.

    Outcome

    src/ in the repo is byte-identical to the live version; the deployment URL is unchanged.

    Lesson Step one of version control is not the commit, it is proving what you commit is what runs →

  2. Chinese Homework Tracker ·Privacy review: not shown is not the same as not sent

    What I decided

    I asked for a check for hard-coded student data. Once it was explained that pressing F12 exposed every name, I decided to drop the name field and required the same deployment be updated so the URL would not change.

    What AI did

    Claude Code confirmed nothing was hard-coded but flagged that getStudentData's JSON carried the name column; per the rules it reported rather than silently changing it, and only after my decision removed one line and updated the same deployment with clasp deploy -i.

    Outcome

    The response no longer carries names; neither the screen nor the URL changed.

    Lesson Audit the payload, not the screen →

Replay the collaboration →