The Governance Ceiling of Vibecoded Apps

By Francis Nguyen, Chief Executive Officer··Research
A two-panel house-styled graphic. Left: a chart where the number of integrations to keep governed rises quadratically as apps are added when each pair is wired point to point, but stays linear against one shared model; a dashed line marks a maintainable governance budget that the quadratic curve crosses between six and seven apps, the governance ceiling, and at twelve apps the counts are 66 point-to-point versus 12 shared, a 5.5 times gap. Right: the same idea as structure at eight apps, a fully-connected mesh of 28 connectors beside an eight-spoke hub of 8 connectors. An exact combinatorial illustration and a worst-case upper bound, not a measurement.

Introduction

A multi-branch operator builds a handful of internal tools with an AI app builder: a scheduling helper for one region, an inventory tracker for a branch, a small customer portal after an acquisition. Each one works, and each one was built in an afternoon. The trouble starts when they have to work together, when the same customer, the same service address, the same work order has to mean the same thing in all of them. That is where a fleet of vibecoded apps meets its real ceiling, and it is not the one people expect. The apps are not short a database. They are short a shared one. A disclosure up front, because it matters for how you read this: Ardenus sells exactly the shared layer this essay says is missing, so weigh the argument knowing that.

  • The apps ship real, governed backends. The reflex worry, that you cannot build anything serious on these tools because they have nowhere durable to keep data, is out of date. They provision managed databases with real access controls.
  • Each backend is isolated by design.A Lovable project cannot read another project’s database; Base44 apps are independent projects that cannot be automatically merged. That isolation is a deliberate, sensible default, not a defect.
  • Isolation does not scale to a fleet. Wire N independently-built apps together pair by pair and the number of connections to keep governed grows with the square of N. Route them through one shared model and it grows linearly. The gap is the governance ceiling.
  • The fix is a shared model, not a bigger app. Conformed dimensions, a master-data golden record, and a semantic layer are the decades-old ideas that give many applications one agreed meaning for a customer or a site. That layer is what a fleet of vibecoded apps has no place to put.

Not a database problem

Start by clearing away the wrong objection, because it is the one usually raised and it is no longer true. Today’s AI app builders do not leave you with nowhere to store data. Lovable’s own documentation says that every project using its built-in backend “includes a managed Postgres database,” with row-level security policies that govern, for example, that users “can only read their own orders.” Base44 gives each app a managed backend as well; its documentation describes a NoSQL database with row-level and field-level security and fine-grained authorization rules. These are real, governed data stores with real access control. Whatever the ceiling is, it is not that a vibecoded app has nowhere durable to keep its data and no way to secure it. Granting the tools that much is not a courtesy; it is where the actual problem comes into focus.

The pipes are narrow

Storing the data is not where these tools strain; moving it in bulk is. The write path is rate limited and runs on short-lived serverless functions, and the generated code rarely accounts for either. Base44caps entity creates at a fixed 140 requests a minute, a limit that does not rise with your plan, so an import that inserts rows one at a time, the shape an AI builder tends to generate, starts returning “429 Too Many Requests” somewhere north of a hundred rows. Lovable Cloud’s functions, built on Supabase, get two seconds of CPU time, 256 MB of memory, and a wall clock of a few minutes per call, so a bulk load the underlying Postgres would shrug off can time out before it finishes. The database could hold millions of rows; the path you move them through was not built to carry a few hundred at once. Getting real volume in is exactly the proper infrastructure, batching, background jobs, a bulk-load path, that a vibecoded app does not come with.

Isolated by design

The governing fact is that each app gets its own backend, and those backends are walled off from each other on purpose. Lovable states it plainly: “Every Cloud project gets its own isolated backend, and there is no way for one project to read another project’s Cloud database.” Base44 is just as explicit that its unit is the single app: “Each app is managed as an independent project,” and “It is not currently possible to automatically merge two separate apps.” For a single tool this is exactly right. Isolation is good security and good blast-radius control; you do not want your inventory tracker able to read your HR app’s tables by default. The design is sound. The problem is that an operator does not end up with one app. It ends up with a dozen, built at different times by different people for different branches, each with its own private idea of what a customer record looks like, and nothing that makes those ideas agree.

The governance ceiling

Put a number on it. Suppose you have N of these isolated apps and you want them to share the entities they have in common. The direct way is to wire them together in pairs, a connection and a bespoke mapping between each two apps that must agree on a customer or a site. Wire every app to every other and the number of connections is the complete-graph count, N times N minus one, over two. Ten apps is 45 connections; twelve is 66. Now route every app instead through one shared model, mapping each app once to a common definition. The count is just N: twelve apps, twelve connections. At twelve apps that is 66 against 12, a factor of 5.5, and the gap widens with every app added, because the point-to-point count grows with the square of the number of apps while the shared-model count grows only linearly. The chart on this page draws both, with a dashed line for the number of integrations a team can realistically keep governed: the quadratic point-to-point line crosses that budget early, between six and seven apps in the illustration, while the linear shared-model line stays well under it. Where the point-to-point line crosses the budget is the governance ceiling.

Two honest caveats travel with that figure, because it is a model and not a measurement. The complete-graph count is a worst-case upper bound: a real app estate is sparser than fully connected, since not every app has to talk to every other. And the count is an exact combinatorial illustration, arithmetic about connections, not a survey of any operator’s systems. What is robust is not the specific 66 but the shape: point-to-point integration is quadratic and a shared model is linear, and the per-app cost tells the same story, since the Nth app added to a point-to-point mesh must be wired to the N minus one already there, while the Nth app added to a shared model is wired to one thing. That is why the mess does not arrive gradually. It arrives all at once, a few apps in, when the number of pairwise agreements to keep straight passes what anyone is actually keeping straight.

What a shared model buys

The linear side of that picture is not a new invention; it is the settled answer that data management arrived at decades ago, under several names. In dimensional modeling it is the conformed dimension, a shared dimension that means the same thing to every fact table it joins, so a customer or a branch is defined once and reused everywhere rather than redefined per app. In data governance it ismaster data management, which maintains one governed golden record for a shared entity so the same customer does not fracture into a dozen slightly different rows across a dozen stores. In the analytics stack it is thesemantic layer, which centralizes metric and entity definitions so that, in dbt’s words, “different business units are working from the same metric definitions, regardless of their tool of choice.” And when ownership is deliberately decentralized, data mesh names the same need as federated computational governance over shared, cross-domain entities. The integration-patterns literature calls the general shape acanonical data model: one shared model that each application maps to once, the hub in place of the mesh.

The through-line across all of them is a single idea: somewhere there has to be one governed definition of the things the business shares, and every application refers to it rather than inventing its own. That is precisely the layer that a set of isolated, independently-provisioned apps has no place to hold. Each app can govern its own data beautifully and still leave the fleet with no agreed answer to “is this the same customer as that one,” because the agreement was never anyone’s app to make.

A build-time ceiling

There is one more limit worth naming precisely, so it is not confused with the governance ceiling. It appears at build time, not at run time. A deployed vibecoded app is ordinary code over a database; there is no language model sitting in its read path answering queries as users click around. But the model that wrote the app has a limit of its own: its reliability falls off as the codebase and context it must hold at once grow, a build-time effect documented in work like “Lost in the Middle”, which found that models use the middle of a long context far less reliably than the ends. That is a real constraint on how large a single vibecoded app can grow before the AI maintaining it loses the thread, and it is the subject of a companion essay on the diminishing returns of context. It is a different subject from this one. That ceiling is about one app getting big; the governance ceiling is about many apps never agreeing.

What this means for the operator

The practical test is quick. Count the internal tools your branches have quietly built, and ask a single question of them: if a customer moves from one branch to another, or two branches are merged after an acquisition, how many separate places have to be taught that it is the same customer, and who keeps them in agreement? If the answer is “each app, by hand” and the number of apps is growing, you are approaching the governance ceiling, and the fix is not a better app builder or a bigger app. It is a shared, governed model that the apps refer to. This sits upstream of several neighboring questions: what a single application’s data foundation needs to be reasoned over at all is the subject of the data foundation beneath enterprise AI; deciding whether to migrate, consolidate, or layer over the systems a roll-up inherits is the post-acquisition system decision; and actually reconciling the same customer across those systems is entity resolution.

The disclosure from the top belongs here in full, because the argument points straight at what Ardenus sells: the data layer this essay says a fleet of vibecoded apps is missing, both the shared, governed cross-application model and the infrastructure to move real data through them. That makes the case seller-convenient, and a reader should weigh it knowing that. So it is worth being fair to the tools rather than drawing a neat line in our own favor. The platforms are genuinely good at what they do, they ship real governed backends, and per-app isolation is the correct default for a single app. The gap is not a flaw in any one of them; it is what none of them can provide alone, because a shared model across many independently-owned apps is by definition not the property of any single app. No result, saving, or metric is attributed to Ardenus here, no client or first-party data appears anywhere in this essay, and the figures are exact arithmetic about connections rather than a measurement of anyone’s systems. You can read more of our research on the Ardenus articles hub, or see the platform itself on the technology page.

Sources and methodology

This essay was researched with a multi-agent sweep across primary sources, followed by an adversarial fact-check of every claim and citation. The platform capabilities are quoted from the vendors’ own live documentation, verified firsthand: Lovable’s that every Cloud project “includes a managed Postgres database” and that “there is no way for one project to read another project’s Cloud database”; Base44’s that “Each app is managed as an independent project” with a NoSQL store and row-level and field-level security, and that it is “not currently possible to automatically merge two separate apps.” The load-bearing figure is an exact combinatorial model computed with no external data: point-to-point integrations across N isolated apps are the complete-graph edge count, N times N minus one over two, which is 66 at twelve apps, while one shared model needs N, or 12, a factor of 5.5, and the per-app marginal cost is N minus one versus one. Every one of those numbers is reproduced and node:assert-locked by the committed build script; the count is a worst-case upper bound and a modeling illustration, not a measurement of any deployment, and the defensible claim is the quadratic-versus-linear shape of the growth. The linear alternative is the settled data-management answer, cited to its primary sources: conformed dimensions (Kimball), master data management (DAMA-DMBOK), the semantic layer (dbt), data mesh (Dehghani), and the canonical data model (Hohpe and Woolf). The build-time authoring limit is cited only as bounded prior art; the data foundation essay carries the Lost in the Middle study in full, and long-context limits are the subject of the diminishing-returns essay. No client or first-party data is used, and no result, saving, or forecast is attributed to Ardenus.

  1. Lovable Cloud - Database(Lovable documentation) - each Cloud project gets its own isolated managed Postgres backend, with row-level security, and no way for one project to read another’s database.
  2. Managing your app data (Base44 documentation) - each app is an independent project, and two separate apps cannot be automatically merged.
  3. Backend overview (Base44 documentation) - a per-app NoSQL database with row-level and field-level security, so per-app governance is genuine.
  4. Apps API Rate Limits (Base44 documentation) - entity creates are capped at a fixed 140 requests a minute that does not scale with plan, so a bulk import returns HTTP 429 north of a hundred rows.
  5. Edge Functions: Limits (Supabase documentation) - the serverless functions behind Lovable Cloud run under 2 CPU-seconds, 256 MB of memory, and a 150 to 400 second wall clock per call, bounding bulk data movement.
  6. Enterprise Data Warehouse Bus Architecture (Kimball Group) - the conformed dimension: a shared dimension that means the same thing to every fact table it joins.
  7. DAMA-DMBOK: Data Management Body of Knowledge (DAMA International) - master data management and the single governed golden record for a shared entity across systems.
  8. dbt Semantic Layer (dbt Labs documentation) - centralized metric and entity definitions so different business units work from the same definitions across all applications.
  9. Data Mesh Principles and Logical Architecture (Zhamak Dehghani, martinfowler.com) - federated computational governance over shared, cross-domain entities.
  10. Canonical Data Model(Gregor Hohpe & Bobby Woolf, Enterprise Integration Patterns) - one shared model each application maps to once, the hub-and-spoke alternative to point-to-point integration.
  11. Lost in the Middle: How Language Models Use Long Contexts (Liu et al., TACL 2024) - build-time prior art: model reliability degrades over a long context; cited only as bounded support, and the study is carried in full in the data foundation essay.