A Weekend Rebuilding My Invoice Script With Gemini 2.5 Pro

A Weekend Rebuilding My Invoice Script With Gemini 2.5 Pro

Tech News ai-coding deepseek gemini-2.5-pro llm-comparison

So I did something dumb this weekend: I rebuilt my invoice generator script three separate times, once with Claude, once with Gemini, and once by hand out of spite, just to see what would happen. Google shipped Gemini 2.5 Pro last week (the "experimental" one, which is a very Google thing to call a model that's already sitting on top of the leaderboard) and I'd been putting off actually trying it because I'm lazy and my API key situation is a mess of half-remembered passwords. Saturday morning, coffee, decided to finally sort it out.

The short version: it's good. Genuinely good, not marketing-good. I gave it a gnarly little Python script I use to spit out PDF invoices for freelance work, told it to add tax-rate handling per line item instead of per-invoice, and it just did it, correctly, on the first try, including a case I hadn't thought to mention where a line item has zero quantity and shouldn't be taxed at all. That's the kind of edge case I usually catch on the third bug report from myself two weeks later.

What actually impressed me wasn't the one-shot correctness though, it was the context window. I dumped basically my whole invoicing folder in there, six files, some old CSV exports, a half-finished README from 2023 that I'd forgotten existed, and it didn't lose the thread. A million tokens of context sounds like a spec sheet number until you're the one pasting in a folder you're mildly embarrassed by and the model doesn't blink.

None of this means I'm switching my daily driver over. I still reach for Claude first out of habit more than anything defensible, and habit is underrated as a reason to do things, whatever the benchmark charts say this month. There's also something about Gemini's answers that reads a little like a book report sometimes, very complete, very organized, occasionally over-explained when I just wanted the code block. Small complaint, doesn't really matter, but it's the kind of thing you notice at 11pm on a Saturday when you just want the diff and not three paragraphs of context you already know.

Also worth saying, since it's been sitting in a browser tab all week: DeepSeek quietly pushed out an updated V3 checkpoint a few days before Gemini's launch, fully open weights, MIT license, no paywall, no waitlist. I haven't run it locally yet because my GPU situation at home is one 3080 held together with what I can only describe as optimism, but the benchmark numbers people are posting for front-end coding tasks are not nothing. It's a strange month where the "free, download it yourself" model and the "biggest company on earth's flagship" model both got real upgrades within days of each other. A year and a half ago that would've been a whole news cycle by itself. Now it's just Tuesday.

Anyway. The invoice script works now, all three versions actually, though the hand-written one took me forty-five minutes and has a bug I haven't found yet. I'm sure of it. There's always one.

One tangent since I'm already off the rails: I switched my terminal font to something called Berkeley Mono a couple weeks back after years of Fira Code, and it's done more for my day-to-day happiness than any model upgrade has. Twenty-five bucks, one license, and I stare at it for eight hours a day. Genuinely can't believe I waited this long. If you're the type who reads a fourteen-year-old tech blog for AI model comparisons, go buy a font instead, you'll get more out of it per dollar.

Back to the actual point. If you're deciding between these two for coding work right now, my honest take: Gemini 2.5 Pro is better at holding a big pile of context without dropping details, and it's free to try in AI Studio if you don't mind the rate limits. Claude still feels more like it's actually reasoning about what you want versus pattern-matching toward an answer, though that's a vibe more than a benchmark and I'll cop to that. Try both on your own weird janky scripts, not on some clean toy example, that's where the differences actually show up. The toy examples all look the same now. It's the six-file folder with the embarrassing README that tells you something.

Going to go find that bug in my hand-written version now. Wish me luck.