Rescue Audit

AI-native security audit for apps built in Lovable, Bolt, Replit, v0 or Cursor

It works on your screen. Is it safe in front of customers?

You built it with AI. We audit it with AI. A scanner built for the five ways these apps fail, then agents that read every database policy, webhook and key path and write the fixes. A human runs the desk and owns the result. Report in 48 hours, all in writing, no calls.

Start free: send your live URL and get the top three things a stranger could find from the outside, in writing, usually the same day. No repo, no login, no call. Read a sample report.

$400flat, paid up front
48hfrom repo access to report
2 fixescritical items, included
AUDIT_orderflow.mdexample, names changed
Framework: vite | Supabase: yes | Stripe: yes | Tables: 9

CRITICAL  Table orders has RLS disabled
          anon key in browser reads every customer's orders
CRITICAL  service_role key in src/lib/admin.ts
          bypasses all row security; ships to every visitor
CRITICAL  Stripe webhook never verifies signature
          anyone can POST "paid" and unlock the paid plan
HIGH      profiles policy `using (true)` for UPDATE
          any logged-in user can edit any other profile
HIGH      Admin check exists only in client state
FIXED     orders RLS + per-user policies (PR #1)
FIXED     service_role moved to Edge Function (PR #2)

Not sure it's worth $400? Start free.

Send your live URL and you'll get the three highest-risk things visible from the outside, in writing, usually the same day. No repo access, no login, no call. If it comes back clean, that's a real answer too, and you can launch knowing it.

The free snapshot checksFrom the outside only
Open database tablesUses your app's own public key to see which tables answer with no login at all. This is the one that ends companies.
Secrets in your bundleA service_role key, a Stripe secret, an OpenAI key, or anything behind a public build variable that shipped to every visitor's browser.
What it can't seeWrite permissions, Stripe webhooks, admin checks, storage, and dashboard-only tables need the repo. That's the full audit.

Free snapshot

$0no strings
  • Three findings, plain English, in writing
  • Each with the one-line check you can run yourself
  • Instant result, right here, no repo, no login, no call
  • If something turns up, the full audit fixes it

Runs from the outside only, reading only what your app already sends to every visitor. Prefer email? rescueaudit@gmail.com. We only look at an app when its owner asks.

What actually breaks

Not layout. Not typos. The three things that show up after launch, when someone else is using it.

Critical, most common

Your database is open

Supabase tables with Row Level Security off, or on with a policy that says true. The anon key is in every browser. Anyone who opens dev tools can read or edit every row.

Critical

Secrets in the bundle

A service_role key, a Stripe secret, or anything behind VITE_ / NEXT_PUBLIC_ gets shipped to the public. Deleting it later doesn't help. It's in git history and has to be rotated.

High

Payments that trust the client

Webhooks with no signature check. Prices sent from the browser. A success page that unlocks features by itself. The builder writes the happy path and nothing else.

What $400 buys

A specification, not a promise. Here is exactly what's in the box and what isn't.

IncludedDetail
Agent scanEvery file, for leaked keys, public env prefixes, committed .env, admin calls in client code. Purpose-built for AI-generated codebases.
Database reviewRLS on every table, every policy read, tested as an anonymous user and as a second user.
Payments reviewStripe webhook verification, server-side pricing, test/live key mixing, production endpoint registered.
Auth and deployProtected routes in incognito, redirect URLs on the live domain, production build passes, env vars set on the host.
Your reported bugReproduced, root-caused, fixed or scoped.
Two critical fixesTop two items, written by the agents as pull requests you can read, if each is under 30 minutes.
Written report"Do these first" in plain English on top. Technical detail attached for whoever works on it next.
Written follow-up, 7 daysAsk anything about the report by email for a week after delivery. Answers in writing, usually same day. Flat quote for anything bigger.
Not includedNew features, redesigns, rebuilding what the builder got wrong at the root. Those are quoted flat after the audit.

Rescue Audit

$400one time
  • Report within 48 hours of repo access
  • Two critical fixes included
  • Quote for the rest, fixed price, no hourly
  • Ongoing option: $500/month for fixes and a monthly check
Book the audit, $400

Secure checkout by Stripe. After paying you'll see six intake questions. Repo access starts the clock. Nothing found? You'll be told that, in writing, and you can launch knowing it.

How it works

Four steps, in this order, every time.

  1. Pay and answer six questions

    Live URL, repo invite, what built it, what's connected, what's broken in your words, what "done" means.

  2. Agents scan, review, fix

    Scanner first, then agents review every finding against the checklist and write the top two fixes as pull requests on a branch. A human checks the output before anything reaches you.

  3. Report lands in your inbox

    Plain-English priorities up top, technical detail attached. Questions answered in writing for a week. No calls to schedule.

  4. Access removed, keys rotated

    I take myself off the repo and tell you exactly what to rotate. If there's more to do, you have a flat quote.

Questions founders ask

Can't I just ask Lovable to fix it?

For UI, yes, and you should. The builder optimizes for "it works on screen." Our agents are pointed at the opposite question: how does this break when a stranger uses it? Database permissions, webhook verification, keys in the bundle. Those don't throw errors. They show up as someone else's data in your app.

What's the free snapshot, and what's the catch?

No catch. Send your live URL and we run a check from the outside: your app's own public key against your own database to see what's readable with no login, plus a scan of the code your site already ships for leaked keys. You get the three worst things in writing, each with a check you can repeat yourself. It takes us about twenty minutes and it's the honest first step. Most people who send a URL find at least one thing worth fixing, and that's usually when the full audit makes sense.

Is $400 a lot for a look?

It's a look, two fixes, and a report you can hand to any developer later. If nothing critical turns up you've bought certainty for launch day. Most of the time two or three things turn up that would have cost far more after launch.

I only have one bug. Can you just fix that?

Yes. Same price, you get the bug fixed and the report anyway, because the bug is usually a symptom of something on the list.

How do I know you won't take my code or keys?

Add me as a collaborator on a branch, not an owner. Give me a read-only Supabase role. Rotate keys when we're done. That's what I'd tell you to do with anyone, and it's written into the process.

My project only exists inside Lovable. There's no repo.

Lovable syncs to GitHub from Project Settings in about three minutes. I'll walk you through it. An app that can't be read can't be audited.

Who, or what, is doing the work?

AI agents do the reading and the fixing: a scanner built for the five failure patterns in AI-generated apps, then model-driven review of every table policy, webhook and key path, then the fixes as pull requests. Nathan Lamar runs the desk: scopes each job, checks every finding before it goes out, owns the report, and answers your questions. Everything reaches you in writing so there is a record you can hand to the next developer. Email rescueaudit@gmail.com if you'd rather ask something first.

Launch knowing what's behind the door.

Forty-eight hours from now you'll have a list, two fixes, and a straight answer.

Book the audit, $400
Rescue Audit · Nathan Lamar · rescueaudit@gmail.com Fixed price. Pull requests you can read. Access removed when done.