Tool Comparison · AI Development Series
A fair assessment of the main AI coding tools. What each is genuinely good for, where each bites, and when you need real engineering rather than a generated prototype.
These four tools are often discussed together but they are not the same thing. The distinction that matters most: is the tool designed to assist a developer, or to replace one?
Lovable (formerly GPT Engineer) generates full-stack web applications from text descriptions. You describe what you want and it produces a working application, typically with a frontend, backend, and database. For getting something in front of users quickly, it is genuinely impressive. For building something you will rely on, it has consistent and predictable failure modes.
Bolt by StackBlitz generates full-stack web applications in the browser, with no local setup required. The friction-free experience is part of the appeal: you can go from description to running application without installing anything. The engineering limitations are essentially the same as Lovable, because the core approach is the same: generate code to satisfy a description, without understanding the business or its constraints.
v0 by Vercel generates React and Next.js UI components from descriptions. It is more narrowly scoped than Lovable and Bolt: it produces frontend interfaces, not full applications. This limits some of the worst failure modes, because it is not generating backend logic, database schemas, or access control. A developer can use v0 to quickly scaffold a UI and then build the engineering underneath it properly. Used this way, it is a legitimate acceleration tool.
Cursor is an AI-powered code editor. It is not an app generator. It assists developers who are writing code: suggesting implementations, explaining existing code, generating tests, spotting bugs. The human is in the loop throughout. The developer decides what to build and reviews what the AI suggests. This is AI-assisted development done properly, which is why we use it ourselves.
The distinction that determines whether AI tools produce reliable software or a liability is simple: is a human with engineering judgement in the loop?
Used by a developer who understands the codebase, reviews the output, and takes ownership of what is accepted. The AI accelerates; the human decides. This is how we use Cursor every day.
Used as a replacement for engineering judgement. The human describes; the AI decides. Nobody reviews or understands the output. The code is generated without accountability. This is vibe coding.
For prototypes, proofs of concept, and single-user internal tools, yes. For multi-user applications handling real business data, the consistent problems (missing access controls, structureless databases, concurrency failures) make it a risk rather than a solution. It is not a replacement for engineering. It is a prototype tool.
If it handles only your own data or a small number of trusted users, probably not urgently. If it handles data belonging to multiple separate accounts, you should get it reviewed. The most common Lovable failure mode is missing access controls between users, which means users can potentially see each other's data. This is not a theoretical risk: we have seen it in production. An audit will tell you whether it is present in your application.
Cursor is an AI-powered code editor that assists developers rather than replacing them. A developer using Cursor is still making every architectural and structural decision; the AI is helping them write code faster. This is fundamentally different from Lovable and Bolt, which generate entire applications from descriptions with no developer in the loop. We use Cursor ourselves. The distinction is whether the human is thinking about the system or the AI is.
We use AI tools properly every day. We also rescue what they build when nobody is looking. We can help with both.
We reply within one working day.