Home › Research › Hands-on test
Hands-on test · run on 2026-09-26first versions let ten simultaneous bookings into an eight-spot class (check T05)
If people can book the last spots at the same moment, test that case yourself: the builders' own tests did not catch it.
One run per builder on one day: a case study, not a ranking of the tools.
26 September 2026
26 September 2026 · re-test after a relevant product change; repeat runs are planned as a protocol series
On the morning of 26 September 2026 we gave Lovable, Replit and Emergent the same prompt for a small class-booking web app, on each one's free plan, and then tested what they built against 18 checks we wrote down before the first build. Where a check failed, the builder got up to three repair prompts, always in the same words. This is one run per builder: a case study, not a ranking.
When ten people tried to book the last spots of an eight-person class at the same moment, only Lovable's first version stopped at eight. Replit's and Emergent's first versions accepted all ten, and Replit's public schedule then went blank. Both were fixed after we described the failure, Replit in one repair prompt and Emergent in two.AIBuilder Marketplace, hands-on test, 2026-09-26. Free to quote with attribution.
Sent as the first and only message to each builder, word for word:
Build a web app for a one-person yoga studio to take class bookings. Requirements: 1. A public page shows the classes for the next 14 days: Monday to Friday at 07:00 and 18:30, Saturday at 09:00, no classes on Sunday. Each class has 8 spots and shows how many spots are left. 2. A visitor books a class by entering a name and an email address. The number of spots left goes down by one. A class with 0 spots left cannot be booked. 3. After booking, the visitor sees a confirmation with a unique link to manage the booking. 4. Through that link the visitor can move the booking to another class that still has spots, or cancel it. Cancelling frees the spot. 5. The same email address cannot book the same class twice. 6. An admin page protected by a password shows all bookings per class, lets the admin cancel any booking, and has a button that exports all bookings as a CSV file with the columns: class date, class time, name, email, status. 7. Bookings are stored in a database and are still there after a page reload and after the app is republished. 8. Publish the app at a public URL. Do not add payments, email sending or user accounts.
Small enough for a free plan, but it contains the things that separate a demo from something a studio could use: a hard capacity limit, a private link, a protected admin page, an export, and data that has to survive a redeploy. Payments and email were left out on purpose, because they need accounts with third parties and would have made this a test of those services instead.
First version, and where it changed, the result after a repair prompt.
| Check | Lovable | Replit | Emergent |
|---|---|---|---|
| T01 Published at a public URL | Pass | Partialmanual Publish click; free deployments expire | FailDeploy needs a paid plan |
| T02 14-day schedule, 8 spots | Pass | Pass | Pass |
| T03 Booking lowers the count | Pass | Pass | Pass |
| T04 Confirmation with private link | Pass | Pass | Pass |
| T05 Full is full (10 at once) | Pass8 accepted, 2 refused | Fail10 of 10 accepted, schedule went blank → Pass after repair 1 | Fail10 of 10 accepted → still failed after repair 1 → Pass after repair 2 |
| T06 No double booking | Pass | Pass | Pass |
| T07 Move a booking | Pass | Pass | Pass |
| T08 Cancel frees the spot | Pass | Pass | Pass |
| T09 Link cannot be guessed | Pass | Pass | Pass |
| T10 Admin needs the password | Pass | Pass | Pass |
| T11 Password not visible in the browser | Pass | Pass | Failin the CSV export URL → Pass after repair 1 |
| T12 Admin overview per class | Pass | Pass | Pass |
| T13 Admin can cancel | Pass | Pass | Pass |
| T14 CSV with the five columns | Pass | Pass | Pass |
| T15 Rejects bad input | Pass | Partialname of only spaces saved → Pass after repair 1 | Partialname of only spaces saved → Pass after repair 1 |
| T16 Data survives a republish | Pass | Pass | Not testedcould not publish; see below on deleted data |
| T17 Usable at 390 px | Pass | Pass | Partialpage 494 px wide → Pass after repair 1 |
| T18 Code and data export | Passcode built outside Lovable; needs your own database to run | Passzip export ran outside Replit on our own database; admin password travels in the export | Not testedGitHub integration from Standard |
T18 for Lovable was run on 26 September 2026. We connected GitHub with access limited to one empty repository; Lovable created its own repository with the full source and the database migrations, and committed no secret keys. Outside Lovable, on Node 22, the code installed and built without errors. It did not run on its own: the page loaded, but no classes did, because the database service key and the admin password stay inside Lovable. To move it you set up your own database from the migrations and take the bookings with you as the admin CSV (T14) or Lovable's full database export, which we did not trigger. T18 for Replit was run the same evening from the project's zip export on the free plan. It held the full source and its git history, but none of the data. Outside Replit the code installed and built with pnpm 10 (pnpm 12 refused) once two settings Replit normally supplies, PORT and BASE_PATH, were set, and it ran against a new, empty Postgres database of our own: the tables were created, a booking was accepted and counted, and the admin login refused a wrong password. One thing to know before you share or connect the code: the admin password the agent picked sits as a plain value in the project's .replit file and in its git history, so it goes wherever the export or a GitHub copy goes. Change it after exporting. For Emergent, T18 was checked in settings and documentation only.
| Lovable | Replit | Emergent | |
|---|---|---|---|
| Plan and mode | Free, Build mode | Starter (free), Free agent mode, Power and Max locked | Free, web app |
| First working version | about 10 minutes | 8 minutes of agent work (Replit's own count) | about 9 minutes to a preview |
| Repair prompts needed | 0 | 1 (2 minutes) | 2 (about 5 minutes each) |
| Credits | 4 of the 10 on a new account | not shown on the free plan; daily allowance used up after repair 1 | 19.17 for the two repairs (34.66 to 15.49) |
| Publishing on the free plan | one click, stays online, “Edit with Lovable” badge | manual Publish click; “Free deployments are temporary and will expire”; “Made with Replit” badge | not possible: Deploy opens the plan chooser ($1 seven-day trial, then $20 a month) |
Emergent's balance rose from 10.00 to 34.66 during the first build without any purchase, and the app does not show why, so the cost of its first build cannot be stated. Lovable's new account started with 10 credits (five daily plus five that expire on 26 September 2027), not the five a day its pricing page leads with.
Asked two questions of its own: whether to create a project from the chat, and whether to publish. After that it built, published and tested its own flows (booking, double booking, moving, cancelling), deleted its test booking and told us what it had assumed: an invented studio name, a temporary admin password and Amsterdam time.
It was the only one whose first version held the capacity limit under simultaneous bookings. It also checked input on the server, not only in the form, and prefixed CSV values that start with = + - or @ so a spreadsheet does not run them as formulas. Nobody asked for that.
Built a separate API and web app on PostgreSQL, ran its own functional pass and reported everything green. It did not publish: “Replit requires the final Publish action”, so a person has to press the button.
Its self-test booked one at a time. Ten at once got all ten in, after which the class list endpoint returned an error and the public page said “No classes on the calendar yet” until two bookings were cancelled. Told exactly that, it added a database lock per class in two minutes and got it right. The free daily allowance was gone after that one repair.
Asked five clarifying questions (we let it choose), used a separate design agent and a testing agent, and suggested extra features at the end. Its first version overbooked, put the admin password in the export URL, saved a blank name and did not fit a phone screen.
The first repair fixed three of the four, but while “clearing test data” it dropped the entire bookings collection, which deleted all our test bookings and also the index its capacity fix relied on. The second repair added a lock and passed. It deleted all bookings again while cleaning up. On the free plan the app could not be published at all.
One run per builder on one day does not support a winner, so this is what the run does support.
Our full reviews: Lovable · Replit · Emergent. How we separate researched reviews from hands-on ones: how we review.
Download everything for edition 2026-09-26 (.zip)
Edition 2026-09-26. Every file below is the analysis input or output of this edition; the checksums let you confirm you have the same bytes we published. The manifest carries the population, period, definitions and counts. A rebuild of this page is not a new measurement: new rounds become new editions, and a changed edition carries a correction note.
| File | Size | SHA-256 |
|---|---|---|
| results.json | 11,865 bytes | 10aae28cb5803d8c… |
| Edition | Status | Headline | Data |
|---|---|---|---|
| 2026-09-26 | current | 2 of 3: first versions let ten simultaneous bookings into an eight-spot class (check T05) | manifest |
Archived on Zenodo with a DOI: 10.5281/zenodo.23345681 (always resolves to the newest edition). This edition: 10.5281/zenodo.23345682. The Zenodo copy holds the same data files; screenshots of vendor software stay on this page only.
Licence: CC BY 4.0. Our own data, analysis, tables and charts. Quoted vendor text and screenshots of vendor pages remain the vendor's; we reproduce them as evidence. Questions, corrections or a vendor response: daniel@aibuildermarketplace.com · press & data.
AIBuilder Marketplace, “One Booking App, Three AI Builders: What Actually Worked”, hands-on test run on 2026-09-26. Free to quote and reproduce with attribution (CC BY 4.0).