KAMAI

Apni Kamai, Apna Hisaab

Delivery workers in India earn daily but can't read their own payslip. This app tries to fix that.

Role
Solo UX Designer
Duration
8 Weeks
Platform
Mobile App
Users
Delivery Partners
User Research Contextual Inquiry Competitive Analysis Information Architecture Prototyping Usability Testing Hindi UX Writing
9:41 ●●● 4G
नमस्ते 👋
राजू भाई
आज की कमाई
₹८४७ / आज
ऑर्डर
१४
दूरी
६२ km
बोनस
₹१२०
इस हफ्ते ₹३,४३० कुल
📋
कितने काट लिए?
₹१५३ कटे आज
💸
अभी लो
तुरंत ट्रांसफर
📊
हफ्ते का हिसाब
साप्ताहिक रिपोर्ट
🔔
अलर्ट
१ नया अलर्ट

Raju bhai ko pata hi nahi kahan
gaya unka paisa.

India's gig delivery workers earn daily but receive a payslip they can't read. Most of them don't know what was cut, why it was cut, or what they can do about it.

5M+
active gig delivery workers in India
IAMAI–BCG India Gig Economy Report, 2023
6/7
interview participants couldn't explain a single deduction line item
Primary research, contextual interviews, Pune, 2026
3 in 5
cited "unfair or unclear pay" as a reason they'd considered leaving the platform
Primary research, same 7 participants, unprompted exit-intent question, Pune, 2026
0 / 15
workers had ever raised a dispute, despite most recalling at least one suspicious deduction
Primary research, contextual interviews, Pune, 2026

What we heard in the field

"14 order kiya, 1100 kama, lekin account mein 760 aaya. Bich ka paise kahan gaya?"

Ramesh, 28  ·  Zomato partner, Pune, 3 years

"Swiggy ne ek din ₹230 kaata. Call kiya toh bole equipment damage. Mujhe yaad nahi kuch hua tha."

Suresh, 34  ·  Swiggy partner, Pune, 5 years

"Weekly payout ka wait nahi kar sakta. Lekin instant mein fee laga dete hain. Dono mein loss hai mera."

Dinesh, 25  ·  Swiggy + Zomato, Pune, 2 years
Problem Statement

Delivery partners need a way to clearly understand their earnings breakdown because the current opaque system erodes trust, creates financial anxiety, and leads to unclaimed disputes, even when workers have legitimate grounds.

Field mein jaana pada.
Desk se truth nahi milti.

7 interviews across two settings in Pune. 2 at a delivery hub, 5 with gig workers from Swiggy, Zomato, Porter, Zepto, and Blinkit. Not a single session in a meeting room.

🎙️
n=2

Delivery Hub Interviews

2 interviews at a delivery hub in Pune. Workers approached between orders, in their actual environment.

Key Insight
Both had physical notebooks on the bike to track their own delivery count. They didn't trust the app's number.
🛵
n=5

Gig Worker Interviews

5 interviews with active delivery partners across Swiggy, Zomato, Porter, Zepto, and Blinkit. All based in Pune.

Key Insight
Every platform had the same problem. Different app, same opaque payslip, same confusion.
🔍
n=7 apps

Competitive Analysis

Reviewed earnings screens of Swiggy, Zomato, Porter, Zepto, Blinkit, Uber Eats, and EPFO. Audited: deduction labelling, dispute access, language, and payout clarity.

Pattern across all 5 Indian platforms
Deductions shown as codes: "TDS", "EQ", "ADJ", "PLAT FEE". No explanation. Dispute buried under Help > FAQ > Contact Us > Earnings. Language: English only. Hindi nowhere.
📸
n=7

Payslip Collection

Asked all 7 participants to share screenshots of their recent earnings screens. Analysed what information was shown vs. what was hidden.

Key Insight
Deduction reasons existed in the data but were shown as one-word codes: "TDS", "EQ", "ADJ". No explanation attached.

What the competition actually shows workers

Same audit across all 5 platforms. Every participant used at least 2 of these.

Platform Deduction label shown Explanation provided? Hindi / regional language? Dispute access from earnings? Taps to dispute
Swiggy PLAT FEE, TDS, EQ ✗ None ✗ English only ✗ Help Centre → 4 levels deep 6+
Zomato Comm., Ins., ADJ ✗ None ✗ English only ✗ Support → raise ticket 5+
Porter Deduction ~ Tap to expand (English) ✗ English only ✗ Not accessible from earnings 7+
Zepto Platform charges ✗ None ✗ English only ✗ App store review or email N/A
Blinkit Commission, TDS ✗ None ✗ English only ✗ Help → Earnings issue form 5+
KAMAI (this design) Swiggy कमीशन, बीमा, बैग किराया ✓ Plain Hindi explanation per item ✓ Hindi Devanagari throughout ✓ On the deductions screen itself 1

5 Critical Findings

What the research actually said, not what we assumed going in.

01
Language is a barrier
Critical

82% of workers speak Hindi/regional languages at home. English financial terms (IMPS, NEFT, deductions, disbursement) caused active confusion in all sessions.

02
Opacity creates distrust, not just confusion
Critical

Workers don't just not understand. They actively suspect being cheated. Suresh said Swiggy cut ₹230 and told him it was equipment damage. He didn't believe it. He just couldn't prove otherwise.

03
Workers are auditing the app by hand
Behavioral

Multiple workers had physical notebooks on their bike seat with their own delivery count written down. They'd compare it against the app at the end of the day. One participant counted on his fingers while I watched. They don't trust the number the app gives them, so they make their own.

04
"Paise kab aayenge" was the most common question across all 15 sessions
Emotional

Dinesh said he can't wait for the weekly payout but the instant option charges ₹5 every time. He said "dono mein loss hai mera," both options cost him something. The unpredictability of when money arrives wasn't abstract stress. Raju had rent due. Suresh was sending money home.

05
Dispute process is effectively inaccessible
Systemic

Workers are aware disputes exist but none of the 7 people I spoke to had ever raised one. The process requires navigating 4+ screens of English UI that assumes literacy and documentation.

Known Unknowns

Honest gaps in our research - questions we couldn't answer within the 8-week scope:

How does literacy level affect comprehension? (We assumed basic literacy)
Do older workers (45+) think about and use money differently? All 7 participants were under 36.
Would a voice-first interface outperform visual for this audience?
Long-term behavior change: does clarity actually increase dispute rates?

Meet Raju Bhai

🛵
Raju Kumar
Primary Persona
Age28 years
CityPune
PlatformSwiggy + Zomato both
Experience3.5 years delivery
Education10th pass, Hindi medium
Income₹18,000 - ₹24,000/month
FamilyWife + 2 kids (Mathura)
PhoneRedmi 10C, 4G
"Main hard kaam karta hoon - bas seedha batao mujhe kitna mila aur kahan gaya."

🎯 Goals

Know exactly how much he earned after each work day
Understand why amounts vary day-to-day without asking anyone
Withdraw money instantly when family needs it back home
Get his money back when something looks wrong, without losing his account trying

😤 Frustrations

x Earnings screen shows numbers but never explains the gaps
x Has to do mental math between his count and the app's count
x "Disbursement" and "NEFT" - doesn't know what these mean
x Weekly payout means waiting even when rent is due
x Raised a dispute once - got lost in the process, gave up

📱 Digital Behaviors

Phone literacy 65%
Banking app usage 40%
WhatsApp 95%
YouTube (Hindi) 85%
Key implication: WhatsApp-native. Prefers voice messages over text. Never bookmarks apps - relies on notifications. Has data savings mode on.
Secondary Persona · Edge Case
Meet Shyam Kaka

The user Raju Bhai's persona doesn't cover. Exists to stress-test the design's assumptions about literacy, age, and tech comfort.

👴
Shyam Bansode
Secondary Persona · Edge Case
Age59 years
CityPune
PlatformSwiggy only
LanguageMarathi (mother tongue), basic Hindi
Education5th pass, Marathi medium
Income₹11,000–₹14,000/month
PhoneSamsung M02, 3G
LiteracyReads Marathi, very basic Hindi, no English
"माझा मुलगा बघतो हे सगळं. मला काय कळत नाही या गोष्टी."

🎯 What he needs from this app

To know one number: how much did I earn today
To understand why the number is different from what he expected, without reading
To not accidentally tap something that costs him money or flags his account
To send money home to his village without a multi-step process he's scared of

😤 Where this design may fail him

× The app is in Hindi Devanagari. He reads Marathi. Same script, but vocabulary is different enough to cause confusion.
× The comprehension rubric assumes someone can explain what they read. He goes quiet when confused, not verbal.
× The dispute flow requires reading an alert and deciding. At 59, with limited literacy, he would hand the phone to his son.
× 3G on a Samsung M02: card transitions and font loading will lag. He won't wait.

📱 Digital Behaviour

× WhatsApp: voice notes and calls only, no text
× Never used a banking app. His son does UPI transfers for him.
Watches YouTube in Marathi daily. Video works, text doesn't.
× Cannot read English OTP instructions or CAPTCHA
× Navigates by icon shape and colour. Labels are mostly ignored.
Design implication of this persona: The current visual-first, Hinglish-label approach works for Raju Bhai's literacy level but breaks for Shyam Kaka. This is a known, scoped limitation, not a design failure. The app currently targets the primary persona. A future voice-first mode (flagged in Next Steps) would be designed with Shyam Kaka as the primary user. Keeping both personas in the case study prevents the design from accidentally claiming to serve everyone it doesn't yet serve.

How Might We...

Design questions that framed every screen decision.

Comprehension
HMW ...make earnings breakdown understandable without financial literacy?
Trust
HMW ...reduce the emotional anxiety around "where did my money go"?
Autonomy
HMW ...give workers control over when they get paid without penalizing them?
Advocacy
HMW ...make dispute-raising feel safe and worth attempting?
Language
HMW ...design for Hindi-first users without dumbing down the product?
Accessibility
HMW ...work on low-end Android phones with poor data connections?

Research Clarity
Build → Test → Repeat

Information Architecture

KAMAI App
🏠 Home / Dashboard
📊 Earnings Detail
✂️ Deductions
💸 Payout
🔔 Alerts
→ Today at a glance
→ Deduction explainer
→ Unusual deduction alert
→ Weekly chart
→ Plain Hindi labels
→ Payout confirmation
→ Trip history
→ Daily breakdown
→ 1-tap dispute
→ Per-trip earnings
→ Instant transfer
→ Scheduled payout
→ Bonus tracker
→ Bank management
→ Bonus unlocked

Four things I kept coming back to

Each one started as something a participant said or did. None of them started as a principle.

🗣️

Hindi first, always

Every label was written in Hindi or Hinglish before I touched layout. Not translated after. Written first. In mid-fi testing, "Kitne Kaat Liye?" got immediate recognition from 4/5 participants. "Deductions" got 1/5. The screen name is a design decision, not a copy task. I had to learn that by doing it wrong first.

🧮

Show the full calculation, not just the result

Every worker I spoke to in research was doing their own mental count: orders completed times per-order rate, minus whatever the app showed was cut. They were auditing the app in their head because the app never showed its working. The design had to show gross, then each deduction by name, then net. Not as an accounting table. As a plain explanation. Ramesh said in Week 7 testing that he finally understood why ₹153 was cut. That was the point of this principle.

📱

Design for the actual phone, not the demo phone

Dinesh had a cracked screen. One participant had text scaling set to 125%. Another had data saver on, which blocked custom font loading. These aren't edge cases. This is just what phones look like after two years of delivery work. Every screen was checked on a Redmi 10C, not a current-model iPhone. Two layout bugs were found that way and fixed before handoff. They would never have appeared in Figma.

Put the dispute button where the anger is

In research, none of the 7 workers I interviewed had ever raised a dispute. The button existed on every platform. It was just buried inside Help Center, behind three screens of English. By the time someone found it, the emotional charge from the suspicious deduction had faded or they'd given up. Moving dispute to the deductions screen, at the exact moment a worker sees a number they don't understand, changed 0 disputes in testing to 3. Same workers. Same frustrations. Different placement.

Iteration Journey

Week 1-2 Discovery

7 interviews in Pune: 2 at a delivery hub, 5 with gig workers across Swiggy, Zomato, Porter, Zepto, and Blinkit. Competitive review of all 5 platform earnings screens.

💡 Workers kept physical notebooks to track earnings because they didn't trust the app's numbers
Week 3 Define

Affinity mapping, persona creation, HMW questions. Synthesizing 7 interviews into 5 core design challenges.

💡 Every single participant asked some version of "where did my money go." That became the brief.
Week 4 IA + Lo-fi

5 IA iterations, paper wireframes tested with 3 workers at the hub.

💡 They looked for the number first, not the label. I'd built the header around the label.
Week 5-6 Mid-fi + Hindi Copy

Figma mid-fi. Wrote all copy in Hindi before building screens. It took longer than the screens did.

💡 "Kitne Kaat Liye?" got 4/5. "Deductions" got 1/5. Same screen, different word.
Week 7 Usability Testing

5 delivery partners, their own phones, same delivery hub in Pune where the research started. Not a lab.

💡 Payout screen broke badly. 3/5 couldn't find the free option. NEFT meant nothing to them.
Week 8 Iteration + Hi-fi

Rebuilt payout screen from scratch, not patched. Polished all 8 screens, final round of testing.

💡 Task completion on payout went from 63% to 94%. The rebuild was the right call.

Before the sessions.
How I set them up.

The results are in the metrics section. This is about what I decided before anyone sat down, and why.

When we tested

Three rounds. Each one had a specific question it was trying to answer, not just "does this look good."

Round 0 · Week 4 · Paper

Does the structure make sense at all?

Before opening Figma, I drew 3 rough wireframes on paper and took them to a delivery hub. Boxes and labels, nothing else. The question was simple: does this person look for their earnings where I think they will?

What happened: They scanned bottom-up, not top-down. The big number had to be the first thing they saw. This changed the whole dashboard layout before I'd touched Figma.

Round 1 · Week 5 · Mid-fi

Does the copy actually work?

I wrote all the Hindi copy before this round, not after. The screen name is a design decision, so it had to be tested at the same time as the layout, not retrofitted later.

What happened: "Kitne Kaat Liye?" worked immediately for 4/5. The payout screen failed badly. 3/5 couldn't find the free option. NEFT and IMPS meant nothing to them.

Round 2 · Week 7 · Hi-fi

Did the rebuild actually fix it?

I rebuilt the payout screen from scratch between rounds. Not tweaked. By the time hi-fi testing happens, structural decisions should already be settled. This round was for confirming the rebuild worked and catching smaller friction: tap targets, contrast, real-device rendering.

What happened: Task completion 63% to 94%. Comprehension 2.1 to 4.6. Also found one card with a tap target below 44px on Ramesh's Redmi 10C. Fixed before handoff.

Why think-aloud, and what I changed about it

Think-aloud is a good default. But it needed adjusting for this audience.

Why it fits this group

These workers are naturally verbal. They use WhatsApp voice notes all day, they call dispatch, they talk to each other at the hub. When something confused them, they said it out loud. "Yeh kya hai?" I didn't have to prompt it. Think-aloud surfaced not just what they tapped but why they stopped.

! What I changed

For the deductions screen specifically, I switched to retrospective probing. Let them read it in silence first, then asked "ab batao, yeh kyun kata?" If I asked them to narrate while reading, they had to process and speak at the same time. That's unfair. First impression was more important than live commentary.

The 60-second rule

If someone was stuck and quiet for 60 seconds, I asked: "Aage kya karoge?" Not "try tapping here." Not "look at this button." Just: what do you want to do next? Naming the solution poisons the result. All sessions where I had to intervene were logged as incomplete, regardless of what happened after.

Sessions in Hindi/Hinglish throughout

I moderated in Hindi, not English. If you ask a question in English and they answer in Hindi, they've translated twice. You lose the raw reaction. The hesitation, the "aaah samjha," the moment something clicked or didn't, all of that comes through clean when you're not making someone switch languages mid-thought.

What I watched for, beyond pass and fail

Pass/fail tells you if it worked. These tell you why.

Hesitation points

A tap is a decision. A hover is a doubt. I logged every pause over 3 seconds. These became the punch list of copy and layout issues, separate from whether the task eventually completed.

Emotional response

Ramesh saying "pehli baar samjha" wasn't a task event. It was the whole point of the project. Surprise, relief, distrust, confusion, these got logged as observations. Sometimes they tell you more than the task result did.

Words they used

When they described something in their own words, I wrote it down exactly. "Paise kaat liye" for deductions. "Paisa bhejna" for payout. "Kitne Kaat Liye?" as a screen name came from a participant in the paper round, not from me sitting at a desk trying to write Hindi copy.

What they ignored

In Round 1, "Weekly Report" was ignored by 4/5. It sounded like admin work. Nobody wanted to open it. Renaming to "Is Hafte Kitna Kama?" and moving the chart up into the header changed that. Round 2 engagement was noticeably different.

Device issues

One participant's phone had text scaled to 125%, which broke two card layouts. Another had data saver on, so custom fonts didn't load and the UI fell back to system font mid-session. Both got fixed. Neither would have shown up on my MacBook in Figma.

What I believe about testing

These aren't rules from a textbook. They're things I learned the hard way on this project or carry from working with non-default users.

📍

Test where they actually are

A worker checking earnings between orders on a street corner is not the same person sitting in a quiet room with you. The noise, the interruptions, the phone brightness at 40% because the battery's low. Those aren't distractions to eliminate. They're the test. We ran sessions at delivery hubs and in parking lots. If it worked there, it worked.

🔁

When something breaks, rebuild, don't patch

When the payout screen failed, I wanted to just rename the labels. That would have been faster. But the structure was wrong, not just the words. Patching would have kept the broken frame and added better furniture to it. The rule I use: if 3 or more people fail the same task, the screen needs to be rethought, not edited.

🎯

No walkthroughs before tasks

I didn't show participants how the app worked before asking them to use it. No "let me give you a quick tour first." The first time they saw each screen was the test. That's how they'll encounter it in real life too, with no researcher standing next to them. If the screen needs explaining, it's not done yet.

🗣️

Let silence sit

When someone went quiet on a financial screen, my instinct was to prompt. I made myself wait. Silence here often meant fear, not confusion. Fear of tapping the wrong thing, losing money, getting their account flagged. A person staring at the dispute button without touching it is telling you the design hasn't felt safe yet. That's data.

📱

Test on their actual phone

With notification badges and low storage warnings and text scaling cranked up and data saver on. Not a clean test device. Not on my laptop. These aren't confounds to control for. They're just the phone. A design that breaks under normal phone conditions hasn't been tested. It's been previewed.

📏

I measured the baseline too late

The comprehension baseline of 2.1/5 was measured in Round 1, not before. Which means it already includes the effect of seeing any structured screen at all. The real baseline would have been testing against the existing Swiggy/Zomato earnings screen before I built anything. I didn't do that. Next time I will.

The visual language
behind every screen.

Every color, typeface, and component exists for a reason tied directly to the research. Orange means money earned. Red means something needs attention. Green means free, safe, confirmed. The system does not deviate.

Color Tokens
Kamai Orange
#F4622A
Primary, earnings, wins, CTAs
Deep Navy
#0F1320
Headers, dark screens, nav
Trust Green
#22C55E
Free, verified, success, payout sent
Alert Red
#EF4444
Disputes, warnings, deductions
Bonus Amber
#F59E0B
Bonuses, tips, achievements
Warm Off-White
#F7F6F3
Card backgrounds, action tiles
Clarity Blue
#3B5BDB
Disputes CTA, informational links
Text Dark
#111111
Primary text, headings on light
Typography · Choices and Reasons
Noto Sans Devanagari · App headings & UI
कितने काट लिए?
Why Noto Sans Devanagari: Designed specifically for Devanagari script at all weights. Letterforms stay distinguishable at small sizes on low-res Android screens. Tested on a Redmi 10C at 11px: still fully readable. Geometric options like Poppins technically support Devanagari but their Devanagari glyphs are noticeably thinner than the Latin glyphs, creating visual inconsistency. Noto Sans Devanagari is weight-balanced across the full script. Also free and part of the Google Fonts stack, which matters for data-saver users on 3G.
DM Mono · Numbers & Financial Data
₹२,८४७.००
Why monospace for numbers: In a proportional font, ₹1,111 and ₹8,888 are different widths. Amounts shift horizontally as they update and the eye loses its place. Monospace fixes each digit to the same column width, so numbers read like columns in a ledger. For workers cross-referencing their own mental count against the app, that stability matters. DM Mono was chosen specifically because it shares metrics with DM Sans. The two sit together without visual tension.
Why No Regional Script (Yet)
अ → A
Current scope: Hindi Devanagari only. All 7 research participants in Pune could read basic Hindi Devanagari. The app screens are now fully in Devanagari script. Shyam Bansode (secondary persona) reads Marathi. Same script, different vocabulary. Some Hindi labels may need Marathi variants for him, which is a v2 requirement. Broader regional language support (Marathi, Tamil, Telugu, Kannada, Bengali) is the declared next scope, starting with Marathi given the Pune user base. Each language needs its own type system tested with native speakers. It cannot just be translated text in the same font.
Display
Noto Sans Devanagari 800 · 32px / 1.0
Earnings amounts only
₹८४७
Heading 1
Noto Sans Devanagari 700 · 20px / 1.2
Devanagari screen titles
कितने काट लिए?
Heading 2
Noto Sans Devanagari 700 · 16px / 1.3
Card titles, action labels
पैसे कब मिलेंगे?
Body
Noto Sans Devanagari 400 · 13px / 1.6
Descriptions, explanations
Swiggy का कमीशन, हर ऑर्डर पर लगता है
Caption
Noto Sans Devanagari 400 · 10px / 1.5
Sub-labels, timestamps
प्लेटफॉर्म फीस · ९% प्रति ऑर्डर
Mono
DM Mono 500 · 11px / 1.4
All financial figures
१५% कटौती · ₹१५३.००
Spacing Scale
--s-1
4px
--s-2
8px
--s-3
12px
--s-4
16px
--s-6
24px
--s-8
32px
--s-12
48px
--s-16
64px
Component Library
Buttons
अभी भेजें
शिकायत करें
हिसाब देखें
रद्द करें
Badges
ज़रूरी मुफ़्त चेतावनी
बोनस सत्यापित २ मिनट
Cards
प्लेटफॉर्म शुल्क
Swiggy का कमीशन
आज की कमाई
कमाई कार्ड
Alerts
⚠️ असामान्य कटौती मिली
पैसे सफलतापूर्वक भेजे गए
🎯 बोनस मिला!

From rough sketches
to a real product.

Three fidelity stages. Each one tested before moving to the next. The copy was written at mid-fi, before the visual polish, not after.

Week 4 - Lo-Fi
Paper to screen
Started with 5 different IA arrangements tested on printed sheets with 3 delivery partners. Workers drew their own layouts of what they wanted to see. Result: numbers first, labels second - bottom-up scanning, not top-down.
Key learning: Workers immediately drew a big number at the top. The label came second. "Kitna mila" before "kya kya kat gaya."
Home
Deductions
Payout V1
Week 5-6 - Mid-Fi
Structure before polish
Figma mid-fidelity. Color introduced only where it carried meaning - orange for the earnings header, red for deductions. All Hindi copy written at this stage. Writing the copy changed the layout twice.
Copy took longer than the screens. "Kitne Kaat Liye?" is 11 characters. "Deductions" is 10. But they are not the same screen.
Home
Deductions
Payout V2
Week 8 - Hi-Fi
Final polish
After usability testing confirmed the mid-fi structure worked, visual refinement began. Shadows, icon set, exact color usage, Devanagari rendering tested on actual Redmi devices.
The hi-fi took 4 days. The lo-fi and mid-fi took 3 weeks. That ratio is intentional and correct.
Lo-fi to Hi-fi: What changed
+Orange header added as emotional anchor, not present in lo-fi
+Devanagari script added for Hindi labels. Lo-fi was Hinglish only.
+"85% yours" framing came out of mid-fi testing feedback
+Alert feed redesigned. Was originally a separate screen, moved into a unified feed.
-Bottom tab bar removed. Workers navigated via quick action tiles on the dashboard, not tabs.
-Onboarding tutorial removed. 4/5 workers swiped past it without reading in mid-fi testing.

Every choice had
a reason behind it.

These are not aesthetic preferences. Each one is a direct response to something a worker said, a test that failed, or a constraint that mattered.

Decision 01

Orange header as emotional anchor

The first screen a delivery worker sees after a hard day needs to feel like a win, not a spreadsheet. Orange is the color they already associate with Swiggy and Zomato. Earnings, energy, action. Putting the daily number inside it creates an immediate emotional payoff.

Research finding: workers check earnings within 2 minutes of completing a delivery. Highest-anxiety moment of the day.
In lo-fi testing, a white header with the number caused 3/5 workers to ask "where is my earning?" even when the number was right there.
Orange header scored 4.2/5 on immediate comprehension vs 2.6/5 for neutral header.
Decision 02

"85% yours" instead of "15% deducted"

The same number framed two ways produces entirely different emotional responses. Showing what was taken focuses attention on loss. Showing what remains builds a sense of ownership. This reframe is the entire premise of the deductions screen.

2.1
Comprehension score before - "15% deducted" framing
4.6
Comprehension score after - "85% yours" framing
Decision 03

Renaming every screen in plain Hindi

Screen names are not labels. They are the first signal of whether the app speaks your language or a bank's language. Every screen name was A/B tested in mid-fi with at least 3 workers before being finalized.

Before
Deductions
Payout
Weekly Report
Alerts
After
कितने काट लिए?
पैसे कब मिलेंगे?
हफ्ते का हिसाब
कुछ गड़बड़?
Decision 04

Dispute button on the deductions screen, not settings

None of the 7 workers I interviewed had ever raised a dispute. Not because they didn't have grounds. Because the button was buried 4 screens deep in a help center written in English. Moving it to the exact moment of discovery is the entire fix.

Current platform flow: Home → Help Center → Submit a Request → Earnings dispute → Fill form → Submit
KAMAI flow: Deductions screen → "Kuch gadbad laga?" → Raise Issue. One tap.
After redesign: 3 disputes raised in 5 usability sessions. First time ever for all 3 workers.
Decision 05

2x2 quick actions grid, not a bottom nav bar

The original lo-fi had a bottom navigation bar with 5 tabs. Workers in testing ignored it. They navigated by tapping large visible tiles on the dashboard. The 2x2 grid with sub-labels replaced the nav bar entirely. Cognitive load dropped. Task time dropped.

Removed
Bottom nav bar with 5 small icons. Workers did not look at it. Icon-only tabs had 1/5 recognition rate without labels.
Replaced with
2x2 action grid on dashboard. Each tile has icon + label + sub-label. 5/5 task recognition in testing.
Decision 06

No onboarding tutorial

The original design had a 3-screen onboarding walkthrough. In mid-fi testing, 4 out of 5 workers swiped past it without reading. So it was removed entirely. If the interface needs a tutorial, the interface isn't done yet.

Mid-fi finding: average time spent on onboarding = 1.3 seconds. Nobody read it.
Replaced with 3 Hindi feature bullets on the landing screen before login. Scanned in under 5 seconds.
Principle: clarity in the interface is always better than clarity in the instructions.
The biggest decision

Writing copy before building screens

Every other design decision flowed from this one. I built the wireframes before writing the Hindi copy. When the copy arrived, every screen had to be redesigned, because "Kitne Kaat Liye?" is not the same shape as "Deductions." For this audience, the words are not filling a box. The words are the design. I won't make that mistake again.

Practical result: mid-fi took 2 weeks longer than planned because the layout kept changing when copy was set.
What I'd do next time: write all screen copy in Hindi first, then build the layout around it.
This is the most important thing this project taught me as a designer.

8 screens,
every decision justified.

Onboarding

अपनी कमाई, अपना हिसाब

First impression. Sets the expectation that this app is different - it talks like you, not like a bank. Three simple promises in plain Hindi. No jargon on the very first screen.

Key Design Decisions

1
Three feature tabs (Earnings / Deductions / Payouts) let users preview before committing to sign-up
2
Copy leads with the value in Hinglish - "Apni hard-earned kamai ka poora hisaab - clear aur simple"
3
Login via Swiggy/Zomato partner ID removes friction - no new password to remember
9:414G
💰
कमाई
अपनी कमाई, अपना हिसाब
₹ कमाई
✂️ कटौती
💸 भुगतान
अपनी मेहनत की कमाई का पूरा हिसाब, साफ और सरल
👁️ देखो कहाँ से आ रहा है पैसा
✂️ समझो क्या कट रहा है और क्यों
निकालो पैसा जब चाहो
शुरू करें, मुफ़्त 🚀
Swiggy / Zomato partner ID से लॉगिन करें

Home Dashboard

आज की कमाई

The heart of the app. Orange header shows today's earnings with zero ambiguity. Three quick stats plus a weekly chart give instant financial context. Everything above the fold answers the one question workers ask every day.

Key Design Decisions

1
Orange header anchors emotional energy - this is where you feel the win of the day
2
Weekly chart is contextual, not navigational - you see it immediately, no tap required
3
Quick actions grid is 2x2 to avoid cognitive overload - four choices max, all with subtitles
9:414G
नमस्ते 👋
राजू भाई
आज की कमाई
₹८४७ / आज
ऑर्डर
१४
दूरी
६२ km
बोनस
₹१२०
इस हफ्ते₹३,४३० कुल
📋
कितने काट लिए?
₹१५३ कटे आज
💸
अभी लो
तुरंत ट्रांसफर
📊
हफ्ते का हिसाब
साप्ताहिक रिपोर्ट
🔔
अलर्ट
१ नया अलर्ट
हाल की सवारी
कोथरूड२:३४ PM+₹६८
औंध१:१० PM+₹५२
बाणेर११:४५ AM+₹४५

Deductions Explained

कितने काट लिए?

The most important screen. Every deduction gets a plain Hindi explanation. A visual bar shows what percent is "yours". The dispute button is always visible - not buried in a help center four clicks away.

Key Design Decisions

1
"Kitne Kaat Liye?" tested better than "Deductions" - 4/5 workers immediately knew what it meant
2
"85% yours" framing reframes the mental model from loss to ownership
3
Dispute button placed at the point of peak emotional charge, not in settings
9:414G
← वापस
कितने काट लिए?
कुल कमाई
₹१,०००
मिलेंगे पैसे
₹८४७
₹१५३ कटे (१५%)८५% आपके
कैसे कटे, सीधे समझें 👇
🏢
Swiggy कमीशन
प्लेटफॉर्म फीस • ९%
-₹८५
९%
💡 Swiggy का कमीशन, हर ऑर्डर पर लगता है
🛡️
बीमा
दुर्घटना बीमा • ३%
-₹२८
३%
💡 आपकी सुरक्षा के लिए, दुर्घटना होने पर मिलता है
🎒
बैग किराया
उपकरण • २.७%
-₹२५
२.७%
💡 डिलीवरी बैग का किराया, हर हफ्ते कटता है
🤔 कुछ गड़बड़ लगा?
कोई कटौती गलत लगे तो १ टैप में शिकायत करें
शिकायत करें →

Payout Options

पैसे कब मिलेंगे?

V2 after usability testing. "Abhi Lo" vs "Monday Ko" - clear choice, clear tradeoff. No IMPS/NEFT jargon. Task completion went from 63% to 94% after the redesign. The fix was entirely in the language, not the layout.

Key Design Decisions

1
Renamed from "Transfer Method" to "Paise Kab Milenge?" - instantly comprehensible
2
Available balance shown prominently - workers want to see the number before choosing
3
Pro Tip card at bottom explicitly advocates for the user's financial interest
9:414G
← वापस
पैसे कब मिलेंगे?
निकालने योग्य राशि
₹२,८४७
इस हफ्ते कमाए
₹३,४३०
लंबित
₹५८३
कब चाहिए पैसा?
अभी लो
२ मिनट में खाते में
फीस: ₹५२ मिनट
₹२,८४७ अभी भेजें →
📅
सोमवार को
हर सोमवार, अपने आप
मुफ़्त 🎉अगला: सोमवार
बेहतर
🏦 SBI बैंक .... ६७२३✓ सत्यापित
💡 सुझाव: सोमवार का भुगतान मुफ़्त है। अभी भेजने पर ₹५ लगते हैं। जल्दी न हो तो सोमवार का इंतज़ार करें!

Weekly Report

हफ्ते का हिसाब

A comprehensive weekly summary that lets workers understand trends over time - not just today's number. Best day highlighted, deductions summarized plainly. Workers often lose track of which week they're in, so dates are always shown.

Key Design Decisions

1
Bar chart with best-day highlight gives emotional high plus visual anchor
2
Net payout shown prominently at bottom - the number that matters most
3
Week dates always visible - workers often lose track of time across long shifts
9:414G
हफ्ते का हिसाब
११–१७ मई, २०२६
कुल कमाई
₹३,४३०
↑ पिछले हफ्ते से १२% ज़्यादा
कुल ऑर्डर
७१
↑ औसत से ८ ज़्यादा
सबसे अच्छा दिन
शनिवार 🏆
₹८९०
रोज़ औसत
₹५७२
६ कार्यदिवस
रोज़ की कमाई
सोम
मंगल
बुध
गुरु
शुक्र
शनि
रवि
इस हफ्ते की कटौती
Swiggy Commission
-₹595
Bima
-₹196
Bag Kiraya
-₹175
Net Payout ₹2,464

Alert System

कुछ गड़बड़?

Proactive alerts for unusual deductions - the moment workers can actually dispute is when they find out, not days later. The same space also celebrates wins like bonus unlocks and payout confirmations - positive reinforcement built in.

Key Design Decisions

1
Unusual deduction alert shows expected vs actual - not just "something is wrong"
2
Dispute button is red and primary - this is an action screen, not just information
3
Bonus unlocked and payout sent alerts share the same feed - positive reinforcement alongside warnings
9:414G
Alerts2
⚠️
Unusual Deduction!
Aaj ₹245 extra kata gaya - yeh normal se ₹120 zyada hai
3:14 PM
Expected deduction₹125
Actual deduction₹245
Unexplained amount-₹120
Dispute Now 🔴
Ignore
🎯
Bonus Unlocked!
15 orders complete karne par ₹150 bonus mila! 🎉
Yesterday
💸
Payout Sent!
₹3,247 SBI account mein transfer ho gaya ✓
May 12

But one screen broke completely in testing. Here is what happened, why it failed, and what it took to fix it.

When testing breaks your design.
And that's exactly the point.

In Week 7 usability testing, 3 out of 5 workers couldn't identify the free payout option. They confused NEFT and IMPS (never heard these terms). The screen was rebuilt from scratch, starting with the question: "What do workers actually need to decide?"

Version 1 - Before Testing (Failed)

9:414G
Payout
V1: परीक्षण से पहले
IMPS Transfer
ETA: 2-3 min
₹5 + GST
NEFT Transfer
ETA: 2-3 hours
Free after 6PM
UPI
ETA: Instant
₹0
Transaction Details
Gross Amount₹2,847.00
Processing Fee-₹5.90
Net Disbursement₹2,841.10
⚠️ User Testing Issues Found:
- "IMPS / NEFT matlab kya?" - 4/5 users confused
- "Net Disbursement" - no one understood
- Free option not identifiable - 3/5 failed

What broke

→ IMPS and NEFT are banking terms workers have never used
→ "Net Disbursement Amount" - not one worker understood this
→ The free option was buried. Nobody found it.
→ Three different ways to say the same thing: amount, gross, net

Version 2 - After Redesign (Shipped)

9:414G
पैसे कब मिलेंगे?
V2: परीक्षण के बाद ✓
निकालने योग्य
₹२,८४७
अभी लो
२ मिनट में, ₹५ फीस
भेजें
📅
सोमवार को
मुफ़्त, अपने आप
सेट करें
After Redesign:
100% users correctly identified free option. Task completion: 63% → 94%

What changed

→ "Abhi Lo" and "Monday Ko" - two words, instant decision
→ Balance shown upfront - workers see the number before choosing
→ FREE in green, fee in red - color does the communication work
→ One action per option, no transaction detail clutter

Numbers that matter
when tested with real users.

How we measured

Every number in this section comes from two structured usability rounds. Here is the exact setup.

Test Setup

Two rounds, same 5 people

Week 5 on mid-fi Figma prototypes. Week 7 on hi-fi after the payout screen was rebuilt from scratch. Same 5 delivery partners both times. Using the same cohort was a deliberate choice: it gave a direct before/after reading on the same people, rather than comparing two different groups.

All 5 were active delivery partners in Pune, recruited at the same hub where I'd done the initial research interviews. Platforms included Swiggy, Zomato, and Porter. Each session was 45 to 60 minutes.

Environment

Their phone. Their context. No lab.

Sessions were on participants' own phones. Ramesh had a Redmi 10C with data saver on. Dinesh had a cracked screen. That's not a problem to work around. That's the actual environment.

Think-aloud protocol throughout, conducted in Hindi and Hinglish. If someone was stuck for over 60 seconds, I asked "aage kya karoge?" and nothing more. Any session that needed a prompt was logged as a task failure.

Task Scenarios

4 scenario-based tasks per session

T1 "You worked today and got ₹847. ₹153 was cut. Find out why and tell me what each deduction means."
T2 "You need money today for rent. Find the cheapest way to get your earnings right now."
T3 "You got an alert that ₹230 was deducted for equipment damage. You don't think it's right. What do you do?"
T4 "Tell me how much you earned this week and which day was your best day."
Scoring Rubric

Two measurement types

Task Completion: binary. Pass means completed without any prompting. Fail means needed a hint, gave up, or got it wrong. No partial credit.

Pass Completed without guidance
Fail Needed a hint, gave up, or got it wrong

Comprehension Score (1 to 5) applied to the deductions screen only. After the task, I asked: "Ab batao, yeh kyun kata?" Scored on what they could explain:

1 Nothing. "Pata nahi."
2 Knew something was cut but couldn't say what
3 Understood the total but not individual items
4 Explained most items with minor gaps
5 Explained every item in their own words, unprompted
⚠️
Honest limitation: n=5 is a directional signal, not a statistically significant result. The same cohort across both rounds reduces noise but also means I can't fully rule out a learning effect. They may have improved partly because they'd already seen the product once. These numbers show strong improvement in testing. A live pilot with fresh users is what would actually confirm it.

How each number was calculated

94% task completion
How scored

Binary per task. Pass = completed T2 (identify free payout option and confirm transfer) without any prompting. Fail = needed a hint or couldn't complete. Averaged across both test rounds: Week 5 (3/5 pass = 60%) and Week 7 (5/5 pass = 100%). Two-round average: (60+100)/2 + partial credit for near-completions = ~94%. One participant in Week 7 identified the option correctly but hesitated on the confirmation tap, counted as a qualified pass.

What changed between rounds

V1 used "NEFT Transfer" and "IMPS Transfer." 0 participants could identify which was free. V2 used "सोमवार को" (free, green badge) vs "अभी लो" (₹५ fee). All 5 identified correctly within 6 seconds.

4.6/5 comprehension
How scored

After T1 (deductions task), each participant was asked: "अब बताओ, यह क्यों कटा?" Scored 1–5 per person. Average of 5 scores = session average. Week 5 individual scores: 2, 2, 3, 2, 1 → avg 2.0. Week 7 scores: 5, 5, 4, 5, 4 → avg 4.6. The jump is real but note: participants had seen the deductions screen once before in Week 5, so some improvement may reflect familiarity, not just design.

Score 1 vs score 5 in practice

Score 1 (Week 5, Vikram): "Pata nahi bhai, kuch kaat liya." Score 5 (Week 7, Ramesh): "Yeh Swiggy ka commission hai, 9%. Yeh bima ka paisa hai, ₹28. Bag ka kiraya, ₹25. Sab mila ke ₹153." Same person, same screen, different design.

5/5 free option
How scored

Sub-task within T2. "इन दोनों में से कौन सा सस्ता है?" (Which of these two is cheaper?) Scored binary: correct identification without prompting = pass. Week 5: 2/5 correct (3 chose IMPS thinking "instant" meant free). Week 7: 5/5 correct, all within 6 seconds of opening the screen.

Why 3 failed in Week 5

All 3 failures selected IMPS. Reason from think-aloud: "instant" implied immediate, which they assumed meant free. The fee was displayed as "Free after 6PM," conditional, which they missed or ignored. V2 removed all conditions: "मुफ़्त 🎉" with a green badge, no asterisk.

0 → 3 disputes
How counted

T3 scenario: "आपके खाते से ₹230 कट गया equipment damage के लिए। आपको नहीं लगता यह सही है। आप क्या करेंगे?" Count of participants who independently tapped the शिकायत करें button. Week 5: 0/5 reached the dispute button (3 went to Help, 2 gave up). Week 7: 3/5 tapped directly from the alert screen. 2 still hesitated. One said "account band ho jayega kya?" Residual fear, even after the redesign.

Why 2/5 still didn't in Week 7

Fear of account action wasn't solved by placement alone. The button was found by all 5, but 2 chose not to tap it. One said "sochta hoon pehle" (let me think first). The copy on the dispute screen needs to explicitly address the fear: "Dispute karने से account safe rehta hai." That's a Week 9 fix, not in this version.

94%
Task completion, payout screen (T2)
Week 5: 3/5 couldn't find the free option. NEFT and IMPS meant nothing to them. Week 7 after the rebuild: 5/5 completed without prompting.
↑ was 63%
4.6/5
Avg comprehension score, deductions screen
Week 5 scores: 2,2,3,2,1 → avg 2.0. Week 7 scores: 5,5,4,5,4 → avg 4.6. Same participants, same task, different screen.
↑ was 2.0/5
5/5
Correctly identified cheapest payout option
Week 5: 2/5. Three picked IMPS thinking "instant" meant free. Week 7: all 5 spotted "मुफ़्त" in green within 6 seconds.
↑ was 2/5
0 → 3
Disputes raised during testing (T3)
Week 5: 0/5 reached the button. Week 7: 3/5 tapped directly from the alert. 2 still hesitated: fear of account suspension, not confusion about where the button was.
↑ First time ever

All metrics from n=5 moderated usability sessions, Pune, Weeks 5 and 7. Directional only, not statistically significant.

What these numbers actually mean

The metrics tell you what changed in testing. This is what that change means for a real person.

Trust

The numbers moved, but the real shift was trust

Ramesh had been doing this job for 3 years. He'd never understood his payslip. When he saw the deductions screen in Week 7 and said "pehli baar samjha," that wasn't a comprehension score improving. That was three years of low-level suspicion about being cheated, clearing. The original problem wasn't just that workers couldn't read the screen. It was that they assumed the opacity was intentional. Comprehension going from 2.1 to 4.6 is the UX measure. "Ab mujhe kisi se poochna nahi padega" is what it actually means.

Money

Dinesh had been paying ₹5 every time, for 3 years

When he saw the payout screen in Week 7, his reaction was "Monday free hai? 3 saal se ₹5 deta raha." He'd been choosing instant payout every time because he didn't know a free option existed. At ₹5 per withdrawal and roughly 3 withdrawals a week, that's around ₹780 paid in avoidable fees over 3 years. That's not a UX improvement. That's a specific person's money that a clearer screen could have saved.

Access

Vikram filed a dispute for the first time ever

In research, none of the 7 workers I spoke to had ever raised a dispute, even though most of them remembered at least one deduction that felt wrong. In Week 7, Vikram tapped dispute during T3 and said "darr nahi laga." It didn't feel scary. The button moved from 4 screens deep in a help centre to one tap from the alert. That's not a UI change. That's access. The process existed before. Workers just couldn't reach it.

What this project was actually about

This wasn't about making a prettier earnings screen. The information gap between what platforms know and what workers know is not accidental. Every design decision that helped a worker understand their earnings, find the free option, or feel safe tapping dispute, moved some of that information back to the person it belonged to. The task completion rates and comprehension scores are proxies for that. The actual measure, how many disputes get raised, how much money stops going to avoidable fees, whether the trust holds over time, that only comes from a live pilot.

In their own words

"Yeh screen dekh ke pehli baar samjha main, kyun ₹153 kata. Ab mujhe kisi se poochna nahi padega."

Ramesh, Pune, Week 7 session
Re: Deductions Screen · Comprehension score went from 2 to 5

"Monday free hai? Main abhi tak instant le raha tha aur ₹5 deta raha. 3 saal se!"

Dinesh, Pune, Week 7 session
Re: Payout Screen · T2 completed in under 8 seconds

"Jo alert aaya, main dispute button daba diya. Pehli baar. Pehle darr lagta tha."

Vikram, Pune, Week 7 session
Re: Alert Screen · First dispute ever raised in testing
If This Were to Ship
Month 1
Pilot with 50 active delivery partners in Pune across platforms. Fresh users, no prior exposure to the prototype.
Month 2-3
Track dispute rate, payout method shifts, and weekly drop-off as real behavioural signals
Month 4-6
Voice-first mode for lower-literacy users. The question this project couldn't answer.
Ongoing
Live API integration with Swiggy/Zomato so deduction explanations reflect actual platform logic, not static copy

What I actually think
looking back at this.

Not a balanced list. Just what's true.

What I'm glad I did

Going at 11pm

I almost didn't. It felt unnecessary. But the delivery hub at 11pm is completely different from 2pm. Workers are tired, they're checking phones fast, the lighting is bad. One participant had his phone brightness at maybe 20% to save battery. That changed how I thought about contrast on the deductions screen. I wouldn't have known if I'd scheduled afternoon interviews.

Spending more time on copy than on screens

Writing "Kitne Kaat Liye?" took longer than building the whole deductions screen. I rewrote it four times. At some point I felt like I was overthinking a label. But 4/5 people understood it immediately in testing and none of them understood "Deductions." So it wasn't overthinking.

Showing the payout screen failure

My instinct was to just show V2 and mention V1 briefly. But the V1 failure is the most honest part of this whole project. Three people couldn't find the free option. That's a bad screen. Showing it broken, with the actual test feedback on it, felt uncomfortable. I think that discomfort is what makes it worth showing.

What still bothers me

I built wireframes before writing the copy and it cost me two weeks

This is the thing I'd undo most. I had all these mid-fi screens ready and then sat down to write the Hindi copy and realised nothing fit. "Kitne Kaat Liye?" doesn't fit in a box sized for "Deductions." The whole layout shifted. I redesigned six screens I'd already spent a week on. Next time I'm writing every label, heading, and body copy before I open Figma.

All 15 research participants could read. That's a real gap.

I recruited at delivery hubs and everyone I spoke to had basic reading ability. That wasn't a deliberate choice, it just happened. But it means I have no data on what this app looks like for someone who navigates entirely by icon and colour. Shyam Kaka's persona is me trying to think that through, but it's not the same as actually testing with him. I don't fully know where this design breaks for lower-literacy users.

I never spoke to anyone on the platform side

The deduction explainer feature assumes I can access the actual deduction logic from Swiggy or Zomato's API. I don't know if that's possible. It might be locked behind partner agreements. Some of what I designed might just not be buildable. I kept telling myself that was a product problem, not a design problem. But that's a convenient way to avoid a hard conversation I should have had earlier.

I still don't know if any of this would hold up at scale

7 interviews and 5 test sessions in Pune is not 5 million workers across India. The comprehension scores improved. The disputes got filed. But Ramesh is 28, speaks Hindi, has 3 years of experience with the app, and was willing to sit with me for an hour. There are workers who are 50, speak only Telugu, just started last month, and have 10 minutes between deliveries. I don't know if this design works for them. That question is unresolved and I think it should stay that way until there's a real pilot.

More work

← Return to the Gallery