{
 "schema_version": "1.0",
 "id": "lovable",
 "name": "Lovable",
 "research_status": "researched",
 "vendor_domain": "lovable.dev",
 "category": "IT & Productivity",
 "task": "AI development, agents & data",
 "summary": "AI app builder that turns a written description into a web app with a database and hosting, published to a lovable.app address in one click. Billing is in credits whose cost per message depends on the work, and a published app's backend runs on a separate monthly Cloud allowance.",
 "best_for": "founders, marketers and small teams who want a working web app with a database from a written description, online the same day without setting up hosting",
 "skip_if": "your app must keep saving data all month on a zero budget, or your team wants to write and review the code itself rather than prompt for changes",
 "honest_knock": "You do not know what a change costs until it is done. Lovable prices each build message by the work it turns out to involve, from about half a credit for a styling tweak to two credits for a page with images, so a credit budget is an estimate, not a price list. The second catch is easy to miss: the app you publish runs its database, hosting and AI features on a separate monthly Cloud grant of 20 credits. Lovable's own documentation says a published app stays live when those credits run out, but its backend services and AI features pause, so an app that works on day one can stop saving data later in the month. The larger Pro tiers are no cheaper per credit until 1,200 credits a month, so buying ahead saves nothing below that.",
 "pricing": {
  "status": "see_details",
  "entry_price": null,
  "entry_price_terms": null,
  "from_price_usd_month": null,
  "plans": [
   {
    "name": "Free",
    "price": "Free",
    "includes": "5 build credits/day, capped at 30/month, no rollover; plus Cloud grant 20 credits + 4 AI credits"
   },
   {
    "name": "Pro",
    "price": "25 euros a month for 100 credits",
    "includes": "Custom domains, remove badge, credit rollover 1 month, top-ups, user roles"
   },
   {
    "name": "Business",
    "price": "50 euros a month for the same 100 credits",
    "includes": "Adds SSO, security center, internal-only publishing, personal projects"
   },
   {
    "name": "Enterprise",
    "price": "platform fee on volume pricing",
    "includes": ""
   }
  ],
  "plans_source": "summarised from pricing.notes; every plan name and amount appears verbatim in those notes",
  "notes": "(read 2026-09-26 on lovable.dev/pricing from a European exit, so shown in euros including VAT, and in Lovable's plans-and-credits documentation) Free: 5 build credits a day, capped at 30 a month, which do not roll over; plus a monthly Cloud grant of 20 credits for hosting and backend services and 4 credits for AI features inside published apps. Pro starts at 25 euros a month for 100 credits, with a dropdown of larger credit tiers: 200 for 50 euros, 400 for 100 euros and 800 for 200 euros keep the same 25 cents a credit, and the discounts only start at 1,200 credits for 294 euros (2%), rising to 10% at 5,000 credits for 1,125 euros. Pro adds custom domains, removing the Lovable badge, credit rollover for one month, on-demand top-ups and user roles. Business starts at 50 euros a month for the same 100 credits and adds SSO, a security center, internal-only publishing and personal projects. Enterprise is a platform fee on volume pricing. Yearly billing is advertised as two months free. What a message costs depends on the work: the documentation gives about 0.50 credits for a styling change, 1.20 for adding authentication and 2.00 for a landing page with images, and Plan mode costs 1 credit a message.",
  "verified_at": "2026-09-26",
  "source_url": null,
  "schema_offer": {
   "price": 25.0,
   "currency": "EUR",
   "description": "Pro, per month, billed month-to-month. From our pricing notes: “Pro starts at 25 euros a month for 100 credits” Read on the vendor's own pricing page on 2026-10-09.",
   "page": "https://officesoftwaremarketplace.com/lovable-review.html"
  },
  "source_quotes": null,
  "recent_change": null
 },
 "free_plan": true,
 "free_plan_evidence": "(read 2026-09-26 on lovable.dev/pricing from a European exit, so shown in euros including VAT, and in Lovable's plans-and-credits documentation) Free: 5 build credits a day, capped at 30 a month, which do not roll over; plus a monthly Cloud grant of 20 credits for hosting and backend services and 4 credits for AI features inside published apps.",
 "cost_traps": [
  {
   "id": "usage_metered",
   "label": "Usage-metered",
   "evidence": "(read 2026-09-26 on lovable.dev/pricing from a European exit, so shown in euros including VAT, and in Lovable's plans-and-credits documentation) Free: 5 build credits a day, capped at 30 a month, which do not roll over; plus a monthly Cloud grant of 20 credits for hosting and backend services and 4 credits for AI features inside published apps.",
   "verified_at": "2026-09-26",
   "source_url": null
  }
 ],
 "compare_with": {
  "name": "Replit Agent, Emergent or Bolt",
  "why": "AI app builders that also charge per unit of work; in our one-prompt test of three of them, Lovable's first version was the only one that held a booking limit under simultaneous requests"
 },
 "links": {
  "record": "https://aibuildermarketplace.com/api/v1/products/lovable.json",
  "review": "https://officesoftwaremarketplace.com/lovable-review.html",
  "marketplace": "https://aibuildermarketplace.com/marketplace/lovable/",
  "vendor_site": "https://lovable.dev"
 },
 "purchase": {
  "seller": "the vendor",
  "how": "AIBuilder Marketplace does not sell this software. Sign up, start a trial or buy on the vendor's site.",
  "handoff_url": "https://lovablelabs.pxf.io/c/7503701/3802905/49205",
  "affiliate": true,
  "disclosure": "Where purchase.affiliate is true, purchase.handoff_url is an affiliate link: AIBuilder Marketplace may earn a commission at no extra cost to the buyer. Commission never changes what a record says, and products are not ranked by commission. Where it is false the link is the vendor's plain site."
 },
 "provenance": {
  "research": "hand-researched dossier, read on the vendor's own pages",
  "researched_since": "2026-07",
  "method": "https://aibuildermarketplace.com/how-we-review/",
  "license": "CC BY 4.0. Credit 'AIBuilder Marketplace' with a link to https://aibuildermarketplace.com/atlas/.",
  "note": "A rebuild is not a new measurement: pricing.verified_at is the date that matters."
 },
 "cost": {
  "status": "available",
  "engine": "https://aibuildermarketplace.com/agents/#cost",
  "rules": {
   "currency": "EUR",
   "unit": "workspace",
   "axis": "users",
   "plans": [
    {
     "id": "free",
     "name": "Free",
     "model": "free",
     "max_units": 1,
     "evidence": "Free: 5 build credits a day, capped at 30 a month"
    },
    {
     "id": "pro",
     "name": "Pro",
     "model": "flat",
     "max_units": 1,
     "monthly": 25,
     "annual_status": "unknown",
     "evidence": "Pro starts at 25 euros a month for 100 credits"
    },
    {
     "id": "business",
     "name": "Business",
     "model": "flat",
     "max_units": 1,
     "monthly": 50,
     "annual_status": "unknown",
     "evidence": "Business starts at 50 euros a month for the same 100 credits"
    }
   ],
   "notes": [
    "Prices shown in euros including VAT from a European exit. Pro and Business include 100 credits; larger credit tiers cost more (200 credits for 50 euros on Pro, and so on).",
    "Yearly billing is advertised as two months free; the yearly figure is not in our notes."
   ],
   "not_computable": [
    "Credits beyond the monthly allowance (top-ups and larger credit tiers) are not in these figures."
   ],
   "rules_verified_at": "2026-10-09"
  },
  "growth": {
   "annual": {
    "product_id": "lovable",
    "currency": "EUR",
    "axis": "users",
    "unit": "workspace",
    "billing": "annual",
    "rows": [
     {
      "units": 1,
      "cheapest_plan": "free",
      "cheapest_plan_name": "Free",
      "total_month": 0.0,
      "billed": {
       "amount": 0.0,
       "every": "month"
      },
      "ranges": [],
      "per_plan": {
       "free": 0.0,
       "pro": "price_unknown_on_billing",
       "business": "price_unknown_on_billing"
      }
     },
     {
      "units": 2,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 3,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 5,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 10,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 15,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 20,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 25,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 50,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 100,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     }
    ],
    "switch_points": [
     {
      "from_units": 1,
      "to_units": 2,
      "from_plan": "free",
      "to_plan": null,
      "from_plan_name": "Free",
      "to_plan_name": null
     }
    ],
    "conflicts": [],
    "unknowns": [
     "Credits beyond the monthly allowance (top-ups and larger credit tiers) are not in these figures."
    ]
   },
   "monthly": {
    "product_id": "lovable",
    "currency": "EUR",
    "axis": "users",
    "unit": "workspace",
    "billing": "monthly",
    "rows": [
     {
      "units": 1,
      "cheapest_plan": "free",
      "cheapest_plan_name": "Free",
      "total_month": 0.0,
      "billed": {
       "amount": 0.0,
       "every": "month"
      },
      "ranges": [],
      "per_plan": {
       "free": 0.0,
       "pro": 25.0,
       "business": 50.0
      }
     },
     {
      "units": 2,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 3,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 5,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 10,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 15,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 20,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 25,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 50,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     },
     {
      "units": 100,
      "cheapest_plan": null,
      "cheapest_plan_name": null,
      "total_month": null,
      "billed": null,
      "ranges": [],
      "per_plan": {
       "free": "not_eligible",
       "pro": "not_eligible",
       "business": "not_eligible"
      }
     }
    ],
    "switch_points": [
     {
      "from_units": 1,
      "to_units": 2,
      "from_plan": "free",
      "to_plan": null,
      "from_plan_name": "Free",
      "to_plan_name": null
     }
    ],
    "conflicts": [],
    "unknowns": [
     "Credits beyond the monthly allowance (top-ups and larger credit tiers) are not in these figures."
    ]
   }
  }
 },
 "unknowns": [
  "Pricing status is 'see_details': no single public entry price.",
  "Contract terms (cancellation, data export, data location, minimum seats) are not researched as separate fields; pricing.notes mentions them only where the vendor's pricing page does.",
  "Being verified: free trial and refund terms are not yet matched to a verbatim line on the vendor's own pages. Not matched does not mean there is none."
 ],
 "verification": {
  "price": "read",
  "free_trial": "being_verified",
  "refund": "being_verified"
 },
 "status_page": null,
 "task_evidence": {
  "structured_checks": [
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T01",
    "task": "Published at a public URL without logging in to the builder",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T02",
    "task": "Next 14 days: Mon-Fri 07:00 and 18:30, Sat 09:00, no Sunday, 8 spots each",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T03",
    "task": "Booking with name and email lowers spots left by one, also after reload",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T04",
    "task": "Confirmation shows a unique manage link",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T05",
    "task": "A full class cannot be booked: 10 simultaneous requests on an empty 8-spot class",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": "8 accepted, 2 refused ('Sorry, this class is full.')",
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T06",
    "task": "Same email cannot book the same class twice (also in capitals)",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T07",
    "task": "Manage link moves a booking: old class +1, new class -1",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T08",
    "task": "Manage link cancels a booking and frees the spot",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T09",
    "task": "Manage link contains a long random token, not a sequence number",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": "UUID v4",
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T10",
    "task": "Admin page refuses access without or with a wrong password (UI and API)",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T11",
    "task": "Admin password not present in page source, JavaScript or URLs",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T12",
    "task": "Admin page lists all bookings per class, consistent with T03-T08",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T13",
    "task": "Admin can cancel a booking; spot freed, status visible",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T14",
    "task": "CSV export with exactly: class date, class time, name, email, status",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": "values starting with = + - @ are prefixed against spreadsheet formula injection",
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T15",
    "task": "Empty name, name of only spaces and invalid email are refused (server side)",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T16",
    "task": "Bookings still there after reload and after republishing",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": "republished 12:07 UTC; all bookings present",
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T17",
    "task": "Schedule, booking and manage link usable at 390 px without sideways scrolling",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": null,
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   },
   {
    "source": "study",
    "study": {
     "slug": "one-booking-app-three-ai-builders",
     "title": "One booking app, three AI builders (hands-on test)",
     "page": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/",
     "run_date": "2026-09-26",
     "method": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/#method",
     "data": "https://aibuildermarketplace.com/research/one-booking-app-three-ai-builders/"
    },
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "plan": "Free",
    "task_id": "T18",
    "task": "Code can be exported (GitHub or zip) and data downloaded",
    "result": "passed_in_this_test",
    "raw_result": "pass",
    "result_after_repairs": "passed_in_this_test",
    "detail": "run on 26 September 2026: GitHub connected with access limited to one repository; Lovable created its own repository holding the full source and the database migrations, with no secret keys committed. Outside Lovable (Node 22) the code installed and built without errors, and the dev server showed the page but loaded no classes, because the database service key and admin password stay in Lovable. Data leaves as the admin CSV (T14) or Lovable's full database export (documented, not triggered).",
    "affiliate": "affiliate relationship since 2026-09-28",
    "in_catalog": true,
    "applies_to": "the product as it was on run_date, on the plan stated; a later version inherits nothing"
   }
  ],
  "sessions": [
   {
    "source": "session",
    "product_name": "Lovable",
    "product_id": "lovable",
    "run_date": "2026-09-26",
    "session_type": "hands_on",
    "what": "On 26 September 2026 we built the same class-booking web app in Lovable, Replit and Emergent from one identical prompt, each on its free plan, and checked every result against 18 tests we wrote down before the first build. We changed no code: the builder only got our prompt. Lovable paid us nothing when we ran the test; it accepted us into its affiliate programme on 28 September 2026, and these findings were recorded before that.",
    "findings": [
     "Lovable built and published the app in about ten minutes and used 4 of the 10 credits on a new account. It asked twice, to create the project and to publish, and published to a lovable.app address that stays online on the free plan with an 'Edit with Lovable' badge.",
     "It was the only one of the three whose first version held the limit when ten people booked an eight-spot class at the same moment: eight accepted, two refused with 'Sorry, this class is full.' The other two accepted all ten.",
     "It checked input on the server as well as in the form (a name of only spaces and a bad email were refused), kept the admin password out of the page and scripts, and prefixed CSV values starting with = + - or @ so a spreadsheet does not run them as formulas.",
     "It needed no repair round. After republishing, every test booking was still there.",
     "Taking the code with you works, taking the running app does not. With GitHub connected (access limited to one repository), Lovable created its own repository with the full source and database migrations and committed no secret keys. Outside Lovable, on Node 22, it installed and built without errors, but loaded no classes: the database service key and admin password stay in Lovable, so moving means setting up your own database and bringing the bookings as a CSV or Lovable's full database export."
    ],
    "not_tested": "One run on one day on the free plan. Not a security audit or a load test, we did not measure how fast the 20 monthly Cloud credits run down, and we did not trigger Lovable's full database export.",
    "report": "/research/one-booking-app-three-ai-builders/",
    "disclosure": null,
    "evidence_status": null,
    "result": "reported",
    "note": "Findings as written up after the session; no pass/fail per task was scored.",
    "in_catalog": true
   }
  ]
 },
 "open_questions": [
  {
   "question_id": "lovable:cancellation_terms",
   "key": "cancellation_terms",
   "question": "Can a customer cancel at any time, and what happens to an annual plan that is cancelled mid-term?",
   "status": "open"
  },
  {
   "question_id": "lovable:data_export",
   "key": "data_export",
   "question": "Which data can a customer export, in which formats, on which plans?",
   "status": "open"
  },
  {
   "question_id": "lovable:data_location",
   "key": "data_location",
   "question": "Where is customer data stored, and can a customer choose the region?",
   "status": "open"
  },
  {
   "question_id": "lovable:pricing_gap_1",
   "key": "pricing_gap_1",
   "question": "Our price check could not put a number on this part of the cost: Credits beyond the monthly allowance (top-ups and larger credit tiers) are not in these figures. Can you publish the price or the rule?",
   "status": "open"
  }
 ],
 "vendor_answers": [],
 "agent_channels": {
  "vendor_mcp": null,
  "agent_checkout": {
   "status": "not_found",
   "detail": "No explicit support for purchases by AI agents on the vendor's own pages.",
   "checked_at": "2026-10-07",
   "method": "homepage, /pricing and the pricing page we cite, read as plain HTML (no JavaScript) and searched for explicit support of purchases by AI agents: Agentic Commerce Protocol, Instant Checkout, Agent Payments Protocol, buy in ChatGPT, agentic checkout"
  }
 },
 "feature_evidence": {
  "features": {
   "code_export": {
    "label": "Code to GitHub or download",
    "phrases": [
     "code export",
     "github",
     "github sync",
     "export code",
     "code on github"
    ]
   },
   "custom_domain": {
    "label": "Your own domain",
    "phrases": [
     "custom domain",
     "custom domains",
     "own domain",
     "your own domain"
    ]
   },
   "remove_badge": {
    "label": "No builder badge on the app",
    "phrases": [
     "remove badge",
     "no badge",
     "remove the badge",
     "no builder badge"
    ]
   },
   "team_builders": {
    "label": "Several people building",
    "phrases": [
     "several builders",
     "collaborators",
     "team builders",
     "multiple builders"
    ]
   }
  },
  "evidence": [
   {
    "feature": "custom_domain",
    "plans": [
     "Pro",
     "Business"
    ],
    "quote": "Custom domains",
    "context": "On the Pro card; Business is 'All Pro features'.",
    "source": "https://lovable.dev/pricing",
    "read_on": "2026-10-09"
   },
   {
    "feature": "remove_badge",
    "plans": [
     "Pro",
     "Business"
    ],
    "quote": "Remove the Lovable badge",
    "context": "On the Pro card; Business is 'All Pro features'.",
    "source": "https://lovable.dev/pricing",
    "read_on": "2026-10-09"
   },
   {
    "feature": "team_builders",
    "plans": [
     "Pro",
     "Business"
    ],
    "quote": "Unlimited users",
    "context": "On the Pro and Business cards.",
    "source": "https://lovable.dev/pricing",
    "read_on": "2026-10-09"
   },
   {
    "feature": "code_export",
    "plans": null,
    "quote": "This is a Git sync integration for Lovable projects. You can export and two-way sync your Lovable project code with github.com, GitHub Enterprise Cloud, or GitHub Enterprise Server.",
    "context": "The github.com connection is marked 'available on all plans'; downloading the codebase directly is marked 'paid plans'.",
    "source": "https://docs.lovable.dev/integrations/github",
    "read_on": "2026-10-09"
   }
  ],
  "note": "From the vendor's own pages, with plan, source and reading date. Documented by the vendor, not tested by us; our own tests are in task_evidence."
 }
}
