FinTech

SaaS

Landed

Know what’s actually safe to spend. A case study — solo product design + AI-assisted build, from problem to tested prototype.

Auth, onboarding, Home, Money, Reports, Payments, Settings — fully click-through with realistic mock data. Best viewed on mobile width, even in a desktop browser.

Overview & Role

What

A mobile-first fintech app for people whose income isn’t a fixed monthly paycheck

Tools

Claude (brainstorming, research synthesis), Figma Make → Claude Design (UI), Claude Code + Supabase (planned backend), Claude in Chrome (automated QA)

Role

Solo — product thinking, UX/UI design, design system architecture, AI-feature design, prompt-engineering the build, and QA

Status

Phase 1 complete — fully designed, interaction-tested prototype. Backend intentionally deferred to Phase 2.

Constraints

Solo project — no team or dedicated QA. One round of real survey data. Deliberately no bank-linking by design. Backend deferred to optimize for validating product and interaction design.

The Core Problem

Mainstream finance apps assume income is fixed and monthly, so they only need to track spending. For freelancers, gig workers, business owners, and anyone with variable income, that assumption breaks — obligations are fixed and dated, but income is not.

The result: a recurring, specific anxiety — “I have money in my account right now, but is it actually mine to spend?”

Core insight and app tagline: Money you\’re owed is not money you have.

Target Audience

Not freelancer-only — anyone whose inflows are irregular while outflows are fixed: freelancers, gig workers, commission-based sales roles, small business owners, seasonal workers, and salaried employees with meaningful side income.

Primary test persona: Meera, 29, freelance designer — irregular client payments, fixed EMI/rent/SIP, anxious about whether money in her account is genuinely spendable. Testing rounds added personas across the spectrum (salaried + side income, small business owner) to pressure-test the app outside its most obvious use case.

Key Research Insights

Competitive analysis (PocketGuard, SenticMoney, YNAB, Lucky Friday, Monarch Money) found real market whitespace: no competitor combines received-only income counting + savings-as-a-claim with withdrawal friction + dateless optional spend logging + deliberate minimalism.

A 9-response validation survey delivered one strong confirmation and one real correction:

✓ Confirmed

The core mechanic — “money only counts once landed” — got unprompted, unanimous agreement. Strongest signal in the dataset.

⚠ Changed Design

Mandatory friction on savings withdrawals tested poorly. This changed the design: withdrawal confirmation became a Settings toggle, default ON, rather than a fixed rule.

Brainstorming & Ideation

The product went through substantial reasoning before a single screen was designed:

The formula evolved twice — from a “stated bank balance minus obligations” model, to a waterfall model (income received → expenses → savings → everyday spending → remainder = Safe to spend) — removing the need for manual balance entry entirely.

Savings were deliberately modeled as a claim on money, not a category — reducing spendable balance automatically, requiring deliberate action to reverse.

Explicit non-goals locked in early: bank-linking, tax estimation, ML-based prediction, multi-currency — all named and rejected on purpose, to protect the

Design Decisions & Pivots

Three-tier design system (primitives → semantic tokens → components), built deliberately portable across Figma and Claude Design. Warm neutral base with a single amber accent, reserved only for the one number that matters.

Real pivots, driven by evidence — not aesthetics:

Pill buttons → 8px radius matching inputs

Deliberate trade against the “textbook Material” look, for visual consistency.

Centered modals → bottom sheets, system-wide

For thumb reachability on mobile-first experience.

Balance-anchored → income-waterfall calculation

Manual balance updates created an unresolvable trust conflict. Mid-project tool pivot: Figma Make → Claude Design, requiring re-packaging the entire design system as a portable spec.

Savings withdrawal: mandatory → optional toggle

Directly from survey data — majority said “annoying” or “depends,” zero said “helpful.”

User Flows & Prototype

Splash → Welcome (Create account / Log in) → Email + OTP (no password) → Minimal onboarding (two optional fields only) → Home, with Money, Reports, and Payments reachable from bottom navigation. Every destructive or confirming action routes through the same bottom-sheet pattern, never a blocking modal.

Fully click-through prototype covering: Auth, Onboarding, Home (live Safe-to-spend, spend logging, recent activity), Money, Reports (AI-generated summary), Payments (due-date checklist), Settings, and an in-app Notifications system — all wired to realistic mock data.

Micro-interactions & Key Features

Live-updating Safe to Spend

Recalculates instantly on any income, spend, or withdrawal event.

Buffer-Dip Warning

A bottom sheet that intercepts a spend before it crosses a self-set safety cushion — not a blocking rule.

Status Progression Badges

Quoted → Invoiced → Confirmed → Received — gating exactly when money becomes “safe.”

Undo Toast + Editable Everything

Undo toast on every logged spend. Every entry supports edit/delete with correct recalculation everywhere it appears.

AI Guardrails & Security

AI never calculates — the one AI feature shipped (a plain-language monthly report summary) only narrates numbers the app has already computed deterministically. It cannot invent or estimate a figure.

No advice, ever — descriptive language only, never “you should,” for both tone and liability reasons. Fails silently, not loudly — if the AI call fails, the numeric report still renders with no broken text.

Auth: email + OTP only, no password. Input hardening: every amount field capped (₹1–₹1,00,00,000), every text field length-limited, pure-numeric “notes” rejected to prevent silent data-entry errors.

Testing & Validation

Seven full rounds of structured, persona-driven AI QA — each with a distinct persona (freelancer, business owner, salaried+side-income), progressively more adversarial: boundary values, rapid-tap race conditions, narrow-viewport stress tests, and full data-volume tests (15–20 recurring items).

Round 1 found a critical trust-breaking bug — Home and Reports disagreed on the one number the whole app exists to protect. Rounds 2–6 systematically closed every functional bug. Round 7 confirmed zero outstanding bugs, including full regression coverage after a system-wide visual refresh.

What held up through all seven rounds without ever failing: the core Safe-to-spend calculation, exact boundary enforcement, and zero data loss under rapid/adversarial interaction.

What\’s Next

Immediate next phase: connect Supabase via Claude Code — real accounts, real persistence, replacing the current mock-data prototype. Then, three AI features, scoped and sequenced by risk and effort:

1

Natural-language quick-add

“Spent 500 on pizza” parsed into structured data.

2

Receipt/bill photo scan

Same pattern as quick-add, image input instead of text.

3

Ask-your-data chat

Conversational queries, strictly grounded in the user’s real logged data. Held for last — highest risk of the AI inventing a plausible-but-wrong number in a finance app.

Key Takeaways

A single piece of real survey data (the withdrawal-friction pushback) changed the design faster and more convincingly than any amount of internal reasoning could have.

AI-persona QA, run adversarially and repeatedly, surfaced the same class of bugs a human QA pass would — and did it in hours, across seven full rounds.

The biggest risk to a “one trustworthy number” product isn’t a missing feature — it’s two screens quietly disagreeing with each other. That bug, found in round one, shaped how seriously every subsequent round treated cross-screen consistency.

Try the Prototype

Auth, onboarding, Home, Money, Reports, Payments, Settings — fully interactive with realistic mock data.

© 2026 by Jairam Swami. All Rights Reserved

© 2026 by Jairam Swami. All Rights Reserved

© 2026 by Jairam Swami. All Rights Reserved