Back to home

Designing a financial operating system for freelancers who hate managing money

Designing a financial operating system for freelancers who hate managing money

Project Name

Lunafi Web App

Year

2023

Industry

Finance

Role

Product Designer

Project Overview

Lunafi is a San Francisco-based fintech platform that helps freelancers, independent contractors, and gig workers manage their business finances — expense tracking, tax estimation, income reporting, and invoice management in one place. I designed the complete web application as the product designer, responsible for the full UI system across

all core features.

THE PROBLEM

Freelancers don't think of themselves as business owners — but they have to act like one. Every transaction needs to be tracked, categorized, and accounted for at tax time. Most don't have accountants. Most don't use bookkeeping software. Most rely on spreadsheets or ignore the problem entirely until April.


Lunafi needed to make financial management feel approachable — not like accounting software, but like a clear, calm overview of your business health that you could check in

five minutes.

USERS

Freelance professionals

Designers, copywriters, consultants, videographers. Digitally fluent but not financially trained. They understand their craft, not tax categories or expense classification rules.

Gig workers

Gig workers

Uber drivers, DoorDash couriers, Instacart shoppers. Income comes from multiple platforms simultaneously, making it nearly impossible to track manually.

Content creators and online sellers

Income from YouTube, Etsy, Shopify. Multiple revenue streams, irregular payment schedules, platform-specific income patterns.

Key Insights

Freelancers are anxious about taxes, not transactions

The emotional problem isn't "I can't track my expenses." It's "I don't know how much I owe and I'm scared to find out." The dashboard needed to answer the tax question immediately and visibly — not bury it in a reports section.

Classification is the core daily friction

Every unclassified transaction is a future problem at tax time. But classifying transactions one by one is tedious. The design challenge was making classification fast, learnable, and eventually automatic — not a chore users avoid.

Bulk operations are non-negotiable for power users

Freelancers who connect their bank accounts can have hundreds of transactions per month. Row-by-row classification doesn't scale. Bulk selection and batch categorization was essential for the product to be genuinely useful.

Empty states are high-stakes moments

A new user who links their bank account and sees a loading screen with no feedback will leave. A user who sees a confusing error will not come back. Every empty and loading state needed to be designed with the same care as the full data states.

Financial data needs progressive disclosure

Showing everything at once — all transactions, all categories, all time periods — is overwhelming. The design needed to surface the most actionable data first and let users drill deeper when they chose to.

DASHBOARD

Dashboard hierarchy tax first, then progress, then transactions. The dashboard opens with Annual Profit and Tax Liability as the dominant elements. This was a deliberate information hierarchy decision: the most anxiety-inducing question — "what do I owe?" — is answered immediately and prominently. Income Goal progress and Profit Progress charts follow, giving users a sense of momentum. Recent Transactions sits below, as a supporting detail rather than the lead.

DASHBOARD

Dashboard hierarchy tax first, then progress, then transactions. The dashboard opens with Annual Profit and Tax Liability as the dominant elements. This was a deliberate information hierarchy decision: the most anxiety-inducing question — "what do I owe?" — is answered immediately and prominently. Income Goal progress and Profit Progress charts follow, giving users a sense of momentum. Recent Transactions sits below, as a supporting detail rather than the lead.

DASHBOARD

Dashboard hierarchy tax first, then progress, then transactions. The dashboard opens with Annual Profit and Tax Liability as the dominant elements. This was a deliberate information hierarchy decision: the most anxiety-inducing question — "what do I owe?" — is answered immediately and prominently. Income Goal progress and Profit Progress charts follow, giving users a sense of momentum. Recent Transactions sits below, as a supporting detail rather than the lead.

Transactions

The transaction table is the core daily-use surface of the product. Each row shows merchant name, amount, date, account source, and classification status — giving users a full picture of their financial activity at a glance. Unclassified transactions are visually flagged, creating a clear action queue without requiring users to manually identify what needs attention.

Transactions

The transaction table is the core daily-use surface of the product. Each row shows merchant name, amount, date, account source, and classification status — giving users a full picture of their financial activity at a glance. Unclassified transactions are visually flagged, creating a clear action queue without requiring users to manually identify what needs attention.

Transactions

The transaction table is the core daily-use surface of the product. Each row shows merchant name, amount, date, account source, and classification status — giving users a full picture of their financial activity at a glance. Unclassified transactions are visually flagged, creating a clear action queue without requiring users to manually identify what needs attention.

Classification & Bulk Classification

Classifying a transaction opens a dedicated modal rather than an inline dropdown. Classification requires multiple simultaneous decisions expense type, tax category, and business vs. personal split. A modal gives each decision enough space without cluttering the table view.

For users with large transaction volumes, bulk classification allows selecting multiple rows and applying the same category across all of them in a single action. When transactions are selected, a persistent action bar appears at the bottom showing the selection count with categorize, mark as personal, and exclude options visible only when needed, keeping the default table view clean.

Classification & Bulk Classification

Classifying a transaction opens a dedicated modal rather than an inline dropdown. Classification requires multiple simultaneous decisions expense type, tax category, and business vs. personal split. A modal gives each decision enough space without cluttering the table view.

For users with large transaction volumes, bulk classification allows selecting multiple rows and applying the same category across all of them in a single action. When transactions are selected, a persistent action bar appears at the bottom showing the selection count with categorize, mark as personal, and exclude options visible only when needed, keeping the default table view clean.

Classification & Bulk Classification

Classifying a transaction opens a dedicated modal rather than an inline dropdown. Classification requires multiple simultaneous decisions expense type, tax category, and business vs. personal split. A modal gives each decision enough space without cluttering the table view.

For users with large transaction volumes, bulk classification allows selecting multiple rows and applying the same category across all of them in a single action. When transactions are selected, a persistent action bar appears at the bottom showing the selection count with categorize, mark as personal, and exclude options visible only when needed, keeping the default table view clean.

Filters

Filters open as a side drawer from the right rather than expanding inline above the table. This preserves the full table width during filtering so users can see results update in real time without losing column context.

Filters

Filters open as a side drawer from the right rather than expanding inline above the table. This preserves the full table width during filtering so users can see results update in real time without losing column context.

Filters

Filters open as a side drawer from the right rather than expanding inline above the table. This preserves the full table width during filtering so users can see results update in real time without losing column context.

Finances

The Finances page breaks down the user's money into three distinct tabs Business Earnings, Business Spending, and Personal Spendings each with its own total displayed prominently in the header navigation. This separation was a deliberate structural decision: mixing business and personal flows in a single view would obscure the data that actually matters for tax purposes. By making the separation explicit at the navigation level, the design reinforces a mental model that freelancers need to build business and personal finances are not the same pool of money.

Each tab surfaces two complementary views: a categorized list on the left showing where money came from or went, and a visual breakdown on the right a bar chart for earnings by client, a donut chart for spending by category. The list answers "what," the chart answers "how much relative to everything else." Together they give users both the detail and the pattern without requiring separate screens.

Finances

The Finances page breaks down the user's money into three distinct tabs Business Earnings, Business Spending, and Personal Spendings each with its own total displayed prominently in the header navigation. This separation was a deliberate structural decision: mixing business and personal flows in a single view would obscure the data that actually matters for tax purposes. By making the separation explicit at the navigation level, the design reinforces a mental model that freelancers need to build business and personal finances are not the same pool of money.

Each tab surfaces two complementary views: a categorized list on the left showing where money came from or went, and a visual breakdown on the right a bar chart for earnings by client, a donut chart for spending by category. The list answers "what," the chart answers "how much relative to everything else." Together they give users both the detail and the pattern without requiring separate screens.

Finances

The Finances page breaks down the user's money into three distinct tabs Business Earnings, Business Spending, and Personal Spendings each with its own total displayed prominently in the header navigation. This separation was a deliberate structural decision: mixing business and personal flows in a single view would obscure the data that actually matters for tax purposes. By making the separation explicit at the navigation level, the design reinforces a mental model that freelancers need to build business and personal finances are not the same pool of money.

Each tab surfaces two complementary views: a categorized list on the left showing where money came from or went, and a visual breakdown on the right a bar chart for earnings by client, a donut chart for spending by category. The list answers "what," the chart answers "how much relative to everything else." Together they give users both the detail and the pattern without requiring separate screens.

Reports

The Reports page serves users who need to take their financial data outside of Lunafi for accountants, tax preparers, or personal record-keeping. It offers two report types: Profit & Loss, which summarizes total income versus expenses over a chosen time period, and Expense Details, which breaks down spending by category with optional filtering by business or personal type.

Both report types follow the same configuration pattern: select a time frame using preset tags (monthly, quarterly, yearly) or a custom date range via calendar picker, choose output format (PDF or CSV), and generate or send the report directly to an email address. The email field defaults to the user's own address, reducing friction for the most common use case sending to yourself or your accountant.

Category filtering in Expense Details allows users to scope the report to specific spending categories rather than exporting everything at once. This was important for users whose accountants only need certain expense types, not the full transaction history.

Reports

The Reports page serves users who need to take their financial data outside of Lunafi for accountants, tax preparers, or personal record-keeping. It offers two report types: Profit & Loss, which summarizes total income versus expenses over a chosen time period, and Expense Details, which breaks down spending by category with optional filtering by business or personal type.

Both report types follow the same configuration pattern: select a time frame using preset tags (monthly, quarterly, yearly) or a custom date range via calendar picker, choose output format (PDF or CSV), and generate or send the report directly to an email address. The email field defaults to the user's own address, reducing friction for the most common use case sending to yourself or your accountant.

Category filtering in Expense Details allows users to scope the report to specific spending categories rather than exporting everything at once. This was important for users whose accountants only need certain expense types, not the full transaction history.

Reports

The Reports page serves users who need to take their financial data outside of Lunafi for accountants, tax preparers, or personal record-keeping. It offers two report types: Profit & Loss, which summarizes total income versus expenses over a chosen time period, and Expense Details, which breaks down spending by category with optional filtering by business or personal type.

Both report types follow the same configuration pattern: select a time frame using preset tags (monthly, quarterly, yearly) or a custom date range via calendar picker, choose output format (PDF or CSV), and generate or send the report directly to an email address. The email field defaults to the user's own address, reducing friction for the most common use case sending to yourself or your accountant.

Category filtering in Expense Details allows users to scope the report to specific spending categories rather than exporting everything at once. This was important for users whose accountants only need certain expense types, not the full transaction history.

Outcomes

The Lunafi web application is live and serving thousands of freelancers across the US. The transaction classification system — including bulk operations, filtering, and the classification modal — became the core daily-use feature of the product. The design system built for this project supports ongoing feature development across web and mobile surfaces.


Real users described the outcome directly: "Lunafi has made it as easy as clicking a button or creating a rule so the app will automatically classify certain expenses," and "I can see a real-time breakdown of my profits and estimated taxes so I feel more confident knowing where I stand financially."