An AI accounting assistant that codes expenses for you

Pemo Copilot is an AI accounting assistant. It suggests the account, vendor and VAT for each expense, and the user stays in control: accept it, change it, or turn it off.

Company
Pemo
Role
Product designer
Year
2024
Team
Product manager, Front-end, Back-end
Tools
Figma, Claude

Problem statement

How can we cut the time finance teams spend coding expenses?

Every card expense has to be matched to an account, a vendor and a VAT treatment before it can be exported to the accounting system, and doing that by hand was slow. Industry estimates put it at 3 to 5 minutes per expense, and a growing SME can have 300 to 700 expenses a month, which adds up to roughly 15 to 58 hours of coding every month. Customers were asking for help with it, and it fit Pemo’s push into AI. Copilot takes the first pass, so people review instead of type.

The Export Card Expenses table before Copilot: every row is marked Incomplete and the Account, Vendor and VAT columns are empty, with an Add button appearing on hover

My role

I was the only designer on Copilot and took it end to end: research, flows, the suggestion experience, Accounting settings and handoff.

Solution

Suggestions where the work already happens

Copilot fills in the account from the chart of accounts, the vendor and the VAT details on each expense, marked with a sparkle so it’s clear what the AI chose and what a person did. Nothing is locked: every suggestion can be changed, so the finance team stays in control. It also gets better the more it’s used.

One switch, nothing to configure

Copilot has its own switch under “AI powered accounting”. It learns from the company’s past entries, needs no configuration, and starts suggesting once it’s on. A second switch, Smart Vendor Creation, builds on it: it suggests vendor names and their Tax Registration Numbers (TRN) so the right vendor is assigned for VAT claims. It’s a separate switch because not everyone wants vendors created automatically, and some teams prefer to keep creating them by hand. The two work together, so it stays disabled until Copilot is on, and a tooltip explains why.

An earlier version of the AI powered accounting settings: an Activate Pemo Copilot switch and a disabled Activate Smart Vendor Creation switch, with a tooltip saying Copilot must be activated first

The rest of the accounting setup sits alongside it in Accounting settings: chart of accounts, vendors, advanced fields and multi-currency export. Teams can see the vendor list Copilot works from, which payment details are verified or missing, and switch individual vendors on or off.

Works with the accounting system you already use

Transactions sync in real time to QuickBooks, Zoho Books, Tally and Xero, and anything else can take a CSV export. Teams mirror their chart of accounts in Pemo in a few clicks and choose when transactions sync, so changes made in Pemo show up in the books without a month-end scramble. Receipts that are missing or look wrong are flagged automatically.

Logos of accounting systems: SAP, QuickBooks, Microsoft, Zoho, Odoo, Tally, Freshbooks and Wave

The chart of accounts lives in Accounting settings, next to the payment account and vendors. Each account can be searched, edited, or switched on and off.

Research and analysis

Who does this work

In most companies an accountant codes the expenses by hand. In smaller ones it falls to the finance manager or the founder. In every case it’s slow, and when it’s slow the books close late.

How exporting worked before

Before Copilot, every account and vendor field started empty with an Add button. The product tour told people to hover over the field until ”+ Add” appeared, click it and pick the right account, then repeat for each missing field.

The Export Card Expenses product tour, step 3 of 6, Categorize expense: hover over the field until "+ Add" appears, click it and pick the right account, then repeat with the remaining missing fields

Internal testing and beta

We tested Copilot internally, then with beta customers, starting on 28 June 2024. Two things we learned shaped the design.

It needs time to learn before it suggests. Copilot needs at least three cycles of running in the background, only capturing information. Suggesting earlier would risk lowering its accuracy, so it doesn’t trigger until it has enough to work with, which means it works best for companies that have already closed their books. That set how I handled the empty and uncertain states: with enough information it suggests, with enough information but no vendor TRN the sparkle turns orange, and with nothing to suggest the field stays blank for the user to fill in.

It takes time, so it runs in the background. Copilot can take a while, so it works in the background while people explore the rest of the platform. We can’t give an exact timeframe, only an estimate, so the interface says that.

Competitor research

I looked at Ramp and Moss. Both highlight the whole row while the AI is working. That’s clear at a glance, but it didn’t fit our case. Some of our suggestions need a second look because a detail is missing, such as a vendor’s TRN number, and the user needs to see which field to check, not just which row.

Explorations

Option 1: A marker on the column

The first idea was an icon next to the column title to show the column was filled in by AI. It was simple, but it said nothing about individual expenses, so users couldn’t tell which suggestions needed attention.

Option 2: A marker on each field

The second option marked individual fields instead. Each suggestion shows whether Copilot was confident, so a person can scan the table and go straight to the ones that need a review. That’s the one I took forward.

The brief was to keep it simple. This was Pemo’s first AI feature and we didn’t want to overcomplicate it, so I kept the first version to the essentials and cut nothing that I’d have wanted to ship.

Sketching the flows

Before opening Figma I sketched the three moments that needed the most thought. They’re from before the feature had a fixed name, so they say Autopilot.

Set-up. Pick the Pemo account, choose the accounting system, then a single “turn on?” confirmation.

Sketch of the Autopilot set-up: pick your account, choose which accounting system, then a Pemo Autopilot dialog with a turn on switch and a confirm button

Expenses. The default table next to a running state, with a “5/10 autopilot running” band moving from the oldest expense to the newest and each finished row marked done. I left myself two open questions: whether the count should sit in a banner at the top, and whether the user should be able to edit expenses while it runs in the background.

Sketch of the Autopilot expenses screen: a default state and a running state with a blue "5/10 autopilot running" band moving up the table, finished rows marked done, and a note asking whether users can adjust expenses while it runs

Corrections. Two ways to confirm a correction: a modal with a preview of the affected expenses, or a smaller yes or no prompt on the row itself. I called the second the more subtle option and asked when it should trigger, for example after changing one expense.

Sketch of the Autopilot expenses correction: a modal with a preview of expenses and No and Yes buttons, or a more subtle inline yes and no prompt beside the row

Final solution

Implemented improvements
  • A blue sparkle marks each field Copilot filled in, account and vendor, so it’s clear what the AI chose. Blue is the platform’s main colour.
  • An orange sparkle is a warning: the user should review that specific field. In the video at the top of the page, Starbucks is matched to a vendor whose TRN isn’t set, so the user knows to check it before exporting.
  • No sparkle when Copilot has nothing to go on, like the “Other expenses” account on that Starbucks row. The user is always expected to review, so an empty field is a prompt to fill it in, not an error.
  • An inline dropdown opens when the user clicks any field, with all their vendors, so changing a suggestion takes one click.
Switching it on takes two steps

Connecting the accounting system ends in two short steps: choose the account that represents the Pemo wallet, then a single “Activate Pemo Copilot?” screen marked Beta, with one Confirm button. This is the flow from my first sketch, built.

Working in the background

Once it’s on, a banner says how many expenses Copilot is working on, that it may take up to 30 minutes (an estimate, since we can’t promise an exact time), and that details appear in real time. The count ticks down as the table fills in. A notification confirms Copilot is on and that people can keep filling in expenses by hand while it works, which answers the question I left open in the sketch. When it finishes, another asks them to look over the entries and says they can change anything.

Correct one, fix the rest

Change an account on one expense and a small prompt asks whether to apply the same account to the other expenses from the same merchant, five in this recording. It’s the quieter of the two correction options I sketched, a yes or no beside the row instead of a modal.

Smart Vendor Creation, with a review before anything is created

Copilot can also suggest new vendors, and nothing reaches the accounting system until the user confirms. The confirmation comes on export because that’s the moment the system scans every expense, so the vendors can be created in bulk. An orange banner on the export table asks them to review the vendors Smart Vendor Creation suggested and change anything that’s wrong.

The Export card expenses table with an orange banner reading Vendors have been auto-suggested, asking the user to review the entries created by Smart Vendor Creation

On export, a dialog says how many vendors will be created in the accounting system, here 9 in Zoho Books, and the user confirms or cancels.

A Smart Vendor creation on export dialog over the table: by continuing, 9 vendors will be created in Zoho Books once confirmed, with Cancel and Confirm and export buttons

A suggested vendor can be edited in place. The name and the Tax Registration Number can both be changed before saving, with a tip on checking that the TRN is valid.

The Edit suggested Vendor dialog with the merchant name WEBFLOW.COM, a vendor name field, an optional Tax registration number field and a Pemo Power Tip about adding a valid TRN

The same suggestions are listed in Accounting settings, where a vendor with no TRN set is flagged with an orange sparkle and can be edited or switched off.

The Vendors list in Accounting settings: WEBFLOW.COM has an orange sparkle and TRN not set, with an edit pencil and a switch, above a list of other vendors and their numbers

Where it stands today

Copilot started in beta on 28 June 2024 and went live for everyone in August. These numbers come from our Mixpanel data.

NumberLabel
95.7%Transactions with a Copilot suggestion
32.8%Workflows completed without manual input
11.4%Undo / override rate
~11%Workflows fully automated

Copilot suggested an account and vendor for almost every transaction, and about one in nine suggestions gets undone or overridden, which is the control we designed for.