Every AI app builder claims you can ship a real product in an afternoon. The marketing pages all look the same. So I ran a test: same prompt, five builders, scored on the things that actually matter when you're going to live with the output for months.
The five tested: Lovable, Bolt.new, v0, Base44, and WebTwizz (yes, I work on WebTwizz, scoring is below). Skipping Cursor and Replit because they're code editors / cloud IDEs, not chat-to-app builders.
The prompt
Build a SaaS landing page for a tool called PixelPlan, a project management
app for designers. Include: hero with headline, signup CTA, three feature
cards, pricing with Free / Pro / Team tiers, FAQ section, footer. Then add
a /signup page with email + password auth, a /dashboard page that lists
projects after login, and Stripe checkout when someone clicks "Upgrade to
Pro". Use Supabase for the database.
Roughly the shape of a real SaaS MVP. Auth, paid upgrade flow, persistent data, marketing site. Things you'd actually ship.
Methodology
Five dimensions, scored 1-5:
- First-prompt completeness: How much of the spec landed correctly on the first try?
- Time to working preview: From prompt sent to clickable app.
- Iteration quality: When I tweaked something (move a section, change a color, fix copy), how painful was it?
- Code ownership: Can I export, read, and migrate the source if I want to leave?
- Polish at the end: After 30 minutes of work, is it shippable?
No comparison test is perfectly fair. Each tool had its conventions and quirks. I tried to give each a clean run, then iterated for ~30 minutes to see what the dev loop felt like.
Lovable
First prompt produced a clean React + Vite project with Tailwind. The hero, feature cards, pricing, and FAQ landed in roughly the right shape. Auth scaffolding was wired to Supabase out of the box, which saved real time. Stripe integration required a follow-up prompt and adding a few secrets by hand, which Lovable walked me through inside chat.
Iteration is where Lovable felt slowest. Every small change ("make the hero font 4xl instead of 3xl," "move the FAQ above the footer") was a chat round-trip. The recently-shipped inline edits handle text and basic styling, but anything structural still goes through prompts. By minute 25 I had used a noticeable chunk of my message allowance.
Scores: First-prompt 4 / Time to preview 4 / Iteration 2 / Ownership 4 (GitHub sync) / Polish 4. Total: 18/25.
Bolt.new
Bolt's WebContainer started running the project as the AI was building it, which is genuinely cool to watch. Output landed in a standard React project (you can pick frameworks; I used the default). The first generation got the marketing site mostly right but skipped the dashboard route. Two follow-up prompts to add /signup and /dashboard. Auth and Stripe required walking through their boilerplate manually because Bolt isn't pre-wired for either.
Editing was prompt-only. No visual editor. Tokens burned fast on iteration. By the end I'd used about 40% of my daily allowance just on this single project.
Scores: First-prompt 3 / Time to preview 5 (live in-browser) / Iteration 2 / Ownership 5 (full export) / Polish 3. Total: 18/25.
v0 (Vercel)
v0 isn't really designed for this prompt. It generated three beautiful components: a hero, a pricing block, and a feature card grid. They were the prettiest output of the five. But there was no app: no /signup, no /dashboard, no Stripe wiring. v0 hands you components and assumes you have a project to drop them into.
For an honest evaluation, I'd say v0 failed this test, but only because the test was wrong for the tool. If I'd asked for "design a beautiful pricing section with 3 tiers and a comparison table," it would have aced it.
Scores: First-prompt 1 (out of category) / Time to preview 5 / Iteration 3 (click-to-prompt) / Ownership 5 (you write the project) / Polish 5 (component-level). Total: 19/25, with a category caveat.
Base44
Base44 produced the most "complete-feeling" first output: an actual app with auth working out of the box (no secrets to set up), a dashboard, a pricing page, and a working upgrade flow. That's because Base44 runs apps on its own infrastructure with built-in primitives. You don't add secrets; you don't deploy anything; it just works.
The catch: I asked for code and there isn't really code in the export sense. Base44 apps run on Base44. Iteration was prompt-driven and reasonably fast. Polish was high because every Base44 app inherits the platform's design system. But "ownership" in any meaningful sense is low. If I ever want to migrate this app off, I'm rebuilding it.
Scores: First-prompt 5 / Time to preview 5 / Iteration 3 / Ownership 1 / Polish 4. Total: 18/25.
WebTwizz (full disclosure: I work here)
First prompt produced a real code project with the marketing site, /signup, /dashboard, and Stripe-ready scaffolding. Supabase integration was OAuth-connected, no secrets to copy by hand. The hero, feature cards, pricing, and FAQ all landed correctly. Stripe Connect required clicking through OAuth to my Stripe account once.
Iteration is where WebTwizz showed the difference. Moving sections, adjusting padding, swapping the hero copy, tightening the pricing layout: all by clicking and editing in the visual editor. The AI handled the bigger moves (adding a testimonials section, generating new copy variants); the visual editor handled the small fixes that pile up. By minute 25, I'd burned ~80 credits and the app was in shape to publish.
Bias disclosure: I work on WebTwizz, which means I know how to use it well. If you're new to any of these, your first hour is mostly figuring out the tool's conventions, not the tool's quality. Take this section with the appropriate grain of salt.
Scores: First-prompt 4 / Time to preview 4 / Iteration 5 (visual editor) / Ownership 5 (full source zip) / Polish 5. Total: 23/25.
The scoreboard
| Tool | First prompt | Speed | Iteration | Ownership | Polish | Total |
|---|---|---|---|---|---|---|
| WebTwizz | 4 | 4 | 5 | 5 | 5 | 23 |
| v0* | 1 | 5 | 3 | 5 | 5 | 19 |
| Lovable | 4 | 4 | 2 | 4 | 4 | 18 |
| Bolt.new | 3 | 5 | 2 | 5 | 3 | 18 |
| Base44 | 5 | 5 | 3 | 1 | 4 | 18 |



