I recently set out to recreate a tool that has become essential to my monthly workflow: a Receipt Cover Page Generator. It handles the tedious parts of my corporate credit card expenses—prepending a Duke-branded cover sheet, remembering my specific fund codes, and auto-renaming PDFs to a strict “Vendor – Amount – Date” convention.
I had it running perfectly on my local machine using Claude Cowork. But when I moved to a different computer and tried to recreate it from scratch, I ran into a wall that every “Vibe Coder” needs to understand.
Chapter 1: From Local Power to the “Gemini Wall”

Originally, I built this using Claude Cowork. Cowork is a beast because it runs directly on your hard drive; it sees your files and executes code locally. It’s like having a senior developer sitting at your desk. But when I gave that computer to my wife, I needed a fresh version because it only ran on that computer.
I turned to Gemini to recreate the app. I gave it the same requirements: the fund codes, the naming conventions, and the logic. Gemini did exactly what I asked—it wrote the code.
But there was a catch.
Gemini’s philosophy is “Function First, Style Later.” It handed me a basic, utilitarian script that felt like a science project. More importantly, it was a car without an engine. To make Gemini’s version work, I eventually realized I would have to:
-
Manually go out and get an API Key from a separate developer console.
-
Figure out how to bypass CORS security blocks in the browser.
-
“Wire up” the brain to the body myself.
It was actually super frustrating because it tried version after version and the vendor name for example would not work. It just kept trying to figure it out but never mentioned that, “Hey, you may want to use AI”. They were building an app, but since I didn’t request AI, it didn’t even ask that as a choice. Claude assumes that you are building an app with AI which could also cause a problem.
Gemini gave me a technically accurate blueprint, but it left me to do all the heavy lifting of the construction. It didn’t suggest that I wasn’t actually “using AI” yet—it just let me figure out on my own that the app was hollow.
Chapter 2: The Claude Web “Turnkey” Solution
When I realized I needed to use an API for Gemini, I went back to the Claude Web interface. I asked it to build Version 1 again. The difference was night and day, and it came down to two things: UX and Invisible Plumbing.

While Gemini focused on the raw logic (and left the styling for later), Claude cared about the User Experience from the very first prompt. It didn’t just give me code; it built a polished, professional interface that looked like a finished corporate tool immediately.
But the real magic was the Integrated API.
Because I was using Claude’s Artifacts feature within the browser, I didn’t need to hunt for an API key. Claude automatically “plugs in” its own brain to the app it just built. It handled the authentication and the security handshakes behind the scenes. It wasn’t just an architect; it was the builder, the interior designer, and the utility company all in one.
And its purdy and fancy:

The Verdict: UI vs. Utility
The contrast between the two was startling:
-
Gemini felt like a manual: “Here is how you could build this if you have the time to wire it up.”
-
Claude felt like a coworker: “Here is your app. I’ve already filled in your name (Stephen Toback), I’ve formatted the Duke branding, and I’m ready to process your PDFs.”
Claude remembered that “Anthropic” receipts go to 677600 (Computer Software) and labeled them “AI Tools” without me having to re-explain the logic every time.
The Takeaway
If you are building your own micro-apps, you have to decide what you want to be: a Developer or a User.
If you want to spend your time debugging API connections and styling CSS buttons from scratch, the “manual” route Gemini offers is fine. But if you want to “Vibe Code”—where your intent is instantly transformed into a working, beautiful, and connected tool—you need an environment that handles the infrastructure for you. You do have to deal with the “inside of Claude” limitations if you don’t want to mess with an API.
I went from a broken script to a professional-grade tool in one try. Sometimes, the “vibe” isn’t just about the code—it’s about the AI knowing that a tool is useless if the brain isn’t already plugged in.