Case study 02 · Regulated onboarding
A scalable KYC module for a TRCSL-regulated telco
It started with 32,417 rejected orders in the Retail Hub Sales App, the app our sales agents use to connect new customers. It grew into a KYC module for every digital channel, self-service and assisted.
01 · Where it started
What the rejection data said
67% of rejections were capture or data-entry problems, not fraud.
32,417 rejected orders, Aug–Oct 2023, all from the Sales App. Add expired documents and 76% were avoidable.
| Reason group | Share | Aug → Sep → Oct |
|---|---|---|
| Image unreadable | 37% | 34 → 37 → 41 ↑ |
| ID number mismatch | 30% | 28 → 33 → 31 |
| Fraud or tampering | 21% | 26 → 19 → 17 ↓ |
| Expired or underage document | 9% | 9 → 10 → 8 |
| Wrong or incomplete document | 3% | 4 → 2 → 4 |
The trend that mattered
34% → 41%
Unreadable images were getting worse every month, while fraud fell from 26% to 17%.
Top individual reasons
The three image reasons (24 + 7 + 6) make up the whole “Image unreadable” group.
02
Auditing the flow against the data
Most rejections were avoidable, so I went back through the Sales App’s KYC flow looking for the design flaws behind each reason.
| Rejection reason | Design flaw I found | Change I proposed |
|---|---|---|
| Image unreadable 37% | The image capture wizard relied on the agent’s judgement for focus and lighting when photographing documents. | Auto capture, with on-screen guides that help the agent get alignment, focus and lighting right. |
| ID number mismatch 30% | Agents typed the ID number by hand. Any local ID that passed format validation was accepted, and passports had no format check at all, leaving room for human error and fraud. | Read the ID number from the captured document instead of having the agent type it. |
| Expired or underage 9% | No check on the customer’s age or the document’s expiry date before submission. | Check age and expiry from the scanned ID before the order can be submitted. |
03
Phase 1: fixing the Sales App
Proposed, not shipped- Auto capture with guides. On-screen guides help the agent get alignment, focus and lighting right, so image quality no longer depends on judgement alone.
- ID number read from the document. The number comes from the captured ID, not the agent’s typing, which leaves far less room for human error and fraud.
- Age and expiry checked upfront. Both are read from the scanned ID and checked before submission, so an expired or underage document is caught on the spot, not after rejection.


Figma · Before and after
See the real Sales App screens, before and after the redesign
Capture guides, ID read from the document, and upfront age and expiry checks.
04
The shift: KYC becomes a standard
The process team in our division set out to standardise KYC across every digital channel that reaches customers. I joined those discussions and presented the Sales App findings as evidence of where the process was failing.
SELF-SERVICE
Customers verify themselves. Starts with the MyDialog app, where the first version was designed.
ASSISTED
An agent verifies a customer, as in the Retail Hub Sales App. Follows as the next iteration.
ONE MODULE, EVERY CHANNEL
- Same journey, same logic. One module behind every channel, self-service and assisted.
- Responsive per channel. Adapts to each channel’s viewport.
- Themed per app. Maps to each app’s theme, so it feels native wherever it sits.
- Two content strategies. Wording and structure written for doing it yourself or helping a customer.
Built for reusability, scalability and flexibility from the first channel.
What the standard had to do
05
Phase 2: one module for every channel
In progressI’m the designer of the module. The aim was a structure flexible enough for each product’s rules and simple enough to scale to every channel.
Five common KYC categories form the shared core. Contact, address proof, identity, signature and extended. Each is designed once, so every product asks for it the same way.
Each product picks the categories it needs, plus additional fields. A product combines categories and adds its own fields on top, instead of forking the form.
A new category only when none fits. If a future product needs something no category covers, the core gains a category. The form itself doesn’t change.
Same module, very different asks
Products need very different depths of KYC, from two fields to a full financial profile. Each one picks the categories it needs, and anything unique goes in as additional fields.
| PRODUCT | CONTACT | ADDRESS PROOF | IDENTITY | SIGNATURE | EXTENDED | ADDITIONAL FIELDS |
|---|---|---|---|---|---|---|
| iPhone sale | ✓ | · | · | · | · | — |
| Dialog Television | ✓ | ✓ | · | ✓ | · | — |
| Mobile connection | · | ✓ | ✓ | ✓ | · | — |
| Government employee package | · | ✓ | ✓ | ✓ | · | Government ID or appointment letter |
| Savings product (fintech) | · | · | · | · | ✓ | — |
SHARED CORE · PICK WHAT’S NEEDED
PER PRODUCT · ADDITIONAL FIELDS
OUTPUT
One rendered form
In every self-service and assisted channel
Options I rejected
A field library, combined per product. List every possible KYC field, design each one, and let each product pick the combination it needs.
Why not: every new product meant defining its KYC from scratch, in its own order. The journey would drift from product to product and wouldn’t scale consistently.
One worst-case form, hide what’s not needed. Structure every possible field for the heaviest product, then hide the ones each product doesn’t use.
Why not: a two-field iPhone sale would still be shaped around fintech KYC. Hidden fields leave half-empty steps, and every new requirement changes the one master form for every product.

Same module, different voice
The assisted version reuses the same sections and rules. What changes is the information architecture and the wording, because an agent is completing it for a customer rather than for themselves.
Illustrative example of the shift in wording.
06
Result
- Fixes proposed for the three causes behind 76% of rejections
- Deprioritised before launch, a business decision outside my control
- The findings went on to shape the company-wide KYC standard
- Findings fed the company-wide KYC standard
- Self-service version designed; assisted follows as the next iteration
- Design proposed. The next step is standardising the underlying systems so every channel can use it. Plus extending to fintech.
For Homey
Why this matters at Homey
UK conveyancing has the same shape of problem. Firms must verify ID and address before a sale can progress, and a mismatch means asking for more proof. That is the billing-proof rule here.
The approach transfers: start from the rejection data, fix capture where it fails, then build one verification core that every channel shares.
Next · Client work
Founders on the other side of the world, delivered remotely