Howard Laws
Get in touch
Rapid Prototyping
Conversational UI
Synthetic Testing
FinTech
Atom Bank: Rapid-Prototyping Propositions with Claude Code
A repeatable rapid-prototyping framework, built end-to-end with Claude Code, using a product recommender as the test case.

1. At a glance
This case study covers the framework itself, tested against a live proposition: a product recommender that asks a saver their goal and suggests the best-fit savings product instead of a flat list to compare. I also took on the Propositions Lead role as a stretch assignment, to see how I'd run a project like this end-to-end while still shipping fast.
2. The Double Diamond
What's interesting here isn't the product recommender, it's the framework behind it: getting from a proposition brief to a tested, guardrailed concept without a full research and delivery cycle. Two stages changed from a standard Double Diamond run:
The Double Diamond: A Four-Step Process to Designing Solutions to Complex Problems
Conversations, testing, and stakeholder scheduling still ran on their own calendar; no tooling changes that.
3. Stage by Stage
The four stages below follow the Double Diamond shape, with the two adaptations layered in.
Stage 1: Discover
Discover: understand all relevant problems, causes, and knock-on effects.
Atom's Browse Products screen presents Cash ISA, Instant Saver, Fixed Saver and Mortgages as one flat, equal-weight list, with nothing connecting a customer's goal or time horizon to which product suits them.
Current Browse Products UI, plus supporting screen states
I grounded the brief in evidence from three sources:
New-to-saving customers default to the most familiar-sounding option rather than the best fit, and nothing in the flow challenges that.
Involved: me (Propositions Lead), the Savings Product Manager, and a Customer Support Agent.
Stage 2: Define
Define: converge the evidence into one clear, agreed problem to solve.
I ran a short workshop with the Savings Product Manager, Head of Propositions, Head of Brand & Experience, and myself, to turn scattered evidence into one hypothesis the team could align behind. Findings reviewed:
Current Browse Products UI, plus supporting screen states
Agreed problem statement
Customers without a strong product preference default to the most familiar-sounding option rather than the best fit. That's a loss both ways: the customer risks the wrong product, and Atom misses a chance to guide balances toward the mix it wants.
This wasn't unanimous on the first pass. The "loss both ways" framing was added after the Savings PM's cannibalisation concern, not there from the start.
Workshop outputs:
Involved: Savings Product Manager, Head of Propositions, Head of Brand & Experience, and myself (Propositions Lead).
Stage 3: Develop
Develop: generate and build a solution worth testing.
This is the stage built for real, not mocked up. A conversational entry point replaces the flat product list: the customer describes their goal (or taps the suggested prompts), and the interface returns a recommendation with visible, plain-English reasoning.
Design guidelines
Rapid design with Claude
I synced Claude Code with the necessary Figma files, including the design system component library, via MCP, so it couldn't generate a mockup disconnected from the Atom brand and UX guidelines, and used it to wire up click-through interactions between the four screens so the prototype could be clicked end to end rather than reviewed as static frames.
Claude Code executing a build prompt against the synced Figma design system files
The four screens
That setup produced four screens mapping onto the customer journey, from first prompt to handoff into the existing Browse flow:
Iteration 1 - Interactive Figma prototype - Entry point → Recommendation → Guardrail → Handoff
I then checked in individually with a few team members between iterations rather than running full workshops, matching the pace of rapid prototyping: a chance to flag changes before testing, and to get each person's view from their own angle: feasibility, tone, and the guidance-vs-advice guardrail.
Iteration 2 - Interactive Figma prototype - Entry point → Recommender/Guardrail → FUE Screens → Product Term Selector
That check-in round produced real changes, not just approval:
Involved: myself (building the prototype), an iOS & Android Engineer (feasibility), a Copywriter (tone), and Legal & Compliance (guardrail sign-off). All were consulted and in agreement; none blocked the build.
Stage 4: Deliver
Deliver: test, refine, and validate it before it reaches a real customer.
I tested synthetically first. Recommendation logic run past simulated personas (first-time saver, rate-chaser, house-deposit saver) to sense-check it before recruiting real testers. A smaller, targeted round of real testing on UserTesting followed to confirm the strongest direction, meaning fewer directions reached full human testing, and the ones that did arrived stronger.
Synthetic testing here means role-playing a persona through the built screens rather than asking the model to critique the design outright, since that tends to manufacture issues regardless of whether the design has any.
I ran each persona multiple times across phrasing variants, since one output only tells you what the model said once, and kept persona descriptions to observable facts, not conclusions, since hinting at what the guardrail should catch guarantees the model catches it.
Every flagged issue was a hypothesis for real-user testing to confirm, not a validated result.
Example persona card
Persona card - Sarah, 29, House-Deposit Saver
Synthetic test: Sarah's scenario
Claude Code running Sarah's scenario against the live prototype screens
What this tells us
The findings that repeated across all three runs, even after the data changed completely, the "lock" language and the button-commitment ambiguity, are the ones worth treating as real signal. The term-mismatch and rate-surprise findings only appeared once real figures replaced placeholders, a useful result in itself: fixing one problem surfaced the next.
Real-user testing
Synthetic testing consistently flagged where Sarah hesitated: the word "lock," and whether tapping "Choose a Fixed Saver" commits her to the product.
A model predicting hesitation isn't the same as a real person actually stopping, backing out, or getting confused, so this round tested whether those same friction points showed up with real people.
Example test being set up in UserTesting
What participants said and did
All three were scoped as fixes, clearer guardrail copy on "lock," an explicit confirmation step, and surfacing the term mismatch earlier, but implementation is on hold due to other priorities. They're carried forward as known, unresolved friction points, not closed issues.
Involved: myself (Propositions Lead), running both testing rounds, with participants sourced through UserTesting.
4. Beyond the Diamond: Handoff & Measure
Kept outside the core four-stage model since it's what happens after a successful Deliver: I handed the validated concept, three known UX issues, and the evidence pack to the Savings Product Manager for roadmap prioritisation.
As of now, this is where the project sits: on hold, pending a decision on when it moves into a delivery sprint.
Measuring success
Involved: myself, presenting the evidence pack; the Savings Product Manager, who owns the backlog from here; Head of Propositions for commercial sign-off; an iOS and Android engineer for delivery.
5. Reflection
This doesn't start from "let's add AI to Browse Products," it starts from a specific, evidenced failure (familiarity bias, no goal-matching), with a mechanism only proposed once Define converged on one hypothesis.
The Savings PM's cannibalisation concern was surfaced and carried forward as a monitoring commitment, not ignored. The guardrail accepts a small amount of friction, an extra "are you sure" step, for regulatory safety: a trade made deliberately.
Synthetic testing gave a consistency signal, the real-user round gave the actual number.
This Claude-based prototyping workflow isn't bespoke to this case study, it's the same rapid-prototyping approach I'll likely roll out across my other work as part of why Develop moved so fast.
If it gets the green light, the next step is a delivery sprint with engineering.
← Back to projects
Howard Laws
Get in touch
Rapid Prototyping
Conversational UI
Synthetic Testing
FinTech
Atom Bank: Rapid-Prototyping Propositions with Claude Code
A repeatable rapid-prototyping framework, built end-to-end with Claude Code, using a product recommender as the test case.

1. At a glance
This case study covers the framework itself, tested against a live proposition: a product recommender that asks a saver their goal and suggests the best-fit savings product instead of a flat list to compare. I also took on the Propositions Lead role as a stretch assignment, to see how I'd run a project like this end-to-end while still shipping fast.
2. The Double Diamond
What's interesting here isn't the product recommender, it's the framework behind it: getting from a proposition brief to a tested, guardrailed concept without a full research and delivery cycle. Two stages changed from a standard Double Diamond run:
The Double Diamond: A Four-Step Process to Designing Solutions to Complex Problems
Conversations, testing, and stakeholder scheduling still ran on their own calendar; no tooling changes that.
3. Stage by Stage
The four stages below follow the Double Diamond shape, with the two adaptations layered in.
Stage 1: Discover
Discover: understand all relevant problems, causes, and knock-on effects.
Atom's Browse Products screen presents Cash ISA, Instant Saver, Fixed Saver and Mortgages as one flat, equal-weight list, with nothing connecting a customer's goal or time horizon to which product suits them.
Current Browse Products UI, plus supporting screen states
I grounded the brief in evidence from three sources:
New-to-saving customers default to the most familiar-sounding option rather than the best fit, and nothing in the flow challenges that.
Involved: me (Propositions Lead), the Savings Product Manager, and a Customer Support Agent.
Stage 2: Define
Define: converge the evidence into one clear, agreed problem to solve.
I ran a short workshop with the Savings Product Manager, Head of Propositions, Head of Brand & Experience, and myself, to turn scattered evidence into one hypothesis the team could align behind. Findings reviewed:
Current Browse Products UI, plus supporting screen states
Agreed problem statement
Customers without a strong product preference default to the most familiar-sounding option rather than the best fit. That's a loss both ways: the customer risks the wrong product, and Atom misses a chance to guide balances toward the mix it wants.
This wasn't unanimous on the first pass. The "loss both ways" framing was added after the Savings PM's cannibalisation concern, not there from the start.
Workshop outputs:
Involved: Savings Product Manager, Head of Propositions, Head of Brand & Experience, and myself (Propositions Lead).
Stage 3: Develop
Develop: generate and build a solution worth testing.
This is the stage built for real, not mocked up. A conversational entry point replaces the flat product list: the customer describes their goal (or taps the suggested prompts), and the interface returns a recommendation with visible, plain-English reasoning.
Design guidelines
Rapid design with Claude
I synced Claude Code with the necessary Figma files, including the design system component library, via MCP, so it couldn't generate a mockup disconnected from the Atom brand and UX guidelines, and used it to wire up click-through interactions between the four screens so the prototype could be clicked end to end rather than reviewed as static frames.
Claude Code executing a build prompt against the synced Figma design system files
The four screens
That setup produced four screens mapping onto the customer journey, from first prompt to handoff into the existing Browse flow:
Iteration 1 - Interactive Figma prototype - Entry point → Recommendation → Guardrail → Handoff
I then checked in individually with a few team members between iterations rather than running full workshops, matching the pace of rapid prototyping: a chance to flag changes before testing, and to get each person's view from their own angle: feasibility, tone, and the guidance-vs-advice guardrail.
Iteration 2 - Interactive Figma prototype - Entry point → Recommender/Guardrail → FUE Screens → Product Term Selector
That check-in round produced real changes, not just approval:
Involved: myself (building the prototype), an iOS & Android Engineer (feasibility), a Copywriter (tone), and Legal & Compliance (guardrail sign-off). All were consulted and in agreement; none blocked the build.
Stage 4: Deliver
Deliver: test, refine, and validate it before it reaches a real customer.
I tested synthetically first. Recommendation logic run past simulated personas (first-time saver, rate-chaser, house-deposit saver) to sense-check it before recruiting real testers. A smaller, targeted round of real testing on UserTesting followed to confirm the strongest direction, meaning fewer directions reached full human testing, and the ones that did arrived stronger.
Synthetic testing here means role-playing a persona through the built screens rather than asking the model to critique the design outright, since that tends to manufacture issues regardless of whether the design has any.
I ran each persona multiple times across phrasing variants, since one output only tells you what the model said once, and kept persona descriptions to observable facts, not conclusions, since hinting at what the guardrail should catch guarantees the model catches it.
Every flagged issue was a hypothesis for real-user testing to confirm, not a validated result.
Example persona card
Persona card - Sarah, 29, House-Deposit Saver
Synthetic test: Sarah's scenario
Claude Code executing the synthetic test for Sarah's scenario
What this tells us
The findings that repeated across all three runs, even after the data changed completely, the "lock" language and the button-commitment ambiguity, are the ones worth treating as real signal. The term-mismatch and rate-surprise findings only appeared once real figures replaced placeholders, a useful result in itself: fixing one problem surfaced the next.
Real-user testing
Synthetic testing consistently flagged where Sarah hesitated: the word "lock," and whether tapping "Choose a Fixed Saver" commits her to the product.
A model predicting hesitation isn't the same as a real person actually stopping, backing out, or getting confused, so this round tested whether those same friction points showed up with real people.
Example test being set up in UserTesting
What participants said and did
All three were scoped as fixes, clearer guardrail copy on "lock," an explicit confirmation step, and surfacing the term mismatch earlier, but implementation is on hold due to other priorities. They're carried forward as known, unresolved friction points, not closed issues.
Involved: myself (Propositions Lead), running both testing rounds, with participants sourced through UserTesting.
4. Beyond the Diamond: Handoff & Measure
Kept outside the core four-stage model since it's what happens after a successful Deliver: I handed the validated concept, three known UX issues, and the evidence pack to the Savings Product Manager for roadmap prioritisation.
As of now, this is where the project sits: on hold, pending a decision on when it moves into a delivery sprint.
Measuring success
Involved: myself, presenting the evidence pack; the Savings Product Manager, who owns the backlog from here; Head of Propositions for commercial sign-off; an iOS and Android engineer for delivery.
5. Reflection
This doesn't start from "let's add AI to Browse Products," it starts from a specific, evidenced failure (familiarity bias, no goal-matching), with a mechanism only proposed once Define converged on one hypothesis.
The Savings PM's cannibalisation concern was surfaced and carried forward as a monitoring commitment, not ignored. The guardrail accepts a small amount of friction, an extra "are you sure" step, for regulatory safety: a trade made deliberately.
Synthetic testing gave a consistency signal, the real-user round gave the actual number.
This Claude-based prototyping workflow isn't bespoke to this case study, it's the same rapid-prototyping approach I'll likely roll out across my other work as part of why Develop moved so fast.
If it gets the green light, the next step is a delivery sprint with engineering.
← Back to projects
Howard Laws
Get in touch
Rapid Prototyping
Conversational UI
Synthetic Testing
FinTech
Atom Bank: Rapid-Prototyping Propositions with Claude Code
A repeatable rapid-prototyping framework, built end-to-end with Claude Code, using a product recommender as the test case.

1. At a glance
This case study covers the framework itself, tested against a live proposition: a product recommender that asks a saver their goal and suggests the best-fit savings product instead of a flat list to compare. I also took on the Propositions Lead role as a stretch assignment, to see how I'd run a project like this end-to-end while still shipping fast.
2. The Double Diamond
What's interesting here isn't the product recommender, it's the framework behind it: getting from a proposition brief to a tested, guardrailed concept without a full research and delivery cycle. Two stages changed from a standard Double Diamond run:
The Double Diamond: A Four-Step Process to Designing Solutions to Complex Problems
Conversations, testing, and stakeholder scheduling still ran on their own calendar; no tooling changes that.
3. Stage by Stage
The four stages below follow the Double Diamond shape, with the two adaptations layered in.
Stage 1: Discover
Discover: understand all relevant problems, causes, and knock-on effects.
Atom's Browse Products screen presents Cash ISA, Instant Saver, Fixed Saver and Mortgages as one flat, equal-weight list, with nothing connecting a customer's goal or time horizon to which product suits them.
Current Browse Products UI, plus supporting screen states
I grounded the brief in evidence from three sources:
New-to-saving customers default to the most familiar-sounding option rather than the best fit, and nothing in the flow challenges that.
Involved: me (Propositions Lead), the Savings Product Manager, and a Customer Support Agent.
Stage 2: Define
Define: converge the evidence into one clear, agreed problem to solve.
I ran a short workshop with the Savings Product Manager, Head of Propositions, Head of Brand & Experience, and myself, to turn scattered evidence into one hypothesis the team could align behind. Findings reviewed:
Current Browse Products UI, plus supporting screen states
Agreed problem statement
Customers without a strong product preference default to the most familiar-sounding option rather than the best fit. That's a loss both ways: the customer risks the wrong product, and Atom misses a chance to guide balances toward the mix it wants.
This wasn't unanimous on the first pass. The "loss both ways" framing was added after the Savings PM's cannibalisation concern, not there from the start.
Workshop outputs:
Involved: Savings Product Manager, Head of Propositions, Head of Brand & Experience, and myself (Propositions Lead).
Stage 3: Develop
Develop: generate and build a solution worth testing.
This is the stage built for real, not mocked up. A conversational entry point replaces the flat product list: the customer describes their goal (or taps the suggested prompts), and the interface returns a recommendation with visible, plain-English reasoning.
Design guidelines
Rapid design with Claude
I synced Claude Code with the necessary Figma files, including the design system component library, via MCP, so it couldn't generate a mockup disconnected from the Atom brand and UX guidelines, and used it to wire up click-through interactions between the four screens so the prototype could be clicked end to end rather than reviewed as static frames.
Claude Code executing a build prompt against the synced Figma design system files
The four screens
That setup produced four screens mapping onto the customer journey, from first prompt to handoff into the existing Browse flow:
Iteration 1 - Interactive Figma prototype - Entry point → Recommendation → Guardrail → Handoff
I then checked in individually with a few team members between iterations rather than running full workshops, matching the pace of rapid prototyping: a chance to flag changes before testing, and to get each person's view from their own angle: feasibility, tone, and the guidance-vs-advice guardrail.
Iteration 2 - Interactive Figma prototype - Entry point → Recommender/Guardrail → FUE Screens → Product Term Selector
That check-in round produced real changes, not just approval:
Involved: myself (building the prototype), an iOS & Android Engineer (feasibility), a Copywriter (tone), and Legal & Compliance (guardrail sign-off). All were consulted and in agreement; none blocked the build.
Stage 4: Deliver
Deliver: test, refine, and validate it before it reaches a real customer.
I tested synthetically first. Recommendation logic run past simulated personas (first-time saver, rate-chaser, house-deposit saver) to sense-check it before recruiting real testers. A smaller, targeted round of real testing on UserTesting followed to confirm the strongest direction, meaning fewer directions reached full human testing, and the ones that did arrived stronger.
Synthetic testing here means role-playing a persona through the built screens rather than asking the model to critique the design outright, since that tends to manufacture issues regardless of whether the design has any.
I ran each persona multiple times across phrasing variants, since one output only tells you what the model said once, and kept persona descriptions to observable facts, not conclusions, since hinting at what the guardrail should catch guarantees the model catches it.
Every flagged issue was a hypothesis for real-user testing to confirm, not a validated result.
Example persona card
Persona card - Sarah, 29, House-Deposit Saver
Synthetic test: Sarah's scenario
Claude Code running Sarah's scenario against the live prototype screens
What this tells us
The findings that repeated across all three runs, even after the data changed completely, the "lock" language and the button-commitment ambiguity, are the ones worth treating as real signal. The term-mismatch and rate-surprise findings only appeared once real figures replaced placeholders, a useful result in itself: fixing one problem surfaced the next.
Real-user testing
Synthetic testing consistently flagged where Sarah hesitated: the word "lock," and whether tapping "Choose a Fixed Saver" commits her to the product.
A model predicting hesitation isn't the same as a real person actually stopping, backing out, or getting confused, so this round tested whether those same friction points showed up with real people.
Example test being set up in UserTesting
What participants said and did
All three were scoped as fixes, clearer guardrail copy on "lock," an explicit confirmation step, and surfacing the term mismatch earlier, but implementation is on hold due to other priorities. They're carried forward as known, unresolved friction points, not closed issues.
Involved: myself (Propositions Lead), running both testing rounds, with participants sourced through UserTesting.
4. Beyond the Diamond: Handoff & Measure
Kept outside the core four-stage model since it's what happens after a successful Deliver: I handed the validated concept, three known UX issues, and the evidence pack to the Savings Product Manager for roadmap prioritisation.
As of now, this is where the project sits: on hold, pending a decision on when it moves into a delivery sprint.
Measuring success
Involved: myself, presenting the evidence pack; the Savings Product Manager, who owns the backlog from here; Head of Propositions for commercial sign-off; an iOS and Android engineer for delivery.
5. Reflection
This doesn't start from "let's add AI to Browse Products," it starts from a specific, evidenced failure (familiarity bias, no goal-matching), with a mechanism only proposed once Define converged on one hypothesis.
The Savings PM's cannibalisation concern was surfaced and carried forward as a monitoring commitment, not ignored. The guardrail accepts a small amount of friction, an extra "are you sure" step, for regulatory safety: a trade made deliberately.
Synthetic testing gave a consistency signal, the real-user round gave the actual number.
This Claude-based prototyping workflow isn't bespoke to this case study, it's the same rapid-prototyping approach I'll likely roll out across my other work as part of why Develop moved so fast.
If it gets the green light, the next step is a delivery sprint with engineering.
← Back to projects