← Portfolio
UX Case Study · Co-founded · Android

My advisor forgot. So I built his memory.

Bunny is a client manager for one independent financial advisor. It holds the client book, and it remembers every call, meeting and deadline so the advisor doesn't have to.

Product DesignerRole
Co-founderOwnership
Idea → build → storeScope
39 screensOutput
Android · KotlinPlatform

Started from a real annoyance, not a brief. Designed, built and shipped end to end with a co-founder.

What I did on this project

The 30-second version
Deliverable 01

A shipped Android app

39 screens in Kotlin and Jetpack Compose, built around one job: never let the advisor forget a client.

Deliverable 02

A year of reminders in one tap

Quarterly portfolio reports and half-yearly reviews, scheduled for the whole financial year automatically.

Deliverable 03

Two professions, one app

Testing found advisors who also do tax. Instead of one bloated app, the app reshapes itself by profile.

Problem framingUser researchInformation architecture Interaction designUI directionDesign system Android buildProduct strategy
01The problemPhase 1 of 7

I was the one doing the reminding.

My own mutual-fund and tax advisor missed a deadline, and never told me it was coming.

It kept happening. I was the one messaging him about my portfolio review. A client chasing his advisor for the service he was already paying for.

He is not careless. He has a few hundred clients and no system — nothing to hold a client's details, nothing to tell him who to call this week, nothing to schedule the reviews he had promised.

The work was not the problem. Remembering the work was the problem.

02Who it is forPhase 2 of 7

One advisor. Not a firm.

Deciding who this was not for shaped everything after it.

Not this

A B2B platform

Teams, roles, permissions, dashboards for a manager. That is a different product with a different sales cycle, and it is not the person who was failing me.

This

One person with 100–200 clients

Enough clients that memory fails. Few enough that they know every name. No back office, no assistant, no software budget — just a phone.

Because the user is one person on a phone, the app never asks anyone to log into a desktop, and every important action finishes in a couple of taps.

03The first buildPhase 3 of 7

Version one was only about staying in touch.

No tax. No pipeline. No reports. Reminders for meetings, and wishes on the days that matter.

Bunny splash screen Splash · client manager, financial companion
Onboarding — manage clients, track meetings, smart reminders Onboarding · the promise, in four lines
Onboarding — greetings, export, PIN lock, backup, search Onboarding · what it does for you
01

Import contacts

Start from the phone book the advisor already has, not an empty table.

02

Client record

Name, mobile, email, address, birthday, notes, photo, tag.

03

Meeting reminders

The reason the app exists — nothing gets promised and then forgotten.

04

Birthday & festival wishes

The advisor's relationship work, made one tap instead of a diary entry.

04The idea that made it workPhase 4 of 7

Fill the advisor's whole year in one tap.

Asking a forgetful person to remember to set reminders solves nothing. So the app sets them.

Auto-generate reminders dialog — quarterly portfolio reports and half-yearly review meetings for the year Auto-generate · one tap, one year

Add a client, press one button, and the year is scheduled:

Portfolio report on the 4th day after each quarter end — 4 July, 4 October, 4 January, 4 April.
Review meeting twice a year — 15 June, 15 December.

Existing reminders are skipped, so pressing it again never creates duplicates.

This is the whole product in one dialog. The advisor's promises become dated entries the moment the client exists.

Add client — date of birth, KYC completion date with expiry note Add client · KYC alert, 60 days before a 3-year expiry
Client detail — six reminders generated, review meeting and portfolio report Client · six reminders, already dated
Add reminder screen Manual reminder · for anything the rules miss
Add meeting screen Meeting · schedule, then send the invite

Meetings carry mode, link, minutes and a follow-up status — so the next reminder can be created out of what actually happened in the last meeting.

05The turnPhase 5 of 7

Testing found a second job I hadn't designed for.

Many of the advisors testing the app were also handling their clients' tax — GST and income tax — with no tool for it.

What testing showedScope

The same person is a fund advisor to a client on Monday and their tax consultant in July. Two jobs, one contact list, two sets of deadlines.

What it forcedTax had to be a first-class half of the product — ITR filings, GST returns, and the statutory calendar — not a note field.
The design problem it createdBlocking

Giving everyone everything would have buried a pure fund advisor under GSTR-9C, and a pure tax consultant under SIP anniversaries.

What I changedA profile chosen on first launch. The app keeps the same data and rearranges what it puts in front of you.

One question, asked once

“What best describes your practice?” Financial advisor, tax consultant, or both.

Two tabs stay fixed — Home and Clients. Two change. The fifth is an overflow hub, so nothing is lost, it is just not in the way.

Changeable later in Settings, because people's practices change.

Financial advisorRole A
Tax consultantRole B
BothRole C
Role selection — financial advisor, tax consultant, or both First launch · the question that reshapes the app
Home screen with tax deadlines and today's glance Home · GSTR-1 in 13 days, advance tax in 17
More hub grouped by engagement, financial advisor, tax consultant and app More · grouped by job, not by menu order
Activity hub — meetings and reminders in one place Activity · meetings and reminders together

Deadlines are counted, not just listed — “13 days”, “17 days”, “22 days”. A date alone is something to interpret; a countdown is something to act on.

06System & craftPhase 6 of 7

Calm, green, and boring on purpose.

This app opens in front of a client. It should look like a professional's tool.

One accent, one job

A single emerald marks the primary action on any screen. Status uses amber and red only on the thing that is late.

Primary
Deep
Container
On-container
Secondary

Built the platform's way

Jetpack Compose with Material 3, so the app inherits Android behaviour — dynamic type, dark theme, back gestures, accessibility — instead of reimplementing it badly.

KotlinComposeMaterial 3Room DB v9WorkManager

Four looks, decided by comparison

Rather than argue about taste, I built the same home screen four ways.

Four UI directions for the same home screen
Same home screen · four directionsGlassmorphism Lite · Neo-Minimal · Fintech Premium

Rules the build had to obey

An upgrade may never wipe the bookNine database versions. Destructive migration removed — every version only adds.
Reminders never duplicateGenerating a year twice is a normal user action, so it has to be safe.
The phone is the vaultPIN lock, plus backup, restore and CSV export the advisor controls.
Say what it is notA financial disclaimer and a plain-language privacy policy, written before submission.
07Ship & auditPhase 7 of 7

Then I marked my own homework.

Being the founder means nobody else will tell you the pricing is wrong.

Shipped

10 clients on the free plan

But birthday alerts, SIP anniversaries and KYC warnings only fire with volume. A free user would never see the product work.

Argued forUnlimited clients. Charge for outputs, not for letting data in.
Shipped

Ads in a work tool

This app is opened in front of clients. An interstitial mid-KYC damages the advisor's credibility, and mine.

Argued forRemove advertising from the product entirely.
Shipped

₹99 a month

To an advisor earning lakhs in trail commission, ₹99 is not cheap — it is invisible, and it signals a toy.

Argued forAn annual plan, priced like a professional tool.

Written against my own decisions, from reading the shipped code rather than the plan. Owning the product includes being willing to be wrong in public about it.

ReflectionClosing

What this one taught me.

The best brief is an annoyance

Nobody asked for this. I was the client being let down, which meant I knew exactly what “working” looked like.

Don't ask a forgetful user to remember

A reminder app that needs you to set reminders has not solved the problem. Generating the year is the feature.

Testing changed the product, not the pixels

Finding that advisors also do tax added a second half — and the profile system exists only because giving everyone everything would have ruined it.