Home / Benchmark
Benchmark 1: SlotKeeper
A booking and waitlist app for a demo yoga studio. It covers sign-up, a database, forms, validation, owner-only pages and a public deploy: what a non-technical founder actually needs.
The prompt (pasted word for word into every tool)
Build a web app called "SlotKeeper" for a small service business to take bookings. Public side (no login needed): - A landing page showing the business name "Maple Yoga Studio" and a list of upcoming time slots (date, start time, duration, spots left). - Clicking a slot opens a booking form: full name, email, phone (optional), notes (optional). Validate that name and a valid email are required. - If a slot has spots left, booking it reduces spots by 1 and shows a confirmation page with the booking details. - If a slot is full, the button says "Join waitlist" instead, and the same form adds the person to that slot's waitlist with their position number. - The same email cannot book the same slot twice. Owner side (login required): - Email + password sign up and login for the owner. Only logged-in owners can see the admin area; logged-out visitors trying /admin are redirected to login. - Admin dashboard: create, edit, and delete slots (date, start time, duration in minutes, capacity). - For each slot, see the list of bookings and the waitlist. The owner can cancel a booking; when a booking is cancelled, the first person on the waitlist is automatically moved into the booking. - A simple stats line at the top: total upcoming slots, total bookings, total waitlisted. Requirements: - Store all data in a real persistent database (data must survive a page refresh and a redeploy). - Clean, modern, mobile-friendly design. - Seed 3 example slots for the next 7 days, one of them with capacity 1. - Deploy it to a public URL I can share.
Identical text was pasted into every tool. After it: up to 5 fix prompts that only describe observed behaviour.
Who was tested, when, on what plan
| Tool | Tested | Plan | App URL as recorded | Score |
|---|---|---|---|---|
| Bolt.new | Oct 21, 2026 | Free | slotkeeper-booking-w-wqsh.bolt.host (Bolt.new's app, opens in a new tab) | 94.75 |
| Base44 | Oct 14–15, 2026 | Free | maple-slot-flow.base44.app (Base44's app, opens in a new tab) | 93.5 |
| v0 | Oct 22, 2026 | Free | slotkeeper-booking-app-ku.vercel.app (v0's app, opens in a new tab) | 90.875 |
| Lovable | Oct 21–22, 2026 | Free | slotkeeper.lovable.app (Lovable's app, opens in a new tab) | 87.25 |
| Replit Agent | Oct 24, 2026 | Free | slot-keeper-booking-app--ownersenderrepl.replit.app (Replit Agent's app, opens in a new tab) | 83.625 |
| ChatGPT Codex | Oct 25, 2026 | ChatGPT Plus features (a Pro account limited to Plus) | slotkeeper-maple-yoga.netlify.app (ChatGPT Codex's app, opens in a new tab) | 82.5 |
| Cursor | Oct 22, 2026 | Free | No public URL | 13 (partial) |
NoteLovable: Under review: 86.25 if our 5-point critical-bug rule is applied (the scorecard took 4). Corrections.
NoteReplit Agent: 87.625 if time counts to the agent's 13-minute finish, which would rank it above Lovable (87.25, or 86.25 under review). Corrections.
NoteChatGPT Codex: General-AI baseline, not ranked: a Plus-level plan, 2 fix prompts and a human-made hosting account. Bug score under review: 83.5 under our −1-per-minor rule. Corrections.
Checklist results
| Checklist item | Bolt | Base44 | v0 | Lovable | Replit | Codex | Cursor |
|---|---|---|---|---|---|---|---|
| 01. Landing page lists the 3 seeded slots with spots left. | PASS | PASS | PASS | PASS | PASS | PASS | PASS |
| 02. Booking with a valid name and email succeeds, a confirmation shows, and spots go down by 1. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 03. A missing name or invalid email is rejected with a clear message. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 04. Data persists after a hard refresh (redeploy not tested). | PASS (refresh) | PASS (refresh) | PASS (refresh) | PASS (refresh) | PASS (refresh) | PASS (refresh) | NOT TESTED |
| 05. A full slot (capacity 1, after one booking) shows "Join waitlist" and assigns a waitlist position. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 06. The same email can't double-book the same slot. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 07. The owner can sign up and log in, and logged-out /admin redirects to login. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 08. The owner can create, edit and delete a slot. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 09. Cancelling a booking promotes the first waitlisted person automatically. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
| 10. Stats line counts are correct, and it all works on the public deployed URL. | PASS | PASS | PASS | PASS | PASS | PASS | NOT TESTED |
Scores by criterion
| Criterion | Bolt | Base44 | v0 | Lovable | Replit | Codex | Cursor |
|---|---|---|---|---|---|---|---|
| Works end to end (max 30) | 30 | 30 | 30 | 30 | 30 | 30 | 3 |
| Time to first working version (max 15) | 15 | 15 | 12 | 12 | 8 | 9 | 0 |
| Bugs (max 15) | 11 | 11 | 12 | 9 | 10 | 11 | 0 |
| Design / UX (max 15) | 13.75 | 12.5 | 11.875 | 11.25 | 10.625 | 12.5 | 0 |
| Deploy ease (max 15) | 15 | 15 | 15 | 15 | 15 | 10 | 0 |
| Cost (max 10) | 10 | 10 | 10 | 10 | 10 | 10 | 10 |
| Total /100 | 94.75 | 93.5 | 90.875 | 87.25 | 83.625 | 82.5 | 13 (partial) |
NoteLovable: Under review: 86.25 if our 5-point critical-bug rule is applied (the scorecard took 4). Corrections.
NoteReplit Agent: 87.625 if time counts to the agent's 13-minute finish, which would rank it above Lovable (87.25, or 86.25 under review). Corrections.
NoteChatGPT Codex: General-AI baseline, not ranked: a Plus-level plan, 2 fix prompts and a human-made hosting account. Bug score under review: 83.5 under our −1-per-minor rule. Corrections.
- Points earned
- Points lost
- Bar segments, left to right: works 30 · time 15 · bugs 15 · design 15 · deploy 15 · cost 10
What we didn't test
- Data surviving a redeploy (all tools). Checklist item 4 was credited after a refresh check only; see corrections.
- A second owner trying to read another owner's data (all tools).
- Whether database keys are exposed in the browser (Bolt; not checked on the others).
- Backend reads without logging in (Base44 was probed at the UI level only).
Known limits
- One general agent so far: ChatGPT's Codex ran as the baseline on Oct 25, on a Plus-level plan. Claude, Grok and Gemini weren't asked to build the app; they're added at the retest. See categories.
- Specialists on free plans only: no cheapest-paid-plan runs yet.
- One app type: a booking app.
- One run per tool, so luck matters and we can't show spread yet.
- One design reviewer.
- Tools change often; every result is dated.
- Not tested yet: Emergent, Claude Code.