Skip to content

The Progress Bar Nobody Expects: Why Seeing Your Imports Matters

2025-11-20

November 20, 2025

You've just uploaded your last three months of transactions from your Apple Card statement. The file sits there uploading, and you think: Is this working? How much longer? Did something break?

There's nothing worse than staring at a blank screen wondering if your data is being processed or if you should just refresh.

So we decided to show you exactly what's happening, step by step, with real-time feedback that proves progress is being made.

The problem nobody talks about: trust through visibility

When you upload 500 or 2,000 transactions, processing takes time. Duplicate detection, AI categorization, linking to existing accounts - it's not instant. But if you can't see that work happening, you assume something's wrong.

We watched users upload files and then immediately refresh the page five times, convinced the upload got stuck. It didn't. They just couldn't see the progress.

The real issue isn't speed - it's visibility. Users need to know their data is moving through the system, step by step.

What we built

We created a multi-stage progress indicator that shows you exactly where your transactions are in the pipeline:

UploadParsingCategorizationInsertionDone

Each stage has its own progress bar, and you can see:

  • How many transactions have been inserted
  • How many duplicates were skipped
  • How many errors occurred (so you know what to check)

The interface shows real-time stats so you don't stare at a loading spinner wondering if anything's happening. You see "Inserted 142 · Duplicates 8 · Errors 1" and you immediately know your file is being processed.

The details matter more than you think

Here's what made this work:

We stream progress from the backend. Each transaction processed triggers an update to the UI. You're not waiting for everything to finish - you see progress in real time as items flow through the system.

We count what matters. Users care about three things: how many transactions made it in, how many duplicates were found (so they don't worry they lost data), and how many errors happened (so they can investigate). Everything else is noise.

We show reliability. When a file takes 45 seconds to process 1,200 transactions, showing that progress builds confidence. You're not wondering if it's broken - you can see 47% done and know exactly how far you are.

We handle the weird cases. What if your upload fails halfway through? You see exactly which transactions failed and why. What if a merchant name is ambiguous? You see the categorization stage taking longer as the AI spends time figuring it out.

Why this changes the experience

Before, uploading transactions felt like a black hole. After, it's transparent.

Users tell us they love watching the progress because it tells them a story: "First it uploaded 1,200 transactions, then it found 47 duplicates from my previous imports, then it figured out that 'SQ *' is my local coffee shop based on my history, and now it's saving everything to my account."

It's not just progress - it's narrative. Each number tells you something about what's in your financial data.

The technical challenge nobody expects

Making this work required us to think about reliability differently. If you stop watching halfway through, we need to remember where we left off. If you close the browser and come back in 10 minutes, your transactions should still be processing correctly.

We couldn't just assume the connection would stay open. We built the progress tracking to persist, so if your browser tab crashes, closing it doesn't lose the work. The backend keeps processing, and when you come back, you see exactly where things left off.

What users actually value

What surprised us: users don't necessarily want faster uploads. They want honest uploads.

They'd rather see "67 duplicate transactions detected and skipped (you already have these)" than have a system silently throw away duplicates without telling them. They'd rather see "1 error: unusual merchant name requires review" than have 1 transaction disappear mysteriously.

Transparency builds trust more than speed ever will.

What's next

We're extending this same pattern to receipts. When you upload a receipt photo, you'll see:

UploadStraightenReadSaveDone

Same idea: show you that we're working on your receipt, where in the process we are, and what we found when we're done.

The bigger lesson

Progress tracking isn't decoration. It's a feature that solves a real problem: the anxiety of waiting for your data to be processed.

When users see real-time feedback, they don't worry. They trust. They upload bigger files. They come back and upload again. They know exactly what happened to their data.

If you're building anything that takes more than a few seconds to process, show your users the work. Don't make them guess. Let them watch the story unfold.

Upload your transactions now →