I Built an AI Platform Solo — Here's the Architecture
Custom Postgres + RLS, a custom MCP server, and 2,500+ prompts — one operator.
One operator, one platform: a marketplace with its own commerce, content and catalogue systems, a self-hosted database, and a custom tool server. No third-party backend. Here is the shape of it and, more usefully, what the constraint of being alone actually forced.
The architecture
- Postgres, self-hosted, with row-level security enabled and forced. Three roles: anonymous and authenticated, both RLS-enforced, and a service role that bypasses it for trusted server code. Public surfaces read only active rows because the database says so, not because a query remembered to filter.
- Server components reading straight from the database. The rendering layer is not a second copy of the business rules; state lives in Postgres and the app renders from it.
- A custom MCP server for operations — the tool surface I described elsewhere, with reads always available and writes gated.
- Prompt infrastructure: 200+ libraries, 2,500+ engineered prompts, treated as versioned assets rather than as text people paste.
What being alone actually changes
The obvious answer is speed, and it is the wrong one. The real change is that every abstraction has to pay for itself immediately, because there is nobody to amortise it across.
A team can afford a layer that makes life easier for the six people using it. Alone, a layer either removes work this month or it is a liability you will maintain forever. That pressure produced a simpler system than I would have designed with a team, and I think a better one.
The second change is that there is no one to catch you. Which is why RLS is forced rather than advisory, why the security model is three roles rather than a convention, and why the risky tool calls need confirmation. The guardrails are not process; they are the only reviewer.
What I would tell someone starting
Put the security model in the database on day one. Every other decision is reversible; that one hardens into every query you write afterwards.
And resist the platform that offers to hold your data. The convenience is real, and the day you need a capability it does not have, you will find out that the convenience was the whole product.
Keep reading
A Run Produces Data. A Loop Produces Decisions.
The signature thesis: the data you scrape should plan the next scrape. Loops beat runs.
Read →What Is an AI Systems Architect?
A working definition — from someone who designs, codes, and operates the systems.
Read →MCP for Operators: Data as Tools
Why the Model Context Protocol turns every product and dataset into a callable tool.
Read →