AI workflow · Prompt design · Team kit · 2026

Prompt to Prototype

AI in the design workflow · a Sportster S dashboard case

One motorcycle dashboard, four AI models, and a prompt rewritten until it worked. This is how we chose an AI, how we learned to write for it, and how one long session became a kit the whole team can reuse.

Case
Harley-Davidson Sportster S, 4-inch round TFT dashboard (HMI prototype)
Roles
Shared by all three of us across the whole project: research, model comparison, prompt writing, building the Figma prototype with Claude, testing, and the team prompt kit
Team
Group 2: Julianne Henry, Jingwen Li and Xiaolu Xi
Tools
Claude with the Figma connector, ChatGPT, DeepSeek, Gemini, Figma
Year
2026
The finished Figma prototype. The dashboard on the left, and a live key panel on the right: black keys work on this screen, grey keys do nothing.
Fig. 01The finished Figma prototype. The dashboard on the left, and a live key panel on the right: black keys work on this screen, grey keys do nothing.

Context

A finished design, waiting to be built

The brief was a live demo: an interactive prototype of the Sportster S dashboard that the audience could watch being driven from a keyboard. We had already done the design work. A Figma page held every screen and overlay in the team’s visual style, and seven logic tables described what every handlebar key does, in every state, with rule IDs we could point at.

What we had not done was build it. Wiring a round dashboard with five pages, nested settings, media keys, calls and warnings means hundreds of frames and more than a thousand links. That is exactly the kind of work where AI can help, as long as the design decisions stay ours.

111
Frames in the final prototype
~1,300
Interactions wired
1,488
Link targets, none broken
19
Spec files the AI worked from
Our source: the
Fig. 02Our source: the "visual elements" page in Figma. Every state frame was cloned from these screens, never redrawn.
The logic we handed over: seven Excel tables, Known Unknowns, Thinking Docs and the brief, 19 files in all.
Fig. 03The logic we handed over: seven Excel tables, Known Unknowns, Thinking Docs and the brief, 19 files in all.

AI 没有替我们设计仪表,它把我们的设计决定执行到了每一个画面。

“The AI didn’t design the dashboard. It carried our decisions into every one of 111 screens.”

What we took away from the project

Who did what

What we did, and what the AI did

We made every design and every decision. The AI did the building and much of the checking.

StageWhat we didWhat the AI did
Before the buildDesigned every screen and overlay in Figma in the team’s visual style. Wrote the seven logic tables with rule IDs, Known Unknowns, the Thinking Docs and the brief: 19 files. Designed the D-Pad and Music Control keys and drew the low-fidelity flow.Nothing yet.
Setting upChose the tool (Figma) and the scope of the test. Wrote the prompts. Shared the file as “can edit” with the connector account.Read all 19 files and asked what was missing: the team name, which items were required, the reference material.
BuildingSent the reference image, the team’s key design and the motion requirements from review.Cloned our screens into 111 state frames, wired about 1,300 interactions with keyboard triggers and variables, and generated a key panel on every frame from its real interactions.
Checking and fixingTested it like a rider. Reported each bug with a screenshot or a screen recording. Told it what to compare against: the real bike.Checked all 1,488 link targets, compared the logic with Harley-Davidson service info and the video’s captions, found 7 of the 13 problems itself, and worked around Figma’s limits.
DecidingDecided every conflict between the spec and the bike, what stayed in scope, and when a version was accepted.Listed conflicts and assumptions for us to decide. It did not decide them.
AfterwardsRan the same prompt in four models, corrected the write-up’s scope, and turned it into the prompt archive and the team kit.Drafted the problem-and-fix summary in Chinese and English.

Design and decisions stayed with us

Every screen, rule and key was ours before the session started. When the AI guessed at scope or style, we corrected it; the final say on what to test and which rule won was always ours.

Volume work went to the AI

111 frames, about 1,300 interactions and 1,488 link targets: the work that is slow by hand and easy to get wrong.

Checking was shared

We tested what a rider would feel; the AI checked what a rider would never see: every link, every rule, every frame.

Scope

Scope comes first

Scope is the most important line in any prompt. AI is very good at doing things outside it: more screens, more features, a polished version of something nobody asked for. Each one looks like progress.

01Why build a prototype?

To test it. A prototype is not the product; it is the cheapest thing that can be put in front of people.

02Why test it?

To find out whether the idea is good, before anyone builds the real thing.

03Why find out whether the idea is good?

Because only a good product makes money. A test that catches a bad idea early saves a business mistake later.

04So what is in scope?

Only what the test needs. Anything else, however impressive, costs time the test never gets back.

Where the AI went outside our scope

What we askedWhat the AI didWhy it was out of scope
“Build a perfect interactive prototype” (no tool named)A full HTML prototype with a simulator, an event log and 79 automated testsThe test had to run in Figma, on the team’s own screens. 22 minutes went to something we couldn’t use.
“Make the keyboard our style” (no image)Guessed a style and removed 10 keysIt decided what the test would show.
“Keep fixing based on the files”Six fixes against the specWe meant the video. It picked its own target.
“Fix all the errors as fast as possible”Eight fixes, chosen by the AIUseful this time, but the AI, not us, decided what mattered to the test.
“Give me all the problems we ran into”Started with environment and permission problemsWe only wanted the prototype build.

In

Name what the test needs: the screens, keys and states a rider will actually press.

Out

Name what it doesn’t: “no web version,” “no simulator keys on the panel,” “don’t touch the original page.”

Done

Say what the test needs to run: “Home works on every frame; volume can be pressed again and again.”

Before every prompt: what is this prototype testing, and what does it not need?

01 · Which AI

Same prompt, four models

We gave the same task to four models. The prompt was written once, in two versions, and kept as the record of the test. What separated the results was not how “smart” each model was. It was whether the model could reach the place where the work lives.

ModelHow it workedWhat came backBest used for
Claude
with the Figma connector
Worked inside our Figma file. Cloned frames from the visual page, wired keyboard triggers and variables, and checked every link.V1: 61 frames in about 5 minutes. V2: 111 frames, about 1,300 interactions, no broken links. Found its own errors against H-D service docs.Building and checking inside the design file
ChatGPTGiven the same materials, rebuilt the screen set on its own page as named state frames.90 state frames in the same 1600-wide layout.A second build to compare against
DeepSeekCould not open Figma. Returned a single HTML file, a self-check table, and a plugin script to run in Figma’s Scripter.Clear key-by-screen logic table and a list of assumptions. The visuals drifted: the dashboard shape and the telltale row changed.Logic review and self-check tables
GeminiCould not open Figma. Returned an HTML prototype with a key panel.The layout and key panel worked, but the dashboard lost its RPM ring, bezel and type. It looked like a generic player.Quick layout drafts
DeepSeek: a working HTML prototype with a full key-by-screen table and an assumptions list. Strong on logic, weaker on fidelity.
Fig. 04DeepSeek: a working HTML prototype with a full key-by-screen table and an assumptions list. Strong on logic, weaker on fidelity.
Gemini: the key panel landed, but the round dashboard became a generic dark card.
Fig. 05Gemini: the key panel landed, but the round dashboard became a generic dark card.
Without Figma access, DeepSeek wrote a script for the Scripter plugin instead. It runs, but every visual has to be redrawn in code.
Fig. 06Without Figma access, DeepSeek wrote a script for the Scripter plugin instead. It runs, but every visual has to be redrawn in code.

02 · What each can do

What each AI can and can’t do, what it costs, and where your files go

The test showed which model did best on our task. This part answers the question underneath it: for the work this project actually needed, what can each one do, what can’t it do, what does it cost, and what happens to our files? The rows follow our needs, in the order they mattered.

What we neededClaudeChatGPTDeepSeekGemini
Work inside our Figma fileYes. Its Figma connector reads the file’s data and screens. In our test it built inside the file: cloned our frames, set variables, wired every trigger.Yes. Its Figma connection reads the file’s data and screens. In our test it rebuilt the screens on its own page instead of reusing ours.No. It only sees what we describe in the prompt and the images we upload. Its workaround was a Scripter script, with every visual redrawn in code.No. Same: text descriptions and reference images only. It returned an HTML prototype outside Figma.
Read our 19 files
Excel tables, screenshots, a video
Excel, PDFs and screenshots. It also read our screen recording frame by frame. The YouTube reference needed a link and a timestamp.Excel, PDFs and images. For the video, send stills or a link with the timestamp.Text from documents and tables, and images (Flash model only). No video.The widest range: documents, images, audio and video. The one to hand the video to.
Follow the logic tables and check itselfStrongest here. Checked every link and caught its own mistakes against Harley-Davidson service docs.Kept one consistent layout across 90 frames. We used it as a comparison build, not as a checker.Good at logic. Wrote a clear key-by-screen table, a self-check and a list of assumptions.Got the layout and key panel right, but dropped the RPM ring, bezel and type without flagging it.
Leave something the team can editFigma frames and variables. Anyone on the team can fix them.Figma frames, but separate from our original components.An HTML file and a script. Only someone who reads code can change them.An HTML file. Same as DeepSeek.
What it can’t doWork in a file it can’t edit: share it as “can edit” with the connector’s account first. It is also bound by Figma’s own limits (see the kit).Keep our exact components on its own: in our test it redrew them, so fidelity depended on the redraw.Reach design tools. With no connector, it can only describe or redraw.Reach Figma. Working from descriptions and images, it lets the visual style drift.
Plan for one person
per month
Pro $20
Max from $100
Plus $20
Go $8 · Pro from $100
Free appGoogle AI Pro $20
Ultra from $100
API price
per 1M tokens, input / output
Opus 5.5: $4 / $20
Sonnet 5.5: $2 / $10
GPT-6.1 Sol: $2 / $10
GPT-6 Astra: $10 / $50
V4 Pro: ¥9 / ¥27 (about $1.30 / $3.80)
V4.1 Flash: ¥2 / ¥8 · half price off-peak
Gemini 3.1 Pro: $2 / $12
Gemini 4 Argon: $2 / $10, rising to $4 / $20 on Dec 1

Cheapest per token isn’t cheapest per job

DeepSeek costs a fraction of the others per token, but its prototype had to be redrawn by hand. What we pay for is a usable result, not tokens.

For a team, the plan matters more than the API

Working in chat, what limits you is the monthly plan and its usage caps. API prices only matter once you automate, for example batch-checking frames.

Split the work by strength

Build with the model that can edit the file. Give the video to Gemini, and the logic review to DeepSeek or a second model.

Memory, other chats and long sessions

A build like ours runs for hours and often spills across several chats. Whether a model remembers earlier work, can look into another chat, and copes with a very long one decides how much we have to repeat.

QuestionClaudeChatGPTDeepSeekGemini
Remembers you across chatsYes. “Memory from chats” saves topics as you talk. On by default for Free, Pro and Max; Team and Enterprise opt in.Yes. Saved memories, plus a memory summary that updates as you chat.No. Every new chat starts blank.Yes. “Your past chats with Gemini” in Personal context, free since February 2026 (Europe later).
Can it read another chat?Yes. Chat search finds and cites past chats (Pro and above). Inside a project it only searches that project, and each project keeps its own memory.Yes. “Reference chat history” draws on past chats. Not yet on Enterprise or Edu.No. Old chats stay in the sidebar, but it can’t use them. Paste in what it needs.Yes. With past chats on, it draws on earlier conversations.
A chat that leaves no memoryIncognito chatTemporary ChatNot needed: chats don’t carry overTemporary chat
When a chat gets very longCompacts itself. On paid plans with code execution on, earlier messages are summarized so the chat keeps going. Early details get less precise.Slows down and starts forgetting early details. At the limit it stops taking messages, and you start a new chat.The oldest turns drop out of what it can see. Restate them or start a new chat.A very large context, but no automatic compaction is documented. Long chats slow down too.

Why long chats slow down

Every new message is read together with everything before it. The longer the chat, the more the model rereads each time, so replies slow down and early details blur.

How to move to a new chat

Ask the old chat for a short summary: decisions, files, open issues. Paste it into a new chat with the spec and the Figma link. Claude does this step itself by compacting.

Memory is not the spec

Memory keeps topics, not your files. In a new chat, attach the spec and the Figma link again, and use an incognito or temporary chat for client work you don’t want remembered.

Privacy: what happens to the project files

Our 19 files were an internal spec, but the same setup would carry a client’s unreleased product. Before anything goes in, it is worth knowing what each AI can see, where it is kept, and whether it can end up in the model.

QuestionClaudeChatGPTDeepSeekGemini
What it can accessThrough the Figma connector, every file the connected Figma account can open, and edit rights wherever that account can edit. Plus anything we upload.The same through its Figma connection: whatever the connected account can open or edit. Plus anything we upload.Only what we type or upload into the chat.Only what we type or upload into the chat.
Where it’s keptAnthropic’s cloud. Chats stay until you delete them, then are removed within 30 days. If you allow training, data can be kept up to 5 years.OpenAI’s cloud. Chats stay until you delete them, then are removed within 30 days. Temporary chats are kept up to 30 days.Stored in the People’s Republic of China, for as long as the account exists.Google’s cloud. Even with Keep Activity off, chats are kept 72 hours; chats picked for human review are kept up to 3 years.
Used to train the model?Only if you opt in (Free, Pro, Max). Never on Team, Enterprise or the API.Yes by default on Free, Plus and Pro. Off by default on Business and Enterprise.Yes by default.Yes while Keep Activity is on, and some chats are read by human reviewers. Work accounts follow different terms.
How to turn it offSettings → Privacy → turn off model training.Settings → Data controls → turn off “Improve the model for everyone,” or use a temporary chat.Email privacy@deepseek.com. There is no in-app switch; the other option is running the open-weight model locally.Turn off Keep Activity, or use a work or school account.

Other users can’t see your chats, but training carries them further

No one else can open your conversation. Anything used for training becomes part of what the model learns, though, so a detail from a confidential brief could in rare cases resurface in someone else’s answer. Treat “training on” as handing the material to the company.

A connector carries your whole account

It acts with the connected Figma account’s permissions, not just the one file. Connect with an account that only holds the project, and give “can edit” only for the build.

Our rule for project files

Turn training off before uploading. Keep NDAs, personal data and unreleased product details out of DeepSeek and personal Gemini accounts. For client work, use a business plan.

Test results come from the versions we used during the project. Prices, memory features and privacy terms were checked on October 29, 2026. They change often, and several are already scheduled to change.

03 · How to choose

Choose by where the work lives

From the test we ended up with five questions we now ask before choosing a model for design work. The first one decides most of it.

01Can it reach the work?

A model that can edit the Figma file builds on our real components. A model that cannot will redraw them, and the redraw is where fidelity is lost.

02Can it read everything?

Nineteen files, Excel tables, screenshots and a video. Check that the model accepts all of them, not just the text.

03Can it check itself?

Ask for a self-check table and for sources. The best results came when the AI compared its work to the spec and to the real bike.

04Is the output editable?

Frames and variables in Figma can be fixed by anyone on the team. A one-off HTML file has to be fixed by whoever can read the code.

05Who on the team can use it?

Account, plan, file permissions and privacy rules. A tool only one person can access does not become a team workflow.

Our rule now: build with the model that can work in the file, and ask a second model to review the logic.

04 · How to prompt

Every rebuild came from something we didn’t say

The whole session took 34 short messages. Afterwards we sorted them by stage and marked each one: ✓ worked first time, △ needed follow-up or rework, ✗ produced nothing. Half the stages cost us a rebuild, and each time the cause was the same: a piece of information that was in our heads and not in the message.

StageTimeMessagesResultWhat was missing
1 · Build the prototype08:16–08:5812△ built twiceWhich tool (Figma, not a web page); edit access to the file
2 · Key panel09:07–09:176△ redone three timesThe team’s key design image; which keys to keep
3 · Check the logic09:25–09:29, 09:464△What to compare against; the video link
4 · Fix bugs found in testing09:31–09:445✓Priority order
5 · Alignment and transitions09:49–09:543✓Which layers animate, and how long
6 · Write-up14:54–15:216△ corrected onceScope: only the prototype build

How long each prompt took

The log has a timestamp on every message, so we can see how long each prompt took, from sending it to sending the next one. The chart covers the build session, 22 prompts in about 95 minutes. These are not model run times: each bar includes the AI working plus our own reading, testing and typing.

✓ worked first time△ needed follow-up✗ produced nothing
08:16“Hi, we need to finish a task”✗ A question back<1 min
08:16The brief, pasted (bold formatting lost)△ Four questions back1 min
08:1719 files + Figma link: “build a perfect interactive prototype”△ A good HTML prototype, in the wrong format22 min
08:39“Build it straight in Figma” + three links, no edit access△ Stuck on permissions20 min
09:00File shared as “can edit” with the connector account✓ V1: 61 frames5 min
09:07Reference image + the goal (“see the keys while you play”)✓ A key panel on every frame6 min
09:13“Make it our style” (no image)△ A guess2 min
09:15“Left and right hands”△ Unsure what we meant1 min
09:16“Delete the original”✗ Three options back1 min
09:17The team’s key design image✓ Restyled in one pass8 min
09:25“Keep fixing based on the files”△ Six fixes, not the ones we meant3 min
09:28“Check frame by frame against the video” (no video)✗ A question back1 min
09:29“Find it on YouTube yourself”△ Found it, after ads and captions2 min
09:31Screenshot + “Shouldn’t Home always work?”✓ Home rule located1 min
09:32Screenshot + “Why does volume only work once?”✓ Figma limit found and worked around1 min
09:33“Fix all the errors as fast as possible”✓ Eight fixes in one run8 min
09:41“Keep polishing”✓ Call states and overlay key rules3 min
09:44“Home should work everywhere, right?”✓ Home works on all 111 frames2 min
09:46A typo✗ A wrong guess, interrupted<1 min
09:46“Check every key against the real product”✓ Wrong Trip order found3 min
09:49Screen recording + “the overlay is misaligned”✓ Cause found in six seconds<1 min
09:49Review feedback: pages fade in layers✓ Layered transitions5 min
95 min
Build session, 22 prompts
51 min
Spent on the 7 prompts that needed follow-up
42 min
Lost to two of them: wrong format, no edit access
~1 min
Per bug fix with a screenshot or recording

Time taken follows scope, not quality

The long runs, from 5 to 22 minutes, were the prompts that handed over a whole job: build it, restyle it, fix everything. Whether those minutes paid off depended on whether the prompt said where and how.

A fast reply usually means something was missing

The 4 prompts that produced nothing took under 3 minutes in total. Three vague messages in a row (09:13–09:16) got a guess, a half-guess and a question; one design image at 09:17 fixed it.

Wasted time grows with what you leave out

Time taken ≈ the size of the job you hand over. Wasted time ≈ that time × whatever the prompt left out. Leave out the tool or the access, and the whole run is repeated.

Rewriting the first prompt

Stage 1 is the clearest example. Eight messages over forty minutes never said where to build, so the first result was a good web prototype that nobody had asked for. Then we lost twenty minutes to file permissions.

What we sent

"Hi, we need to finish a task."
(pastes the brief; the bold formatting is lost)
"Build a perfect, logic-error-free interactive prototype from the screens we designed on Figma page 3."
"What do you mean? Build it straight in Figma."
"Can't you just connect and build it with these?"
"There's nothing in Figma right now."
"Should you connect and build it?"
(three different file links, tried one after another)

What we should have sent

Task: In Figma, build an interactive prototype of the Harley-Davidson Sportster S 4-inch round TFT dashboard for a live demo.
 
Tool and access:
- Target file: <Figma edit link>, shared as "can edit" with <connector account>.
- Build on a new page in that file. Do not change the original designs on Page 3.
- No web version.
 
Visual source: Home, Navigation1, Media, Vehicle, Settings1, Global Navigation - Home, Screen overlays and D-pad affordance examples on Page 3. Clone every state frame from these.
 
Logic source (19 attached files):
- Key behaviour: Input Routing Matrix, Button Guard Table, List Item Type Overrides.
- States and events: State Transition Table, System Event Table.
- Overlays: Overlay Registry, Overlay Conflict Resolution Rules.
- If they conflict, the Excel tables win. Items still open in Known Unknowns follow the tables as written and are listed.
 
Input: the keyboard stands in for the handlebar controls. Arrows + Enter = D-pad; H / P / T = Home / Page / Trip; Space and , . - = are the media keys.
 
Scope: engine running, stopped and riding. No boot animation, no Bluetooth pairing.
 
Delivery and acceptance:
- Playback starts on the Home frame.
- Every link points to a frame that exists; no broken links.
- When done, list anything that could not be built, and why.

Anatomy of the prompt that worked

For the four-model test we rewrote the brief twice. Version 1 was one dense paragraph. Version 2 split it into four parts (visual style, interaction logic, key panel and transitions, build and acceptance), and the final version added a role, a research step and acceptance tests. These are its parts, in order.

01Role and goal

One line on who the AI is and what “done” means.

02Read first

A Step 0: which pages and files to read, and a short research summary before any building.

03Sources and priority

What wins when sources conflict: the prompt, then the tables, then Figma; the real bike over the tables where we said so.

04Visual spec

Colours, type, sizes and zones as tokens, copied from the design file, not described from memory.

05Logic with IDs

Every rule tagged with its table ID (G11, CR08, E16), so the AI can cite it and we can check it.

06Rules that never break

Four non-negotiables, such as “the telltale zone is never covered.”

07Deliverables

Exact formats, frame names and where to build, plus “output the full code, never ‘same as above’.”

08Acceptance tests

Fourteen tests written as things you can press and watch, not adjectives like “perfect.”

Prompts that worked

What we sentWhy it workedThe pattern
19 spec files + the Figma link, up frontThe tables were detailed enough for the AI to follow rule by rule.Give the full material first, then the request.
A reference image + “I can’t see what was pressed”The image showed the look; the sentence named the problem.Send a reference with the problem it solves.
The team’s own key designOne image replaced three rounds of description.For style, send the design, not words.
Screenshot + “Home should always work, why is it black here?”A specific frame, a specific key and the expected rule.“On X, key Y should Z, but it does W.”
Screenshot + “volume only works once”A repeatable step and a visible symptom led straight to a Figma limit.Write what you did, then what happened.
Screen recording + “the overlay is misaligned”The AI found the cause frame by frame in six seconds.Record anything that moves.
“In the last review we were told pages fade, and the screen is layered”Context the AI had no way to know.Pass on what reviewers and the client said.
“Check every key against the real product”Named the standard, so the AI read H-D service information and found the wrong Trip order.Say what to compare against.

Two prompts we now reuse as-is

Logic check: report first, change later
Task: check only; add nothing new. Verify what every key does on every frame.
 
Compare against, in this order:
1. The real product: YouTube video <link>, especially <timestamp>; and Harley-Davidson service information.
2. Our specs: Input Routing Matrix, Button Guard Table.
 
Scope: D-pad (four directions and OK), Trip, Page, Home and the media keys, on every frame and prompt.
 
Output: one table with the columns Key · Frame · Prototype now · Real bike · Spec · Match? · Source. Show me the table first; change the prototype only after I confirm.
 
Conflicts: where the bike and the spec disagree, list them separately; we decide.
Bug report: expected vs actual, in priority order
We found these problems in testing. Please fix them in order (screenshots attached):
 
Bug 1 (first) Home key
- Where: every frame, especially Home – Odometer and the prompts.
- Expected: Home works on every frame and every prompt and returns to Home (on Home it changes nothing). H shows as active on every key panel.
- Actual: H is inactive on Home and on some prompts.
- Spec to update: Button Guard Table G11.
 
Bug 2 (first) Volume and skip keys
- Steps: on Home, press "+" twice.
- Expected: each press raises the volume by 1 (0–15), updates the number and the bar, and restarts the 1.5 s timer (CR08). Skip keys likewise, and the title changes.
- Actual: only the first press works.
 
Then: check every other key against the Input Routing Matrix, the Button Guard Table and the Overlay Conflict Resolution Rules, and list the changes. When done, regenerate every key panel and check that no link is broken.

05 · Team kit

Turning one session into a team habit

A good session is worth little if it lives in one person’s chat history. We turned ours into a kit: the parts below sit in a shared folder, and every new AI task starts from them.

01Prompt template

Nine labelled fields (task, access, sources, references, must have, do not, acceptance, context). Fill it in, send it once.

02Bug report line

One sentence: on this frame, this key should do this, but does that. Screenshot or recording attached.

03Specs with rule IDs

Every table row has an ID (G01–G26, CR01–CR14, E01–E22, LI00–LI12), so prompts, fixes and reviews can all point at the same rule.

04Source priority

Written once and reused: the real product, then the brief, then the tables, then Figma. Anything undecided goes in an assumptions list.

05Figma components

One Key component (Size × State) and a key panel generated from each frame’s real interactions, so the panel can’t drift from the logic.

06Workaround library

The Figma limits we hit and how we got around them, so nobody rediscovers them mid-demo.

07Self-check and acceptance

A key-by-screen table and 14 acceptance tests the AI fills in, and we re-run after every change.

08Prompt archive

Every session logged with ✓ △ ✗ and a rewritten version of each weak prompt. The archive is how the kit improves.

The prompt template

Fill in the brackets, send once
[Task] Build <deliverable, e.g. a keyboard-driven prototype> in <tool / file link>.
[Access] The file is shared as "can edit" with <connector account>.
[Visual source] Use the designs on <page / frame names>. Do not change the originals.
[Logic source] Follow <spec tables>. If they conflict, <which one> wins.
[References] <screenshots / screen recording / YouTube link + timestamp>
[Must have] <e.g. a key panel on every frame; layered fades between pages>
[Do not] <e.g. no web version; no simulator keys on the panel>
[Acceptance] <e.g. Home works on every frame; volume keys can be pressed repeatedly>
[Context] <what the client or reviewers said>
Bug report
On <frame>, pressing <key> should <expected>, but now it <actual>. (Screenshot or screen recording attached.)
The team’s key component: a D-Pad box for the left hand and a Music Control box for the right. Black means the key works on this screen.
Fig. 07The team’s key component: a D-Pad box for the left hand and a Music Control box for the right. Black means the key works on this screen.
Volume on Home: the big speed moves to the top first, so the overlay never covers it.
Fig. 08Volume on Home: the big speed moves to the top first, so the overlay never covers it.
Incoming call. Only OK (answer), Down (decline), Home and volume stay black. The panel is generated from the frame’s real wiring, so it can’t lie.
Fig. 09Incoming call. Only OK (answer), Down (decline), Home and volume stay black. The panel is generated from the frame’s real wiring, so it can’t lie.

Figma limits, and what we did instead

SymptomCauseWorkaround
Volume worked once, then never againAn overlay can’t reopen itselfTwo copies (A and B) that swap on each press, restarting the 1.5 s timer
Volume number and song title never changedFrames hold fixed textText and bar widths bound to variables
A condition inside a conditionOnly one level of if/elseFlatten into one level joined with AND
Overlays slid off the dashboardOverlays centre on the window; tall frames scrollEvery frame 1600 × 720, so nothing scrolls
No long-press triggerFigma has key down, click and timeout onlyShift+T stands in for holding Trip
Vehicle keys multiplied the frame countEvery cruise and turn state needs its own framesKept in the web version; Figma keeps one riding/stopped variable

06 · Avoid

Mistakes worth not repeating

Most of the time we lost came from the same handful of habits. They are easy to repeat because each one feels efficient in the moment.

MistakeWhat happenedInstead
Opening with “Hi, we need to finish a task”A full round trip with no information.Send the task, the materials and the requirements together.
Never naming the toolThe AI built a web prototype; the job was in Figma.Name the tool, the file and the page in the first line.
Sharing links before accessTwenty minutes on read-only files and the wrong account.Share as “can edit” with the connector’s account before starting.
Adjectives instead of tests“Perfect” and “no logic errors” can’t be checked.Write what you will press and what should happen.
“Make it our style” with no imageThe AI guessed; the design arrived four minutes later.Attach the design in the same message.
One-word replies: “left and right hands”Three possible readings.Say which keys go in which group, and where.
“Delete the old one”Unclear target; deleting can’t be undone, so the AI had to stop and ask.Name the object and its location.
“Check it against the video” with no videoThe AI searched YouTube, sat through ads, and may not have found the right one.Paste the link and the timestamp.
“Fix all the errors”The AI chose the scope, not us.List the bugs and give a priority.
Trusting our own tables over the productThe Trip order and the Home key were wrong in the spec itself.Name the real product as the standard, and let the build update the tables.
Marking the key panel by handAny wiring change made it lie.Generate it from the frame’s interactions.
Interrupting a running stepThe interrupted step is lost and sometimes redone.Send a message; the AI adjusts at the next step.

Style problems: send an image. Problems that move: send a recording. Logic problems: write “should” and “actually.”

07 · Fix and check

After the first build: finding and fixing what was wrong

V1 arrived at 09:05 with 61 frames. It looked finished; one click-through showed it wasn’t. Between 09:07 and 09:54 we reviewed it, tested it like a rider, reported problems one at a time and checked every fix. This is the record of what was wrong, who found it, why it happened and how it was fixed.

13
Problems found and fixed after V1
5
Found by our review and testing
7
Found by the AI checking its own work
0
Broken links in V2, out of 1,488
ProblemHow it was foundCauseFixTime
No way to see which key was pressedOur review of V1: reference image + “see the keys while you play”The brief never asked for itA live key panel on every frame09:07
Key panel in the wrong style, with too many keysOur review: the team’s key design imageThe AI guessed the style from words13 keys in the team’s D-Pad and Music Control layout; black works here, grey does nothing09:17
Home key didn’t work on every frameOur testing: screenshot + “Shouldn’t Home always work?”Home was not wired on Home itself or on several overlaysHome wired on all 111 frames, overlays included09:31 · 09:44
Volume and skip worked once, values never changedOur testing: screenshot + “Why does volume only work once?”A Figma limit: an open overlay can’t open itself again; the text was fixedTwo copies, A and B, swap on each press and restart the 1.5 s timer; volume (0–15) and titles bound to variables09:32
Overlays covered the big speed on HomeAI self-check against rule NN-2Overlay placed over the speed areaSwitch to the small-speed layout before showing an overlay09:33–09:44
Riding state always 0 mph in NAI self-check in the fix and polish runsOnly the parked state had been builtA riding variable: 45 mph in gear 409:33–09:44
Map could not zoomAI self-check in the fix-everything run↑ / ↓ not wired on the mapZoom levels 1–5, with no effect past either end09:33
Ride Modes only switched on and offAI self-check in the fix-everything runCustom modes not builtCustom A / B copy the seven settings of another mode09:33
Some Settings links did nothingAI self-check in the fix-everything runDead linksAll wired; brightness (the screen dims), software update and info pages added09:33
No state after answering a callAI, in the “keep polishing” runCall states missing“On call” tag, music pauses, Play hangs up09:41
Trip order wrongAI check against Harley-Davidson service info and the video’s captionsOur own logic table had the wrong orderOdometer → Trip A → Trip B → Range → Temperature, and the table corrected09:46
Overlays misaligned after scrollingOur testing: screen recording + “the overlay is misaligned”Overlays align to the window centre, and the frames were tall enough to scrollEvery frame resized to 1600 × 720, so nothing scrolls09:49
Instant cuts between pagesReview feedback: pages fade in layersNo transitions setPages fade 0.3 s, overlays 0.2 s; the system zone stays still09:49

The loop we used for every fix

01Test it like a rider

Press the keys in the order a rider would, on every page and overlay, parked and riding. Not just the happy path.

02Report one problem with evidence

One sentence: on this frame, this key should do this, but does that. Add a screenshot, or a screen recording if anything moves.

03Name what it should match

The real bike, the logic table, or the Figma design. “Check against the real product” is what caught the wrong Trip order.

04Check the fix and its neighbours

Re-run the same keys, then the frames around them. A fix to one overlay can break the frame that opens it.

05Write the answer back into the spec

When the bike and our table disagreed, we corrected the table, so the next build starts from the right rule.

Evidence is the fastest fix

Bugs sent with a screenshot were located in about a minute. With a screen recording, the overlay problem was traced in six seconds.

Some bugs were ours, not the AI’s

The wrong Trip order came from our own table. The AI only found it because we told it to compare against the real product, not the spec.

Some bugs were Figma’s

Volume, alignment and nested conditions hit limits of Figma itself. The workarounds are listed in the team kit, so nobody has to find them again.

08 · Result

Version 1 to version 2 in under an hour

V1 · 09:05V2 · final
Frames61111
Link targets9251,488
Frame613 × 495, dashboard only1600 × 720, dashboard + key panel
Seeing the keysNot visible; one key cardLive D-Pad and Music Control panel on every frame, clickable
Home keyDead on HomeWorks on all 111 frames, prompts included
Trip orderOdometer → Temperature → Range → Trip A → Trip BThe bike’s order: Odometer → Trip A → Trip B → Range → Temperature
Volume and skipWorked once; values fixedRepeatable; volume 0–15 and titles update live
Overlays on HomeCovered the big speedSwitch to the small-speed layout first
Riding stateAlways 0 mph, N45 mph, gear 4 while riding
TransitionsInstant cutsPages fade 0.3 s, overlays 0.2 s; the system zone stays still

Final test: with AI vs by hand

For the final test we set the AI build against the same job done by hand in Figma. The AI side is measured from the session log. The by-hand side is estimated from the work counts in the finished file, at typical speeds for an experienced Figma user.

~13×
Faster
~10×
Cheaper
95 min
Our whole build session with AI, people included
~21 h
Estimated by hand
With AI (Claude + Figma connector)By hand in Figma
Time~95 min of clock time for the whole build session, from our first message to V2. That is not the model’s run time: it includes the AI working plus our reading, testing in Figma and writing each next prompt. V1 arrived about 5 min after the file was shared.~21 hours, about two and a half working days
PeopleOne designer directing, reviewing and testingOne designer doing every step
Cost~$83: 95 min of designer time at $40/h, plus a $20/month plan~$840: 21 h at $40/h
CheckingEvery link checked automatically; logic compared against Harley-Davidson service docsA manual click-through, where a wrong link among 1,488 is easy to miss
Later changesA new rule is one message; the AI rewires the affected framesEvery affected frame rewired by hand

How we estimated the by-hand time

TaskVolumeRateTime
Build state frames from the visual page111 frames~3 min each~5.5 h
Wire key triggers and variables~1,300 interactions~20 s each~7.2 h
Draw a key panel for each frame111 panels~2 min each~3.7 h
Check link targets against the tables1,488 targets~5 s each~2.1 h
Fix and re-test——~2.0 h
Total~21 h

The 95 minutes are measured from the session log, from the first message (08:16) to V2 (about 09:54), and cover people and AI together. The by-hand figures are an estimate, not a timed run. Designer time is costed at $40 an hour. Neither side counts the design work done before the build (the screens, the logic tables and the 19 files), which is the same either way, or the write-up afterwards.

All state frames on one page, each with its own key panel.
Fig. 10All state frames on one page, each with its own key panel.
The team’s low-fidelity flow prototype. The AI build followed the same map at full fidelity.
Fig. 11The team’s low-fidelity flow prototype. The AI build followed the same map at full fidelity.

Agree on the format first

Saying “Figma, not web” and showing the key panel up front would have saved a full rebuild.

Generate, don’t hand-mark

Anything derived from the logic should be produced from the logic.

Check against the real thing

Two of our worst bugs were in our own spec, and only the real bike exposed them.

Let the build fix the spec

Six conflicts between our documents surfaced while building. They now flow back into the tables.

Know the tool’s limits early

Long press, reopening overlays, positioning and nested conditions all need a plan before the prompt.

Keep the decisions human

The AI was fastest when every design choice was already made and written down.

09 · Next

Versions, two ideas, two ways to build, and quality control

The prototype works. These are the things we are adding so the next build is easier to hand over, and the next test is fairer.

Every version gets a time, a place and a number

During the session the versions only lived in the chat. This is what we had, and how each version will be saved from now on.

VersionWhenWhereWhat it is
V0Oct 27, 2026 · ~08:39An HTML file in the chatA web prototype with a simulator and 79 tests. Not used: the test had to run in Figma.
V1Oct 27, 2026 · 09:05Our Figma file, “HMI Prototype” page61 frames, 925 link targets
V2Oct 27, 2026 · ~09:54The same page, updated in place111 frames, 1,488 link targets, key panels and layered transitions
Version name: number · date and time · place · how it was built · size
V2 · 2026-10-27 09:54 · HMI Prototype page · built with Claude · 111 frames
01Save it in Figma’s version history

Each time a version is accepted, save it under the name above, so any earlier state can be restored.

02Put a version card on the first frame

Version number, date and time, who built it, and what changed since the last one.

03Keep a one-line change log

One line per version in the shared folder, linked to the prompt that produced it.

Two ideas for the next build

Show each transition’s effect on screen

When the prototype changes page, a small caption appears in the corner: “Page → Media · fade 0.3 s · system zone stays still.” Engineers read the motion spec while they watch, instead of guessing it from the animation.

Link every frame to what it was based on

Each frame carries a note with its sources: the Figma screen it was cloned from and the rule IDs it follows (G11, CR08), each as a link. When a reviewer questions a behaviour, the answer is one click away.

Two ways to build, side by side

This time we generated the whole prototype at once and fixed it afterwards. Next time we will build the same thing step by step, confirming each step before moving on, and compare the two.

All at once, then fixStep by step, confirming each step
How it worksOne prompt builds every screen. Testing and fixes come after.Build one part (say, Home and its keys), check it, then move on to the next.
This projectV1 in about 5 minutes, then 13 problems fixed over the next ~50 minutesOur next test
Good forSeeing the whole thing fast, and finding gaps in the brief earlyComplex logic, where one early mistake would be copied into every frame
RiskA mistake spreads to every frame before anyone checks (Home, volume, Trip order)Slower to a first full version, and more messages
What we’ll measureTime to a passing build, number of fixes, broken linksThe same three, so the two can be compared fairly

Quality control: three checks before a version is accepted

Quality control asks one question: does the prototype do what the spec and the real bike say, on every frame? “It looks right” is not an answer, so we split it into three checks that each end in a pass or a fail. The AI runs the checks; we review what it flags.

CheckWhat it checksWho does itPasses when
1 · AccuracyEvery key on every frame, against the logic tables and the real bike, in a key-by-screen tableThe building AI fills the table in; a person spot-checks itEvery row matches, or the mismatch is listed and we decide
2 · AI scoreThe whole build, scored against a fixed rubric by a model that didn’t build itA second AI, e.g. DeepSeek for logic or Gemini for the videoEvery item scores 4 of 5 or higher; anything lower comes with a reason
3 · ChecklistThe fixed checklist below, item by item, on every frameThe AI: we hand it the list and it checks the build against each itemEvery item marked Pass, with the frames it checked; we review every Fail

The AI score uses the same five-point rubric every time, so versions can be compared:

Rubric itemScores 5 when
LogicEvery key does what the tables and the real bike say
Visual fidelityScreens match our Figma design: RPM ring, bezel, type, telltales
CoverageEvery page and overlay, parked and riding
LinksNo broken links and no dead ends
Readable for engineersKey panel, transition captions and source links on every frame
Checklist we give the AI, built from what went wrong this time
☐ Home works on every frame, overlays included
☐ Volume and skip can be pressed again and again; numbers and titles change
☐ Trip order matches the bike: Odometer → Trip A → Trip B → Range → Temperature
☐ No overlay covers the speed (NN-2)
☐ Parked (0 mph, N) and riding (45 mph, 4) states both exist
☐ Overlays line up with the dashboard; no frame scrolls
☐ Pages fade 0.3 s, overlays 0.2 s; the system zone stays still
☐ Every key panel matches its frame’s real interactions
☐ Zero broken links
☐ Version card filled in; change log updated
Prompt we send with the checklist
Check the prototype against this checklist. For each item, answer Pass or Fail, list the frames you checked, and give the evidence: the frame name, or the link that fails. Report first; don’t fix anything until we confirm.

AI scores and AI checks are flags, not verdicts. They tell us where to look; a person decides whether the version passes.

Credits

Project
Sportster S HMI prototype by Group 2: Julianne Henry, Jingwen Li and Xiaolu Xi
Design and specs
Group 2: visual system, HMI zoning, physical-control mapping and the seven logic tables
AI workflow
All of Group 2, together: research, model comparison, prompts, Figma build with Claude, testing, prompt archive and team kit
References
Harley-Davidson service information and owner’s manual; Sportster S infotainment tutorial video
Year
2026