All work

Doow

A SaaS spend intelligence platform that shows finance teams where every software dollar is actually going.

I designed it end to end, from the first login screen through to the governance console for two AI finance agents. This is the long version.

Role
Product Designer, design lead
Scope
End to end, web app plus marketing surfaces
Team
Founders, engineering, me on design
Where
doow.co

Overview

Doow is a SaaS spend intelligence platform for finance teams, and I was the only designer on it for eight months. This is the long version: 20 chapters covering how a company gets its data in, where the same capability turns out to have been bought three times over, how software contracts get modelled when every vendor bills differently, and how two AI finance agents were given real reach over that data without anybody losing track of what they did.

Reading timeAbout 30 minutes end to end

What success looks like, and why I cannot show it yet

The product shipped recently and the work of getting it in front of people is still ahead of it, so there are no outcome numbers, and I would rather leave the space empty than dress up file statistics as impact. What I can set out is the sequence success has to run in, and how each step would be checked. Every one is an outcome for the finance team rather than a milestone for the product.

  • 01

    They see their real number on day one. Connect an identity provider and a bank, and the spend arrives already mapped to named applications instead of waiting on a spreadsheet. Anything slower than the first sitting and none of the steps below ever start, which is why onboarding got more of my time than any other flow.

  • 02

    Every dollar has a contract and an owner behind it. Within about a month, the share of annual software spend traced to a named plan, a renewal date and a department. That share is the difference between a total a finance lead can defend in a board meeting and one they assembled by hand and quietly do not trust.

  • 03

    The product names the leak, rather than leaving it to be noticed. Seats nobody signs into, the same capability bought three times over by three teams, credits burning ahead of the month. What counts is how many findings survive contact with the person who owns the tool. Raising more of them is easy and makes things worse, because a product that cries wolf gets muted in a fortnight.

  • 04

    Renewals arrive early enough to be a negotiation. Procurement's leverage exists in the weeks before a renewal date and nowhere after it. Success is that the date reaches somebody with time to act on it, instead of turning up as a charge that has already cleared.

  • 05

    The finance officer wins the argument in the room. They rarely own the decision, so the finding has to travel: in front of an executive, a department head, or the manager who chose the tool and still likes it, holding up as a figure with an owner attached, a replacement priced at what moving would really cost, and one specific thing they are asking somebody to give up.

  • 06

    Money actually leaves the run rate. Cancelled, downgraded, renegotiated, or four overlapping tools consolidated into one. The product is already watching the charge, so the charge shrinking is the single outcome it can verify without asking anyone, and it is the only line here a CFO would accept as evidence.

How I go about measuring success
  • 01

    One analytics tool, self-hosted. PostHog for events, session replay and in-product surveys in the same place, keyed to the account rather than the person, since whoever signs up and whoever owns the budget are rarely the same one.

  • 02

    An agent on the warehouse, read only. A question costs a sentence now instead of a dashboard brief and a week, and transcripts, tickets and survey answers cluster in an afternoon rather than being tagged by hand.

  • 03

    Steps five and six get asked about, not inferred. No event can watch a meeting, so those come from a standing call with the first accounts and an in-product NPS prompt a month in. The score itself is the least interesting part: what I want is the sentence after it and who wrote it, because a finance lead who has won an argument using this rates it for a different reason than somebody who just likes the tables. At this number of accounts that is a prompt for a conversation rather than a statistic, and anything a model hands me without an event or a quote behind it is labelled a guess.

01The problem

Where this starts: Nobody actually knows what their software costs

Not because finance teams are careless. Because the information lives in about nine different places and none of them talk to each other.

Every finance lead at a 500 person company has an annual software number. Most of them hold it loosely, because the figures behind it sit in systems that were never built to reconcile.

That is not carelessness. The contract sits in a PDF in someone's inbox. The charge lands on a card under a merchant name that looks nothing like the product. The seat count lives in an admin panel only one person in Engineering can open. The usage data, if it exists, is in a dashboard nobody checks between renewals.

So you get the classic pattern. A tool is bought for a six person pilot, the pilot ends, the contract auto renews at 60 seats for three years, and nobody notices until someone exports the card statement into a spreadsheet and starts squinting.

Doow exists to make that invisible spend visible. It maps contracts, corporate cards and bank transactions automatically, then layers on seats, usage, prepaid credits and token burn, so you see not just what you pay but what you get.

The category is crowded, so it is worth saying where this sits. Zluri and Torii come at it from IT, and they are good at discovery and licence hygiene: what is installed, who has access, what to switch off when somebody leaves. Ramp comes from the opposite end, out of corporate cards, so it is strong on money that has already moved. Cledara works that same payments side, issuing a virtual card per subscription so every charge is tied to a named tool, with renewal dates tracked next to it.

Doow sits in the space between. Discovery covers what is installed and card data covers what has already been charged, and between them they still leave out the agreement itself: the rate, the terms, the date it ends. The contract is the third thing, and it decides whether a renewal is a negotiation or a surprise.

02Checking it was real

Making sure this was somebody's problem and not just our idea

Two things before any design work: read every competitor properly, and talk to the people who would have to live with the result.

The category already had companies in it, which is either a warning or a map depending on how you read it. So I went through them properly. Zluri, Torii, Ramp and Cledara, plus the smaller tools that surface when a finance team starts searching for this. Marketing sites, pricing pages, product tours, help centres and every demo recording I could find.

The help centre is the useful one. Documentation is written against what actually shipped, so it exposes what a data model can and cannot express, and which edge cases generate enough support tickets to have earned their own page.

Desk research maps the category and says nothing about whether anybody is in pain, so we spoke to the three groups who touch this from different sides: finance, procurement, and the department managers who ask for the software in the first place.

I went in trying to find out how they cope today rather than whether they liked our idea. The workarounds people have already built are the evidence worth collecting, because they cost somebody real effort and would exist whether or not we ever shipped anything.

What each of them was actually worried about
  • 01

    Finance wanted one annual software number they could defend in a board meeting, and did not have it. Every version of that total had been assembled by hand in a spreadsheet, and nobody wanted to be the person who stood behind it.

  • 02

    Procurement wanted lead time above almost anything else. Their leverage on a contract exists in the weeks before a renewal, not after, and too often they were finding out about one once it had already rolled.

  • 03

    Managers wanted to know who on their team was genuinely using a tool, and were clear that they did not want to become the person who polices licences in order to find out.

That is three different jobs sitting on one dataset, and it is the single most useful thing the research gave me. It is why the product is not one spend dashboard with three tabs bolted onto it, and when a screen later in this case study looks like it is carefully trying to serve two audiences at once, that is usually what is going on.

It also settled an argument we could otherwise have had for months. Visibility was never the binding constraint. Everyone we spoke to could already produce a spend figure. What none of them could do was stand behind it, or reach it while there was still time to act on what it said. That is a product about trust and timing rather than one about display, and we stopped debating which we were building.

03My role

What I actually did here

I was the design function. That sounds dramatic, so let me be specific about what it meant day to day.

I joined to lead design on a product that had a strong thesis and very little interface. There was no design system, no component library, no established patterns, and a data model that was still being argued about.

The work that followed was mostly definition: working out what the product actually is, screen by screen, alongside the founders and engineers, and then building the machinery that lets it keep growing without falling apart.

Concretely, I owned
  • 01

    Product design end to end, from problem framing and flow mapping through to final interface and interaction detail

  • 02

    The design system: colour, type, elevation, iconography, and every shared component the app is built from

  • 03

    Authentication, onboarding and organisation setup, including SAML SSO, two factor auth and passkeys

  • 04

    The whole SaaS intelligence surface: applications, vendors, subscriptions, renewals, users, employees, expenses and cards

  • 05

    Derek and Mina, the two AI finance agents, plus the admin console that governs what they are allowed to do

  • 06

    Company and personal settings, roles and permissions, invitations and access requests

  • 07

    The browser extension, global search and the notification system

  • 08

    The help centre and documentation surfaces

  • 09

    Pricing and packaging design, working through tier structure, prepaid AI balances and the billing states that fall out of them

I also wrote a lot of the interface copy, because on a product like this the copy is the design. Choosing between "Add Subscription" and "Add Plan" commits you to a position on the data model, and getting those words wrong costs you a support ticket every single day afterwards.

04Constraints

Eight months, four engineers, one designer

Most of what a product becomes is decided by the resources it was built with, so here is what this one had.

Eight months. Four engineers. One founder I worked with closely enough that most decisions happened in conversation rather than in a document. One designer, which was me.

That headcount decides more about a product than any process does. The research at the top of this case study was the whole of it, front loaded into the first few weeks and never repeated as a formal phase. After that there was no discovery sprint and no stretch where design ran ahead and engineering caught up. Design and build happened on the same features, in the same weeks, for eight months.

So the process had to buy certainty cheaply. At every feature stage I built a working prototype, put it in front of a few selected users, and iterated on what came back before the real version got built.

Doing that with LLMs is what made it viable at this size. A prototype that once cost a week costs an afternoon, which changes what is worth testing. You stop reserving prototypes for the big risky flows and start using them on anything you are unsure about, which here was most things.

The visible cost is the design system, which I built after the screens rather than before them. That was not an oversight. It is what eight months with one designer buys you.

05Connecting the data

Getting a company in: The first hard question: how do you get the data in?

A spend platform with no data connected is a very expensive empty table. so onboarding is where this product either works or does not.

I spent more time here than on any other flow. Doow only becomes useful once it can see your identity provider, your bank, your accounting system and your HRIS. Until then it is a shell.

Four steps, in a deliberate order.

  • 01

    Identity and SSO first, because it tells us who works here and which apps they touch. It is the highest value connection and the one most likely to be already set up.

  • 02

    SaaS expenses second, through bank and card connections, because that is where the money actually moves.

  • 03

    HRIS third, to attach departments, managers and start dates to the people we just discovered.

  • 04

    Company details last, because it is the only step that is pure data entry and I wanted the momentum of three real connections behind it.

06The dashboard

Seeing what you have: Home, or: what do you show someone in the first four seconds?

The dashboard went through more revisions than anything else, because everyone has an opinion about dashboards and most of those opinions are wrong.

The temptation with a spend product is to open on a giant number. Total SaaS spend, huge type, very impressive.

I pushed against it. A total is a static fact, and the finance lead opening Doow on a Tuesday already knows roughly what theirs is. The thing they cannot get anywhere else is the delta: what moved since last week, and what has a date on it.

So it opens with My Tasks. Three cards: what needs attention, what is renewing soon, what the system has noticed. Only then the numbers.

07The app inventory

Applications and vendors, the spine of the product

This is where people spend most of their time, so it carries five different views of the same underlying set of apps.

That pairing of spent against utilised is the whole product in one column group. A cost is only actionable next to what it bought, so the two sit in adjacent columns rather than on separate screens.

Scale decides whether a table like this survives a real company. A 500 person business can be running several thousand applications once everything discovered is counted, and a table that is pleasant at 50 rows is unusable at 5,000.

So it is paginated, with both a search and a full filter set rather than either alone. Search is for when you know the name. Filters are for describing a shape: unowned apps above a threshold, anything renewing this quarter, discovered but never mapped to a subscription.

Columns are yours to pick, twelve available, because the columns a procurement lead wants are not the ones an IT admin wants. If your selection runs wider than the viewport the table scrolls sideways rather than crushing everything to fit. A column too narrow to show its value is worse than one you scrolled to.

08Paying twice

Deciding what to change: Where you are quietly paying twice

Overlap is one of the most expensive problems in SaaS and one of the hardest to see, because each individual purchase was reasonable at the time.

Design has Figma. Product has Miro. Marketing bought Canva. Engineering has a Whimsical licence somebody expensed two years ago. Every one of those decisions made sense in isolation, and together they are four bills for overlapping capability.

The Overlapping Applications view groups tools by what they actually do and shows the combined spend, which is usually the moment somebody says the word "wait" out loud.

09Should you switch

Should you replace Asana?

The most opinionated screen in the product, and the one most willing to tell you not to switch.

Most tools that suggest cheaper alternatives show you a price comparison, you notice the cheaper option is missing the one feature your team lives in, and you close the tab.

A price comparison leaves out the cost of moving, which is usually the number that decides it. So this view prices the whole switch: the migration effort, the productivity dip, and the capability you would be giving up, alongside the difference in list price.

Every recommendation carries five things most comparisons leave out.

  • 01

    Net savings in year one, which can be negative, and is shown in red when it is. A recommendation that costs you money in year one should say so.

  • 02

    Three year savings, because some switches only pay off over a longer horizon.

  • 03

    Payback period in months, so you can see when the switch stops costing and starts saving.

  • 04

    Estimated switch cost, the number nobody else shows, covering migration and the productivity dip.

  • 05

    Feature match as a percentage, split into what is covered and what is missing, by name.

10Contracts

Modelling the money: The hardest modelling problem in the product

Software is not sold one way. Holding every way it is sold in a single interface is the hardest thing in the product.

Slack charges per seat, per month. AWS charges for what you consume, with no seats at all. OpenAI sells prepaid credits that burn down as tokens. Salesforce sells a negotiated contract with custom terms, a fixed floor and overage above it. Some tools do two of these at once.

One subscription screen has to hold all of that. Splitting it into four would leave four sets of totals that do not reconcile, and a dashboard nobody trusts.

What we ended up supporting
  • 01

    Seat based, with licence plans, assigned versus available seats, and per seat cost

  • 02

    Usage based, metered against whatever unit the vendor bills on

  • 03

    Pay as you go, with transactions attached directly to the subscription

  • 04

    Enterprise contracts, with negotiated terms, committed spend and custom renewal dates

  • 05

    Plus add-ons and overage, which can sit on top of any of the above

Turning the complexity into a short sequence of yes or no questions means a simple Slack subscription takes about twenty seconds, while a hybrid enterprise contract can still be modelled fully without a separate flow.

The running Total Subscription Value in the footer was a late addition that earns its place. It updates as you build, so you can check the number against the invoice in front of you before committing.

11People and licences

People, and the awkward gap between users and employees

A user in a SaaS tool and an employee in your HRIS are not the same thing, and pretending otherwise breaks the numbers.

This distinction sounds pedantic until you try to build the product. Your HRIS knows about employees. Your SaaS tools know about users, identified by email. Those two sets overlap but never match.

Contractors have tool access and no HRIS record. Leavers keep licences for months after their last day, which is both a cost problem and a security problem. Shared accounts belong to nobody. Service accounts look like people. Someone's personal Gmail is on a licence because they signed up before the company had SSO.

So Users and Employees is one surface that holds both realities and shows you where they disagree.

I also designed three separate paths for getting people into the system, because the real world does not hand you clean data.

12Cards and expenses

Expenses, cards and the matching problem

Every charge that lands has to be attached to something, and most of them arrive with a merchant name that tells you almost nothing.

A card transaction shows up as something like "MSFT * E0800ABCD". A human can eventually work out that this is Microsoft. A system needs to map it to a specific subscription, on a specific plan, owned by a specific department, and it needs to be honest when it cannot.

The expenses surface is built around that matching problem, with the unmatched transactions treated as the important ones rather than swept aside.

13The AI agents

Handing work to the agents: Derek and Mina, or: designing for something that talks back

Two AI finance agents whose output is finished work: analyses, decks, documents. Designing this taught me more than anything else on the project.

Derek and Mina are Doow's AI agents, not a chatbot bolted onto a sidebar. They audit filings, write and run analysis, and produce board ready decks and documents.

That distinction matters for design. Returning text and returning artefacts that carry consequences are different design problems, and the second one needs review, provenance and a way back that the first never asks for. Most products conflate them.

Why two of them, and not one? Because they do genuinely different jobs.

Derek investigates. He digs through the data to find what is costing you money and traces it back to the specific vendors, contracts and usage changes responsible. Ask why cloud spend jumped in March and the answer is a chain of causes rather than a number. He also runs in the background, scanning for anomalies nobody thought to look for.

Mina packages. She takes an analysis and lands it somewhere a person can act on: pulls the data, builds the charts, writes the narrative, hands back a finished thing. She explains a finding the way you would explain it to a CFO, because that is usually where it is heading.

Splitting them costs something. Two personas is more surface than one, and people have to learn which to ask. It earns that because the two modes want different things from an interface. Investigation wants depth, branching, the ability to keep pulling a thread. Packaging wants a finished artefact with a defensible structure. One agent doing both compromises on each. The adoption tab bears this out later: which one a department reaches for says a lot about what they use Doow for.

The boundary is softer in practice than a two persona split implies, and the replay below is honest about it: Derek is the one who ends up building a deck, and Mina is the one who ends on a plan for Monday morning. Either can produce either. What the split actually buys is a default posture, and a reason for the product to ask which one you want before you start typing rather than guessing at it halfway through.

New chat

How can I help you today?

Ask Derek anything...

Smart

The wait is its own design problem, because agent work is not instant and designing as though it is gets you an interface that feels broken.

Responses stream. You watch the answer being built, four words at a time, rather than sitting on a spinner and then receiving a wall of finished text. That reads like an implementation detail and it is not. Forty seconds is long enough that a still screen starts to look broken, and people close things that look broken. Text arriving keeps the same forty seconds legible as work in progress, which people will sit through.

14Governing the agents

The part almost nobody designs: governing the agents

If you give AI agents access to your financial data and let them take actions, someone has to be able to see what they did, cap what they cost and decide what they may touch.

This is the chapter I would most want a hiring manager to read, because it is the part of AI product design currently being skipped almost everywhere.

Getting a chat panel approved for use on real financial data is mostly a design problem, and it arrives well before the engineering one. The questions are: who is using this, what is it costing, what did it do, what is it allowed to do, and where can people reach it.

I designed a full admin console around those five questions.

Adoption answers "is this worth what we pay for it". It shows 11 of 12 members active, sessions per week trending, and a per department table you can expand to individual people, their session counts, which persona they prefer and which channel they use.

That last column matters more than it looks. If Finance reaches Derek through Telegram and Engineering uses the web app, that is a real signal about where to invest.

There is a personal side too. Individuals get their own surface: session and action history, files shared with the agents, saved commands, the tools the agents may use on their behalf, connected channels.

The two scopes stay on separate surfaces. An admin setting policy for the company and a person managing their own history are doing unrelated jobs, and one settings page holding both would have served each of them badly.

15Pricing and packaging

The rest of the product: Pricing is a state machine

I designed the pricing page and every billing state that falls out of it. The most useful thing I learned was about a state that cannot happen.

A trial with a card on file can never expire.

That sounds like a technicality. It deleted a whole branch of the product. When a trial with a card ends, the charge either succeeds and the account goes active, or it fails and the account goes into dunning. There is no third outcome. The expired trial state only exists when there is no card, which makes it an invariant rather than a state.

I did not get that from a diagram. I got it from building the thing, going looking for the route into the expired state, and finding there was not one. On a slide, trial expiry is an obvious box to draw. In a working model it is unreachable half the time, and knowing which half changes what you build.

Making the card mandatory then changed what dunning is for. It stopped being an edge case for lapsed customers and became the main failure path for every trial that does not convert, so that flow had to be good rather than merely present.

The model prices on tracked SaaS spend rather than seats. A finance team of three managing twelve million dollars of software is worth far more to Doow than a team of thirty managing two hundred thousand, and seat pricing gets that exactly backwards.

Four tiers, with 20% off annually
  • 01

    Starter, $69 a month. Up to $100K tracked spend, 2 seats, 2M AI tokens included

  • 02

    Growth, $199. Up to $500K, 5 seats, 10M tokens

  • 03

    Business, $399. Up to $1.5M, 15 seats, 45M tokens

  • 04

    Enterprise, custom. Everything above that, and the procurement paperwork that comes with it

Pricing on spend has a consequence that took a while to accept. You cannot ask somebody to pick a tier before you know their spend.

So plan selection moved out of signup and to the end of onboarding, once the first integration has connected and the product can see the real number. Tiers below your detected spend still appear, disabled, with the reason written inline rather than hidden in a tooltip: does not fit your $340K tracked spend. The same check blocks voluntary downgrades later.

The trial follows that logic. It begins when the first integration connects, not at signup, because a trial that starts while you are typing your company name is a trial you spend on setup instead of the product.

AI usage above the included allowance is prepaid. Organisations top up a balance, and both token overage and the metered models draw against it.

The interesting part is what that removes. No usage invoices, no separate usage dunning, no overage toggle, no spending cap buried three levels into settings, because the balance is the cap. The amount you topped up is the most you can spend, which is far easier to explain to a finance team than a limit they have to configure.

Overage is billed at cost, which after card processing fees is slightly loss making. We took that on purpose. We would rather lose a little on the metering than have a customer find a margin hidden inside it.

Downgrades are the part everybody skips. Moving down a tier is a reconciliation rather than a price change: fewer seats than you are using, a lower ceiling than you are tracking, a smaller allowance than you spent last month. So it is a wizard rather than a button, and it tells you what you are about to lose before asking you to confirm.

Cancellation got the same treatment in reverse, and the retention step puts the pause and the discount in front of you together rather than one after the other, because a flow that negotiates in stages is one people learn to distrust.

Scheduled downgrades and cancellations stay visible and reversible until they take effect, one click to keep the plan. Nothing quietly happens to your account at the end of a billing period.

16Search and notifications

Search and notifications

The connective tissue. Less glamorous, heavily used, and the stuff that makes a product feel finished.

Global search had to span applications, vendors, people, subscriptions and expenses, with results grouped by type and keyboard driven throughout. On a product with this much data, search carries more of the navigation than the sidebar does for anyone who is in it daily.

17The design system

Underneath it all: The design system I built after the screens

None of the above is possible at this volume without a real design system. This is the part that made everything else go fast.

Close to four hundred laid out screens is a volume you only reach by building a system first and then composing with it.

The colour system is eight ramps of twelve steps each, which is 96 tokens: two brand ramps plus emerald, violet, blue, rose, amber and grey. Twelve steps sounds excessive until you are building status states, and then you find you need every one.

Twelve steps also bought me a contrast rule I could hand to an engineer instead of adjudicating it screen by screen. I checked all 96 tokens against black and white text. Every one of them has at least one label colour that clears 4.5:1, and the step where the label flips from black to white is consistent enough to be a rule: 600 on the brand green, violet, blue and rose, 700 on emerald, amber and the secondary yellow, 500 on grey.

That collapses into one line the team could hold without me in the room. Steps 10 to 500 are fills, surfaces and borders. Step 600 and up is what you reach for when the colour itself has to carry text on white, which 38 of the 96 do. Status chips and inline links draw from that upper half, and the mid ramp stays decorative, which is exactly where the colour is prettiest and least legible.

Focus got the same treatment. The button is five variants across five states and three sizes, which is 75 combinations, and focused is a column in that matrix rather than whatever the browser does by default. The two that needed the most thought were transparent and inverted, because a default ring either dissolves into the surface it is sitting on or lands on a dark fill and vanishes, so both carry their own ring. It is a small thing to draw and an expensive thing to retrofit, and it means keyboard users get the same affordances as everyone else without an engineer having to invent one.

components in the library
668
variant sets
268
instances placed across the file
50,608
colour tokens across 8 ramps
96

That instance count is the number I would point at. 50,608 component instances means the overwhelming majority of the interface is composed from the library rather than drawn by hand. That is what makes a change to the button component propagate everywhere instead of turning into a two week audit.

18How I work

How I actually work now, including the AI part

Since this is 2026 and everyone is asking, here is an honest account of how AI fits into my process, including the parts of it AI does not touch.

I use AI tools heavily. Claude Code, Codex, Cursor, Antigravity, and the Figma MCP to move between design and code in both directions. But I want to be precise about what that buys, because there is a lot of noise on the subject.

The decisions in this case study came from understanding the problem and holding a position on it. No model produced the Alternative Applications screen, or the choice to treat unmatched transactions as the important ones rather than the mess to sweep aside, or the argument for modelling switching cost instead of comparing prices.

Where the tooling earns its place is in the distance between an idea and something real. I can take a flow from Figma and have a working prototype the same afternoon, which means testing whether a subscription panel feels manageable rather than arguing about it in a review.

What that changes in practice
  • 01

    I prototype in code rather than in clickable mockups, so what stakeholders react to behaves like the real thing

  • 02

    I can build a working model of a pricing structure or a billing state machine to find out where it breaks, before engineering commits to it

  • 03

    Design system changes move to code faster, because I can make the change in both places myself

  • 04

    I spend a much larger share of my time on the parts that are genuinely hard, which is problem framing, information architecture and interaction detail

The pricing and billing chapter earlier is the clearest example. Almost everything I know about that state machine, I know because I built a working model of it and then went looking for the states that could not be reached.

That is the actual value: finding the logic problems while they are still cheap to fix.

The link back into the design system is more prosaic than people assume. The colour ramps and the rest of the tokens live as Figma variables, and I export them as JSON for the engineers to work from.

19What I got wrong

What I would do differently

Every case study that ends with everything going perfectly is lying. Here are the two things I got wrong.

I over-engineered the first subscription panel. The version showing every contract type at once was me demonstrating that I understood the complexity rather than solving it. The redesign put most of it behind a short sequence of questions, which is what I should have drawn first.

I under-invested in empty and error states. They arrived as a late pass rather than being designed alongside the happy path. On a product whose entire premise is incomplete data, the empty state is the more important screen, and it should have been drawn first.

20What's next

Where this goes next

The product is built. The interesting part now is what happens once real finance teams start living in it.

The immediate work is reach rather than more product. Doow solves a problem plenty of finance teams currently solve with a spreadsheet and a bad afternoon, and most of them do not know it exists. Getting it in front of those teams, then watching how they actually use it rather than how we assumed they would, matters more than adding to it. Interfaces that survive contact with real users need sanding down in places nobody predicted, and I would rather spend the next stretch there than on new surface area.

After that, and only after measuring how the current product lands, there is a layer to put on top: banking, payments and accounting. Each of those turns Doow into a system of record rather than a system of insight, which is not a move you make on a hunch. You make it once you know which parts people genuinely rely on, because those are the parts worth building on.

Fin