Skip to main content

The production floor for AI-written software

Your AI writes the code. Validea makes it production code.

Validea is an opinionated Elixir framework where login, organizations, permissions, billing, admin, i18n and AI are already built and already tested β€” wrapped in a guardrail harness your coding agent cannot talk its way around. Vibe-code at full speed. Ship something you can still maintain in a year.

  • 1,561 tests
  • 12 blocking gates
  • 46 tables
  • 0 tolerated clones
every commit, no exceptions

$ mix precommit

βœ“ compile --warnings-as-errors

βœ“ deps.unlock --check-unused

βœ“ coveralls 1,561 tests

βœ“ hex.audit

βœ“ format --check-formatted

βœ“ gettext.extract --check-up-to-date

βœ“ js.check

βœ“ credo --strict

βœ“ sobelow

βœ“ ex_dna --max-clones 0

βœ“ reach.check --arch --smells --strict

βœ“ dialyzer

all gates passed β€” safe to commit

The trade nobody mentions

Ship in a weekend. Regret it for a year.

There are three ways to start a serious product right now, and every one of them bills you later.

The prototype you can't own

Prompt-to-app tools are astonishing for ninety minutes. Then you need a real permission model, a webhook that retries, an audit trail, a second language β€” and you find the export button hands you a codebase no engineer will agree to maintain.

The boilerplate that rots

A starter kit is a snapshot of somebody's opinions on the day they zipped it. Six months later the framework moved, the auth library moved, half the packages moved β€” and you are the one holding the migration.

The blank framework

Start clean and the first two months go to login, teams, roles, billing, an admin panel and an invite flow β€” the same two months everyone else is spending β€” before a single line that is actually your product.

How Validea works

Three things have to be true at once

Speed is not the hard part any more β€” every model is fast. What decides whether you have a product in six months is what happens between the prompt and the deploy.

01

The agent can't write slop

One instruction file it reads first, a component library it is told to extend rather than reinvent, and twelve blocking gates that fail the build when it improvises anyway.

02

Most of it is already written

Auth, organizations, roles, billing, entitlements, admin, search, notifications, i18n, a JSON API, background jobs and a full AI layer. Built once, tested, and yours to change.

03

The runtime survives mistakes

On the BEAM a bad code path takes down one request, not the server. Whole categories of bug your agent loves to write cannot be expressed in the first place.

The harness

Your agent reads the rules before it touches anything

Instructions alone are a suggestion. Validea pairs them with gates that do not negotiate: if the agent improvises, the build stops.

  • One instructions file that says what to do and what never to do β€” with the wrong version and the right version side by side, so the agent has an example, not a slogan.
  • A component library it is told to extend. No fourth button component, no bespoke modal, no hand-rolled table.
  • Executable architecture rules: the build fails when a web module reaches for the database, or a layer calls something it shouldn't.
  • An 85% coverage floor, zero tolerated duplicate blocks, and compiler warnings treated as errors.
  • All of it in one command, on every commit, with no baseline file to hide old sins in.
AGENTS.md read first, every session

No defensive code against data we control.

what an unguided agent writes

def org_name(org_id), do: org_name(Orgs.get_org!(org_id))
def org_name(%Org{name: nil}), do: {:error, :unnamed}
def org_name(%Org{name: name}), do: name

what Validea tells it to write

def org_name(%Org{name: name}) when is_binary(name), do: name

Twelve gates. No baseline, no exceptions file, no β€œwe'll clean it up later”. Your agent satisfies every one of them or it does not get to commit.

What's in the box

The two months everyone spends, already spent

Two of these are the reason people will buy Validea. The rest are the reason they'll keep it.

If your product sells AI

AI you can actually operate

The prompt is the easy part. The hard part arrives six weeks in, when someone asks what actually happened: which model, which tools it called, how many attempts it took, what it cost, and why that one customer's request failed. Validea records every run, step, attempt, tool call and artifact by default, behind an admin surface built for reading rather than archaeology.

  • Providers behind one behaviour β€” swap models without touching your code
  • Tool calling with typed arguments and validated results
  • Multi-step workflows, with every retry and attempt recorded
  • Token and cost accounting per run, per model, per conversation
  • Artifacts stored, pruned, and linked back to the run that made them
  • A user-facing chat surface and an admin assistant on the same engine
  • An observability dashboard where a failed run explains itself

The part everyone underestimates

Billing that holds up under audit

Nobody is impressed by billing until it is wrong, and then nothing else matters. This is the version you would write on your third attempt: the provider sits behind a behaviour, every webhook is verified, stored and processed in the background with retries, and what a customer may do is a grant you can query β€” not a subscription status re-derived in six different places.

  • Stripe today, behind a provider behaviour you can swap
  • Recurring subscriptions and one-off lifetime purchases
  • Hosted checkout and customer portal, wired end to end
  • Webhooks verified, stored idempotently, processed asynchronously
  • Products, prices, features and pricing tables edited in admin
  • Entitlement grants, consumption limits and feature gating
  • Reconciliation tools for when the provider and your data disagree

And the unglamorous half

Accounts
Passwordless login One-time codes Email confirmation Session management Impersonation with an audit trail Scoped queries by default
Organizations
Orgs and memberships Invitations Role-based permissions Org switching Per-org branding Onboarding flows
Operations
Admin panel Global search Audit log Background jobs Email, Telegram and Discord notifications In-app messaging Contact inbox with replies Editable pages Feature flags
Platform
JSON API with a live OpenAPI spec Translations, including right-to-left Encrypted columns Soft deletes Caching Realtime pub/sub Runtime branding and theming

Why Elixir

The popular choice and the correct choice are not the same choice

Nobody was ever fired for picking the language with the most tutorials. But you are not buying tutorials β€” you are buying the odds that the code your agent wrote at 2am is still standing at 2pm.

Bugs your agent literally cannot write

No shared mutable state. No null. No accidental race between two requests touching the same object. A function declares the exact shape it accepts and crashes loudly on anything else β€” so a wrong assumption surfaces in the first second, not in week three.

A mistake takes down a request, not your product

Processes are isolated and supervised. The bad path dies, restarts, and the other ten thousand users never find out. On most stacks an unhandled exception is an incident with a postmortem attached.

One language instead of a supply chain

Realtime, background jobs, pub/sub, caching, scheduling and presence are in the runtime. No cache server, no queue service, no socket tier, no third-party cron. Every piece you don't operate is a piece your agent can't misconfigure.

LiveView deletes half the code

No REST layer to keep in sync with a client, no client-side store, no serialization boundary, no loading-state bugs. State lives in one place, on the server, in one language β€” which is also the only way an agent keeps it consistent.

The popular stack asks your agent to write four codebases β€” the server, the client, the types between them, and the contract they both lie about β€” and keep them in sync forever. Validea asks it to write one.

The alternatives

Four ways to start. One of them survives month six.

No names β€” you already know which is which, and the differences are structural, not brand-deep.

AI app builders

Time to a real feature
Minutes, then a wall
Auth, teams, roles, billing
Partial and opaque
AI as a first-class subsystem
A prompt box
When the AI gets it wrong
It ships
Architecture enforcement
None
Tests
None
Month six
Nobody can maintain it
Services to operate
Theirs, not yours
Do you own the code
No

Starter kits

Time to a real feature
Days
Auth, teams, roles, billing
Usually, at some depth
AI as a first-class subsystem
An API key and good luck
When the AI gets it wrong
It ships
Architecture enforcement
None
Tests
Thin, if any
Month six
You, fighting drift
Services to operate
App, database, cache, queue, workers
Do you own the code
Yes

A bare framework

Time to a real feature
Months
Auth, teams, roles, billing
You build all of it
AI as a first-class subsystem
Nothing
When the AI gets it wrong
It ships
Architecture enforcement
Your discipline
Tests
Yours to write
Month six
You, alone
Services to operate
App and database
Do you own the code
Yes

Validea

Time to a real feature
Hours
Auth, teams, roles, billing
Built, wired and tested
AI as a first-class subsystem
Runs, tools, costs, observability
When the AI gets it wrong
The build fails
Architecture enforcement
Executable rules
Tests
1,561, with an enforced floor
Month six
You, with guardrails
Services to operate
App and database
Do you own the code
Yes

Receipts

Claims are cheap. These are counts.

Every number here comes out of the repository you would be buying, not out of a marketing meeting.

tests
1,561
Green before anything merges. An 85% floor that has never been lowered.
blocking gates
12
Format, credo, security, types, architecture, duplication, coverage.
tables
46
Across 18 domain contexts, each with a boundary the build enforces.
tolerated clones
0
Copy-paste is a build failure, which is why the codebase stays small.

The page you are reading is a Validea page. Same components, same gates, same test suite.

Where the opinions came from

None of these opinions are theoretical

Validea did not begin as a framework. It began as the fourth time I rebuilt the same login, the same teams, the same billing and the same admin panel β€” and finally admitted that the part I kept rewriting was the real product.

Four products, shipped and run in production, with real customers and real invoices and real 3am incidents. Every default in here is a decision that went badly at least once before it went right. That is the part you cannot buy from a template, and it is most of what you are paying for.

Distilled from

  • Launchin
  • Validea
  • Examin
  • CF Chef

What it replaces

Price it against the calendar, not against a template

This is the work that stands between a blank repository and the first line of code that is actually your product.

Login, sessions, confirmation, one-time codes 3 weeks
Organizations, memberships, invitations 3 weeks
Roles and a permission model you trust 2 weeks
Billing: products, checkout, portal, webhooks, entitlements 6 weeks
An admin panel people will actually use 6 weeks
AI runs, tool calling, cost accounting and observability 6 weeks
Notifications across three channels 2 weeks
Translations, with a right-to-left locale that works 3 weeks
A JSON API with a spec that stays true 2 weeks
The harness that keeps all of it honest years of taste
Before you start on your product ~8 months

Validea is priced high on purpose. It is aimed at people whose next eight months cost considerably more than a licence.

See pricing

Objections

The questions you are already asking

I don't know Elixir.

Neither does most of the code you are about to ship β€” your agent writes it. What matters is whether the framework catches the agent when it is wrong, and Elixir is the reason it can. You will read far more of it than you write, and it reads like prose.

Isn't Elixir niche? Can I hire?

It is a smaller pool of considerably better applicants, and they want the job. You will also need fewer of them: one language covers what usually takes four services and two teams.

Why not just start from the plain framework?

You can, and it is a fine framework. You will spend the first two months rebuilding what is already in the box, and at the end of it you still won't have the harness β€” that part is years of taste, not weeks of typing.

Does it work with my coding agent?

It is built for any agent that reads an instructions file β€” the popular ones all do. The rules live in that file; the enforcement lives in one command that runs whether the agent cooperates or not.

Do I own the code?

Entirely. It is your repository, with no runtime dependency on us, no hosting lock-in and no per-seat tax on your own users.

What if this isn't for me?

Then don't buy it. Validea is expensive deliberately: it is for people whose next eight months are worth more than the licence, and it will be poor value for anyone else.

Get it before it costs more

The installer lands soon. Join the list and you get it first, at the price that will not be there afterwards.

One email when it ships. Nothing else, ever.