01Product Design

Reducing Dormant Accounts Through Intent-Based Onboarding

One flow served every customer, whatever they came for. Nobody ever asked why they were there, and about one in six new accounts opened dormant from day one.

Role
Product Designer
Scope
Feature enhancement
Platform
Mobile app
Timeline
1 month
Background

Everyone got the same onboarding, whatever they came for.

Bank Saqu is an Indonesian digital bank selling savings and credit in one app. To apply for credit, customers had to open a savings account first, so the account existed before we knew whether the loan would be approved. Nobody ever asked why the customer was there.

It worked for people who came to save. It failed the majority who came to borrow.

  • 72% came wanting credit
  • 49% of them were rejected
  • 50% of those never came back
  • 18% of all new accounts opened dormant on day one

The flow wasn't bad. It just didn't know who it was talking to.

And the dormancy compounded. Every rejected applicant we onboarded anyway walked away with a product they hadn't asked for, and we were left paying to run accounts for people we had already turned away. Across a year that is 105,840 accounts at Rp10,033 each.

Problem Statement

We were opening accounts that people never asked for.

  • Intent was never captured. The flow had no signal to work from, so it treated a borrower exactly like a saver.
  • Rejection still opened an account. People got a product they hadn't asked for, and no reason to come back.
  • Every dormant account costs money. Every month, with nothing coming back the other way.
How Might We?

How might we capture intent early enough to stop opening accounts nobody wants, without losing the people who genuinely came to save?

Goals
  • Fewer dormant accounts from loan rejection
  • Lower running cost from unused accounts
  • Keep the customers who actually want savings
  • Give people we reject a real choice, not a default
Design Strategy

The dormancy was decided at the start, not the end.

The obvious fix was downstream: reactivation campaigns and nudges. That treats the symptom. No campaign fixes an account nobody wanted in the first place. What I argued instead was that we stop opening the account at all. Once we onboarded someone without asking what they came for, the outcome was already set.

I didn't rebuild the journey. It worked. It was just missing a signal. Two small changes, not a rebuild:

  • Ask what they came for. One question before onboarding starts: savings, or savings and credit. Without that, every later decision is made blind.
  • Let the answer shape the flow. Same steps for both paths. The credit path asks for more, and rejection ends in a real choice instead of an account.

The tradeoff I accepted: an extra question upfront may lose people who would have drifted into an account. I took that deliberately. An account opened by accident isn't a win, it's a cost.

Solution

Ask what they came for

The flow opens with one routing question and two paths.

What each path asks for: savings is an ID check, basic info, and the account opens. Savings and credit is an ID check, basic info plus credit data, a credit decision, and then either an account or an exit.

  • Both options include savings. Credit is an add-on, not a swap. Nobody gives up the savings account to ask for a loan.
  • Asked before anything else. It sits ahead of the ID check, so every later step can use the answer.
  • A product choice, not a purpose. That wording mattered more than I expected. Concept testing showed why.

One flow, two depths

Same steps for both paths. The answer only changes what we ask for.

  • Path A, Tabungan. Identity, address, basic income. Close to the old flow. No credit fields, no SLIK consent.
  • Path B, Tabungan + Pinjaman. Everything above, plus employment details and income, office address and phone, emergency contact, domicile check, education, and SLIK credit bureau consent.

SLIK is the clearest case. It's a real thing to ask of someone, and savings customers were being asked for it anyway.

Making the savings account a choice

This is the decision I got the most pushback on. Cancel is the primary button. Continuing to a savings account is a text link.

Normally you bury the exit and push the account, because acquisition is what gets measured. But half of these accounts go dormant, and each one costs us every month. Pushing the signup meant pushing an expense.

Cancelling explains that the data already submitted gets deleted. That makes leaving something you get, not something you lose.

Still unresolved: a weighted exit may push away people who would have used the account.

Iteration

People felt asked the same thing twice

I tested the concept internally before build. The entry screen asked which product. A compliance field inside KYC asked the account's purpose. Neither one could go. The real problem was two questions with two owners, never designed as a pair.

So I made them ask different things

  • Entry screen. “Apa tujuan kamu membuka rekening?” became “Yuk, pilih produk yang sesuai dengan kebutuhanmu”.
  • KYC field. “Tujuan membuka akun” became “Tujuan penggunaan rekening”.

One word did it. Opening is a decision you make now. Using is what happens after. Different tenses, different questions.

Then I connected them

Rewording alone still leaves two similar questions in a row, so I made the second one follow from the first.

  • Path A, Tabungan. The purpose field lands on Menabung. Only Meminjam is locked. The rest stay open, because they fit a savings account.
  • Path B, Tabungan + Pinjaman. The field lands on Meminjam and everything else is locked. That answer decides which flow you're in.

The repetition became proof that the system was listening.

Final Outcome

From one path for everyone to a flow that adapts.

  • Intent captured before onboarding starts
  • Same steps, different depth of questions
  • Savings customers skip credit fields and SLIK
  • Credit customers give what a decision needs, upfront
  • Entry and KYC questions reworded and linked
  • Rejection ends in a choice, with data deleted
Projected Impact

Shipped last month. These are the projections the case was built on, sized from our own rejection and inactivity rates over the last three to six months.

  • ~18% of new accounts would stop opening by default.
  • 211,680 rejected applicants get a real exit, instead of an account they won't use.
  • Rp1.06B in running cost avoided, the value of the dormancy we stop creating.

How the cost is built: 600,000 new accounts to end of year → 72% with lending intent = 432,000 → 49% rejected = 211,680 → 50% inactive after = 105,840 accounts × Rp10,033 each = Rp1.06B.

What I'd watch first: how many rejected applicants actually cancel is the ratio the whole model turns on, and it is the first thing coming back from live data.

Reflection
  • Good metrics can hide a bad outcome. Completion looked healthy because we were finishing journeys that should never have started.
  • Rejection is a design surface. How a product says no matters as much as how it says yes.
  • Sometimes good design makes leaving easier. It looked like giving up a signup. Against the cost of dormancy, it was cheaper and more honest.
  • Put a price on it and the conversation changes. Once dormancy had a number, this stopped being a UX argument.
Interested in working together?

Let's build something great.