Inner Workings: Reimbursify

Inner Workings: Reimbursify

Nobody likes submitting reimbursements, but everyone wants to be reimbursed.

When Huan Chen, one of our Principal Product Managers, saw our old reimbursement system, he decided to build a new internal app that would make the whole process actually work. Not just marginally better— he took it to a whole new level.

Here’s how he did it.

The Spark

It started with a Slack message in October. Our VP of Operations announced a new email address for reimbursements. The idea was simple: give everyone a dedicated inbox instead of sending receipts to someone’s personal email. For most people scrolling past, it probably seemed like a reasonable improvement.

Inner Workings: Reimbursify

Huan saw it differently. “I looked at it and thought, this doesn’t actually solve anything. We’re still going to have the same problems.”

So he did something that’s become pretty standard at US Mobile but still feels rare in most companies: he went directly to the people dealing with the problem.

The Real Problem

Catherine and Debbie on our finance team walked Huan through what the reimbursement process actually looked like. What he learned was eye-opening.

For employees, submitting a reimbursement meant finding your receipt, taking a photo on your phone, then somehow getting it to your laptop to email it. AirDrop doesn’t work reliably anymore, so most people were emailing images to themselves first. Then you’d draft an email with your name, the amount, the date, the vendor, the category, and a description of what the expense was for. Every single time. The whole thing took 10 to 15 minutes per submission.

For the finance team, things were even worse.

Every single receipt had to be manually typed into a spreadsheet. They were spending hours consolidating emails, checking if someone had already hit their $100 monthly gym limit, and formatting CSVs for JustWorks, our payroll system. Finance had to manually cross-reference every name against JustWorks data. Despite calendar invites and email reminders, people kept missing the 2:00 PM Friday deadline. The reminders just weren’t urgent enough, and the whole process of uploading receipts was such a hassle that people procrastinated.

Finance had no visibility into who had submitted and who hadn’t, or how close someone was to their monthly limit. The team was spending hours each pay period just trying to keep everything straight.

“I realized I could build something that would actually fix these problems,” Huan said.

Building

Huan didn’t pitch this in a meeting or write up a formal proposal. He just started building his idea.

Late October was spent interviewing Catherine and Debbie to understand their actual workflow. Not just what they said they needed, but watching how they processed reimbursements. He learned about the JustWorks CSV format requirements, how names and emails have to match exactly or the upload fails. He learned about our category limits: gym is a $100 per month hard cap, transit is $325 but overages become taxable fringe benefits. Location eligibility was complex too. US employees can get transit, phone, and gym reimbursements. Canada gets gym but not transit.

Then he built it incrementally, working with Cursor and Claude Code. The tech stack: React frontend hosted on Vercel, Node.js backend with PostgreSQL on Railway, and Anthropic’s Claude Vision API to automatically read receipts and extract the amount, vendor, date, and category. Authentication through Google OAuth so employees just sign in with their existing US Mobile work accounts.

The timeline was fast. Aaron’s message went out October 10th. Interviews with finance happened in late October. Building happened throughout November. Huan launched the first version in December, targeting the December 15th payroll cycle. About two months from idea to launch, and he’s kept improving it since then based on feedback.

The cost breakdown is pretty wild when you compare it to what we could have done. Railway hosting for the backend, database, and storage runs about $5 to $20 per month depending on usage. Vercel’s frontend is on the free tier. The Anthropic API for receipt scanning is usage-based and relatively minimal. Total monthly cost: under $20 to $30 per month, including the separate coffee app Huan also hosts for the team.

Compare that to a tool like Expensify, which would cost us at least $2,214 per month at $18 per seat. And Expensify wouldn’t handle our specific workflow requirements anyway.

How It Actually Works

Inner Workings: Reimbursify

The new flow is so much simpler.

An employee goes to the app on their phone or computer, clicks “Sign in with Google,” and uses their US Mobile work account. First time users select their department and location. Then they’re in. They click “New Submission” and drag and drop receipts. Photos or PDFs, multiple at once. Works the same on your phone from camera roll or on your computer.

Inner Workings: Reimbursify

The app sends each receipt to the AI, which automatically extracts the amount (including currency if it’s not USD), the date of the expense, the vendor name, and suggests a category like Gym, Transit, or Other. Results appear within seconds.

The employee reviews what the AI found. Most of the time, they just confirm it’s correct with a click. If the AI got something wrong, they can edit any field. They can add optional context if needed, like “Team lunch with engineering.” The app shows if any receipt might be over the limit or ineligible for their location. They review the full submission summary, see total amounts by category and any potential overages, and click “Submit for Review.”

Done. Submission time went from 10 to 15 minutes down to under two minutes. No manual typing required in most cases. Just review and confirm.

On the finance side, our team everything in a dashboard.

They can review all employee submissions, approve or reject or mark pending with notes, override any field during review if needed, see category totals and overages at a glance. When it’s time to process payroll, they export approved submissions to CSV formatted exactly how JustWorks needs it. They can filter exports by employee location. Processing time went from hours per pay period to minutes.

EMPLOYEE SIDE                          FINANCE SIDE
─────────────────                      ─────────────────
     │                                       │
     ▼                                       │
┌─────────────┐                              │
│   Login     │                              │
│ (Google SSO)│                              │
└─────────────┘                              │
     │                                       │
     ▼                                       │
┌─────────────┐                              │
│   Upload    │                              │
│  Receipts   │                              │
└─────────────┘                              │
     │                                       │
     ▼                                       │
┌─────────────┐                              │
│  AI Extracts│                              │
│    Data     │                              │
└─────────────┘                              │
     │                                       │
     ▼                                       │
┌─────────────┐                              │
│   Review &  │                              │
│   Confirm   │                              │
└─────────────┘                              │
     │                                       │
     ▼                                       │
┌─────────────┐                              │
│   Submit    │ ─────────────────────────▶ ┌─────────────┐
└─────────────┘                            │  Dashboard  │
     │                                     │  Shows New  │
     │                                     │ Submission  │
     │                                     └─────────────┘
     │                                           │
     │                                           ▼
     │                                     ┌─────────────┐
     │                                     │   Review    │
     │                                     │  Receipts   │
     │                                     └─────────────┘
     │                                           │
     │                              ┌────────────┼────────────┐
     │                              ▼            ▼            ▼
     │                         ┌────────┐  ┌─────────┐  ┌─────────┐
     │          ◀───────────── │Pending │  │ Approve │  │ Reject  │
     │         (notification)  └────────┘  └─────────┘  └─────────┘
     │                              │            │            │
     ▼                              │            ▼            │
┌─────────────┐                     │      ┌─────────────┐    │
│  Edit &     │ ────────────────────┘      │   Export    │    │
│  Resubmit   │                            │    CSV      │    │
└─────────────┘                            └─────────────┘    │
     │                                           │            │
     │                                           ▼            │
     │                                     ┌─────────────┐    │
     │                                     │  Upload to  │    │
     │                                     │  JustWorks  │    │
     │                                     └─────────────┘    │
     │                                           │            │
     ▼                                           ▼            │
┌─────────────┐                            ┌─────────────┐    │
│  Paycheck   │ ◀────────────────────────  │  Payroll    │    │
│  Received   │                            │  Processed  │    │
└─────────────┘                            └─────────────┘    │
                                                              │
                                                              ▼
                                                 (Employee must resubmit)

“Catherine and Debbie in finance are happy,” Huan said. “The fact that they don’t have to chase people down for missing info or manually track limits anymore has been a big relief for them. They can close the books on time without the last-minute scramble.”

What This Says About How We Build

The best part of this story for me? Huan didn’t need permission.

He didn’t need a formal project kickoff or a green light from leadership or a budget approval. He saw a problem that was causing real pain for both employees and our finance team, talked to the people actually doing the work to understand their needs, and built something that addresses the root causes.

The result is that employees can now batch submit reimbursements in a few clicks with almost no manual typing, and finance can review and export everything without manual data entry. Everyone wins.

The app now has AI-powered OCR, multi-currency support, per diem tracking for company trips, mobile optimization, Slack notifications for status updates and deadline reminders, a complete 2026 reimbursement calendar, and a changelog page tracking every feature Huan’s shipped since December. He built in a feedback button so people can report issues. He’s added the ability to edit and resubmit past submissions. He gave finance the power to manage employees, configure categories, set eligibility rules, and adjust limits by location, department, or individual user.

That’s the kind of place US Mobile is (and one of the reasons I love working here). When you see something broken, you’re empowered to fix it. When you have an idea, you can build it. When you want to make things better for your teammates, nobody’s going to stop you or tell you to wait for budget approval or ask you to fill out a form explaining why this matters.

The less time we spend on reimbursements, the more time we spend building product for our users. And that’s exactly the point.