We are drowning in frontier models. Last week alone gave us Claude Opus 4.5 and Google’s Gemini 3. Keeping up isn’t a hobby anymore; it’s a second full-time job.
But looking at benchmark charts tells you nothing about shipping software. A single demo doesn’t represent the chaos of production. Planning a feature is different from debugging a race condition. Greenfield development is a vacation compared to refactoring legacy spaghetti code.
To actually understand these tools, you have to push them into the mud. We built the same full-stack invoicing app (Ruby on Rails, React, Tailwind) twice—once with Opus 4.5, once with Gemini 3. Same spec. Same prompts.
Here is what actually happened when the rubber met the road.
The Strategy: Spec-Driven Development
If you are prompting “build me an app” and hoping for magic, you’re doing it wrong. The secret weapon isn’t the model; it’s the prep.
We used a Spec-Driven Development approach. Before writing a line of code, we fed both agents a product-overview.md file. This isn’t just a prompt; it’s architectural context. We also injected a custom “Front-End Design Skill” markdown file into the context window—a set of heuristics to force the AI to care about whitespace, typography, and mobile responsiveness.
This is where the battle was actually fought.
The Opus 4.5 Experience
Opus felt heavy. Deliberate. When asked to plan the frontend, it engaged in a Q&A session that felt surprisingly human. It didn’t just say “okay.” It asked about navigation hierarchy and specific Google Font choices.
The Build:
- Planning: It generated a comprehensive implementation plan stored directly in the ~/.claude/plans directory.
- Execution: The UI came out polished. It respected the padding rules. It nailed the “emerald green” aesthetic we requested.
- The Nuance: Opus 4.5 has taste. The dashboard metrics had subtle hover effects and clean visual hierarchy without being explicitly told to add “delight.”
The Gemini 3 Experience
Gemini is fast. Terrifyingly fast. Running inside Cursor’s Agent mode, it ripped through tasks in roughly half the time it took Opus. But speed kills.
The Build:
- The Hallucination: Gemini tried to import a component called LayoutLogs from lucide-react. That library doesn’t exist. When confronted, it apologized and fixed it. This is a reminder: trust, but verify.
- The Friction: In Cursor’s plan mode, Gemini didn’t automatically generate the checklist of to-dos. It needed a manual nudge (“Create a to-do list for this plan”) to actually lock in the steps.
- The UI: Functional, but tight. The padding was claustrophobic. It missed dark mode support on the first pass, despite the prompt explicitly requiring it.
The Verdict: Convergence
Here is the uncomfortable truth: The models are converging.
Opus 4.5 feels slightly more refined for architectural decisions and design nuance. Gemini 3 is a brute-force speed demon that requires a bit more babysitting on the details.
But the gap is negligible.
We are leaving the era where the specific model you use is the deciding factor. We are entering the era where your Taste and your Architecture are the unfair advantages. The builder who can write a killer spec and direct the AI agent will crush the builder who is just waiting for GPT-6 to save them.
The tools are ready. The bottleneck is now you.









