Halbon Preflight
Know which of your access rules hold before an investor, buyer or customer asks.
A fixed-fee, five-day check of who can read and change whose data in your AI-built app, with a dated dossier that says what failed, what was tested and what was not checked.
For apps built with Lovable, Bolt, Cursor or v0 on Supabase (React, Vite or Next.js).
The problem
AI builders make working apps. Access rules are the weak spot.
The rules that decide who can read and change which rows are easy to get wrong, and the failures are documented. A researcher's scan, recorded as CVE-2025-48757, found that 170 of 1,645 Lovable showcase apps exposed data through missing Supabase row-level security (CVE record (opens in a new tab)).
Free tools such as Supabase Security Advisor and the Lovable scan tell you whether those rules are switched on. They do not tell you whether a user in one organisation can read another organisation's invoices, or edit their own role column and promote themselves. Those are the questions an investor, an acquirer or an enterprise security questionnaire will ask.
What we check
One app, one fixed scope, eight standard checks.
Your schema and policies are loaded into a throwaway local database. We never touch your live one. We then test a written list of claims, agreed with you at the start. Each is tried with made-up users, organisations and rows, signed in and signed out. The secrets check is a scan of your source code rather than a live test.
Check 1
Tenant isolation on read
A user in organisation A cannot read organisation B's rows.
Check 2
Cross-user write denial
No insert, update or delete of rows that belong to another user or organisation.
Check 3
Signed-out read denial
Someone who is not logged in cannot read the tables you mark as protected.
Check 4
Signed-out write denial
Someone who is not logged in cannot add, change or delete anything.
Check 5
No self-promotion
A user cannot edit their own role, organisation or owner column to give themselves more access.
Check 6
Structural checks
Tables left open in exposed schemas, policies that say 'allow everything', and update rules with no check on the new values.
Check 7
File storage, bucket by bucket
For each storage bucket you declare, we try to list, download, upload, replace and delete other users' files, signed in and signed out, the way the Supabase storage service does.
Check 8
Secrets in browser code
A pattern scan of your source for known key formats (such as a service-role key or a JWT signing secret) in code that ships to the browser, or read through a browser-exposed environment variable. It finds known formats only. It does not find every secret, and a scan with no match is not a clean bill of health.
You can add up to three claims of your own. Server code that bypasses these rules, such as functions that use the service-role key, is not part of the checks: the dossier lists it as not checked.
What you get
A dossier you can show someone, and a call to explain it.
- The dossier. A dated HTML report. A plain-language summary first, then each claim with its verdict, the strength of the evidence, any example that broke it, and a fix hint.
- Honest verdicts. Every claim is marked Failed (we found a concrete case that breaks it, with a replay seed), Tested (no counterexample across the generated scenarios we tried, with the number stated, which is evidence and not a mathematical demonstration) or Not checked (listed explicitly).
- A 30-minute readout call to walk through the results with you, your developer or your investor.
- Delivery in five working days from receiving access to your schema.
Preflight fix
When something fails.
Most checks find something. You can fix it yourself, with your developer or with your AI builder, using the fix hints and replay seeds. Or we fix it: a fixed price quoted from the dossier, including a re-check of every fixed claim and an updated dossier. If your app simply needs getting into shape before launch, we take that on too.
Agencies: we run the check, and the fixes, for your clients' apps, under your name or ours.
Limits
What is not checked.
The dossier lists these in its own section, so nobody reads more into it than it says.
- Your live database, live app or production traffic. We do not probe or scan them.
- Storage beyond the declared buckets' folder rules: signed-URL expiry, file size and type limits, and buckets you did not declare.
- Secrets outside the scanned source: .env files (never opened, by design), your deployed site's live bundle, git history and server-side settings.
- Edge functions, server code and API routes, including anything that uses the service-role key.
- What your web or mobile app does with the data it receives.
- Sign-in provider settings (password rules, magic links, OAuth).
- Dependencies and infrastructure.
- Business logic outside the agreed claims.
- Anything that would count as a penetration test.
A Preflight check is a scoped test of named claims. It does not promise your app has no security problems, and it is not a certificate of any kind.
Price and terms
Fixed fee. Half to book, half on delivery.
Founding client
£1,250 + VAT
The first three clients. Same scope, same five days. In return, you agree to an anonymised case study: no company name, no app name, no identifying detail, and you approve the text before it is published.
Places taken: 0 of 3
Preflight check
£1,750 + VAT
One app, one schema, the standard claim set plus up to three claims of your own, the dossier and the readout call.
Deposit: £875
- Payment: 50% to book, 50% on delivery of the dossier.
- If we do not deliver within five working days of receiving access, you get a full refund.
- Your schema and code stay on Halbon Labs systems for the engagement and are deleted 30 days after delivery, unless you ask us to keep them for a re-check.
- Halbon Labs Ltd, registered in England and Wales.
Not sure yet? Take the free triage first. Prefer to talk first about payment? Email hello@halbonlabs.com.
Questions
Short answers.
What do you need from me?
Three things: a read-only export of your database schema and policies (your migrations folder, or the output of supabase db dump --schema-only), read-only access to your app's source code, for the secrets scan (a read-only repository invite is enough), and your written permission to the agreed scope, which is part of booking. No production passwords, no keys, no customer data.
Will you touch my live app or database?
Never. We work from the schema and code you send, loaded into a throwaway local database with made-up users and rows. Your production system and your customers' data are not touched, scanned or probed.
Do I need to give you my Supabase password or service-role key?
No, and please do not send either. If you paste one by accident, tell us and rotate it.
What is not checked?
Everything in the 'What is not checked' list above, and it is also in the dossier so nobody reads more into it than it says. In short: the live system, edge functions and server code, sign-in provider settings, secrets outside the scanned source, dependencies and anything that would count as a penetration test.
The Lovable scan and Supabase Security Advisor say I am fine. Why pay?
Those tools are worth running, and you should keep running them. They mostly tell you whether row-level security is switched on. They do not test whether your rules actually keep one customer's rows away from another's. That is the question an investor, a buyer or an enterprise questionnaire asks.
Is this a penetration test?
No. It is narrower: a written list of access claims, each with a verdict and evidence. If you also need a penetration test, we will say so on the triage call.
What if you find problems?
Each failed claim comes with an exact example your developer (or your AI builder) can replay, and a hint for the fix. You can fix it yourself, or we quote a fixed price from the dossier. A re-check of every fixed claim is included.
Can I show the dossier to investors, buyers or customers?
Yes, that is what it is for. It is dated, carries a content hash for every piece of evidence, and it states its own limits plainly so the reader can trust what it does say.
My app is not on Supabase.
Then this is not a fit yet. Tell us your stack on the triage call and we will say honestly whether we can help.
Who does the work?
Dan Tinsley, founder of Halbon Labs Ltd, with 12 years of enterprise development across TypeScript, Next.js, NestJS and Supabase. The checks run on Halbon Labs' own verification engine.
Book a free 20-minute triage.
Share your screen, show us your tables and policies, and tell us what is coming up: a raise, a sale, an enterprise deal. We will tell you on the call whether a Preflight check is worth it for you, and if it is not, we will say so.