A Pile of Invoices, an AI-Built Expense Report—No More Filling Them In by Hand
Surely nobody is still filling in expense reports by hand at this point? Expense reports are just unbelievably annoying—writing out the reason for every single line, attaching a trip statement for every taxi ride. Travel a lot, entertain clients a lot, and your head spins. Back when I was in sales it got annoying enough that I simply stopped filing a lot of my expenses, which just meant leaving money on the table.
So I built a Claude Code skill called "baoxiao." Drop a pile of invoices into a folder (electronic PDF invoices or photos you snapped, either way) and hand it the folder. It renames and files them automatically, fills in your expense report template, attaches the trip statements, separates out the personal income tax portion, and hands you a compliant, print-ready expense report PDF, plus a duplicate-check ledger so you never claim the same invoice twice.
Surely nobody is still filling in expense reports by hand at this point?
Expense reports are just unbelievably annoying. Back when I was in sales, every filing took forever and my head would spin—every single line needed the specific reason spelled out, and every taxi ride needed a trip statement attached. Travel a lot, entertain clients a lot, and with no assistant it all falls on you. It got annoying enough that, to save myself the trouble, I simply stopped filing a lot of my expenses—which just meant leaving money on the table.
Today a Claude Code skill can take that whole chore off your hands. I built one—an expense report generator—and open-sourced it (MIT): github.com/xntj-ai/baoxiao.
Three stages: messy invoices in, compliance package out
It comes down to three stages:
- Dump a pile of invoices in: electronic PDF invoices or photos you snapped, all into one folder, then drag the folder path over to the AI;
- It organizes them: it renames the invoices, reads what’s inside each one, fills the details into the expense report template we gave it, and attaches the matching trip statements;
- Compliance package out: a print-ready PDF for finance, plus a duplicate-check ledger.
The filename is the database
Look at the filenames after it’s done—rigidly consistent, and readable at a glance:
- The invoice date (not the payment date);
- Whether this invoice is input or output;
- What category of expense it is;
- Which merchant issued it (with an abbreviation);
- The invoice’s amount and currency;
- The last 8 digits of the invoice number—specifically for duplicate checking.
It takes these fields and renames the files directly, keeping the electronic originals intact for audit.
The expense report is generated to your company’s format
Once renaming is done, it hands you a detailed expense report. This one is generated to my company’s expense report format—when you use this skill, you can drag your own company’s expense report template in, and it’ll fill in the expense content accordingly, right down to automatically leaving signature blanks for the approver, the reviewer, and the finance lead.
It also runs an expense analysis and compliance check: how much of this report each expense category accounts for, whether any invoices are duplicates, and—
Commuting income tax versus business travel expenses, separated automatically
As you probably know, Didi invoices for commuting count as a personal benefit and are subject to personal income tax. Some companies therefore require you to separate those invoices from the business-use ones. This skill goes to that level of detail too.
Didi trip statements: reformatted, then attached
Here’s the good part. As long as you have the electronic invoice or a photo of it, it lays your invoices out page by page, ready to print, with the matching Didi trip statement alongside (the trip statements go in that folder too).
But you’ll notice that Didi’s original trip statement is ugly, and thanks to the line wrapping you can barely fit a few trips on a page. So this skill reformats it, attaching a compact version behind each consolidated invoice.
Print it, paste in your paper invoices where they belong, and you’re done. The whole expense process becomes clean and simple.
Who this is for
Whether you’re an executive with no assistant who has to file and paste your own expenses, a founder running your own company where this obviously falls to you, or a board secretary—the monthly expense-pasting chore can go to AI entirely. No problem at all.
This tool just makes the organizing and formatting easier; it is not tax or legal advice. Electronic originals of electronic invoices must be archived, and the stated reason for each expense must be truthful—the machine keeps an eye on those for you, but the compliance floor is still yours to hold.
Source: EP0041_audio.mp3 · ASR model gemini-2.5-pro (chunked parallel) · full text of the original recording
[00:00] Surely nobody is still filling in expense reports by hand at this point? So what I’ve got for you today is a skill for filing expenses. Honestly, expense reports are just unbelievably annoying. Back when I was in sales, every filing took forever and made my head spin, and you have to write out the specific reason for every single line in there, and then on top of that add the taxi rides, add the trip statement, right? Especially annoying when you travel a lot and entertain clients a lot. And back then I didn’t have an assistant, so all of it fell to me. So to save myself the trouble,
[00:25] there were a lot of expenses I simply never filed—which just meant leaving a lot of money on the table. Today we can hand this whole thing over to a Claude Code skill. As you can see, I built an expense report generator, and it works in three stages. The first is a pile of invoices. I can drop them all into one folder, PDFs or photos, doesn’t matter. Then drag that folder path into Claude Code, and it automatically renames these invoices, reads what’s inside them, and fills them into the expense report template we gave it,
[00:51] and attaches the matching trip statements. And it sorts things out in there too, because as you know, Didi invoices for commuting count as a personal benefit and are subject to personal income tax. So sometimes your company wants those invoices kept separate from the business-use ones—it can go to that level of detail too. Finally it puts out a PDF for finance that you can print straight away, and there’s also a duplicate-check ledger. There are a lot of details in here that I won’t, won’t go through one by one.
[01:17] Let me show you one it generated. First, it sorts out every PDF in my whole folder. You can see the naming follows a strict pattern. First there’s the invoice date, then whether it’s input or output, then what category of expense it is, then which merchant issued it—there’s an abbreviation for that—then the invoice amount, how much and in what currency, then the invoice’s last 8 digits,
[01:43] the last digits used for duplicate checking. It packs all of that into the name and renames the file right there. And renaming, renaming isn’t even the half of it—at the end it also hands us a detailed expense report. This one here was built to my company’s expense report spec. When you use this skill, you can drag your own company’s expense report template over to it, and it’ll automatically fill in the expense content, including generating the spots for the approver, the reviewer, and the finance lead
[02:08] to sign—all those signature blanks, it generates them automatically. It also runs an expense analysis and a compliance check: in this particular report, what share each type of expense makes up, whether there are duplicate invoices in it, plus the split I just mentioned between personal income tax on executive car use and travel expenses for business car use. And now the good part. As long as you have the electronic invoice, or a photo of the invoice, it can lay those images out for us page by page, ready to print, and at the same time
[02:35] hand us the matching Didi trip statement. Of course we have to drop the trip statements into that folder too. But you’ll notice Didi’s trip statement is really ugly, and the way it wraps lines it can’t fit many trips onto one page. So this skill also reformats the Didi trip statement and attaches it behind each of these consolidated invoices. Once it’s printed out, we still have to paste the paper invoices in—if you have paper invoices, just paste them in the right spots.
[03:01] So this makes the whole expense process simple and clean. Whether you’re an executive who has to submit, fill in, and paste your own expenses because you don’t have an assistant yet, or you run your own company so obviously it falls to you, or you’re a board secretary—you can absolutely use this skill. That monthly expense-pasting chore goes to AI. No problem at all. That’s it for today. See you next episode, bye.