auditmyapp

It compiles.It renders.It's still wrong.

Lovable, Replit, and Bolt got your app shipped. They didn't check who can read your database, whether your checkout trusts a price sent by the browser, or what happens when a user asks to be deleted. I do, and I fix what I find.

An example of what my free query finds. It's read-only and runs on your own Supabase project in about a minute. Get the query

PhDComputer science
5+ yearsCybersecurity research and building security products
10+ yearsWriting production code
2 yearsBuilding production apps with AI agents

Four faults that never throw an error

All four are things I check in every audit.

create policy "anon_write" on venues
  for insert to anon with check (true);

create policy "anon_update" on venues
  for update to anon using (true);
What it looked like
Row-level security enabled. Policies written. Dashboard green.
What was actually true
The public key shipped inside the frontend could rewrite every row in the table. Twenty cities of data, editable by anyone who opened developer tools.

Does any of this sound like your app?

Not ready to talk? Check your own project first.

A free SQL query you paste into your Supabase SQL Editor. It lists every table, policy and storage rule that signed-out visitors can read or write, and it changes nothing.

Run the self-check

What I do

Security first. Everything else I handle while I'm already in your codebase.

Start here

Security audit

Free, back in 48 hours

A severity-ranked report of what's exposed: access control, data anyone can read or overwrite, secrets in your client bundle, whether your checkout trusts a price sent by the browser, and what an attacker reaches after signing in.

Recommended

Review and remediation

$600 to $1,500

I audit, then fix what I find and verify each fix holds. Work happens on a branch, never straight on production, and you get a written record of what changed. Quoted after the audit, so the number can't move on you.

Ongoing

Security retainer

$250 to $400 a month

Every new table, endpoint and integration adds surface. A monthly re-check as you ship catches problems before they become incidents.

Before launch

Launch readiness review

$400 to $800

The things expected of an app once it has real users, tested rather than assumed: that an account can actually be deleted, that unsubscribe works, that tracking waits for consent, and that your privacy policy matches what the code really does. What I check.

While I'm in thereThe problems that sit next to security

App rescue

$400 to $900

Supabase schema and RLS problems, queries that crawl at scale, and fixes that keep breaking something else. For apps built with Bolt, Lovable, Replit, Cursor or v0.

Coverage audits

$250 to $600

The failure that isn't in your code or your schema: data that was never collected. I work out what's missing and how badly it's skewing what your users see.

Data cleanup and record matching

$200 to $600

Deduplication and catalogue merges with every match scored by confidence, and near-ties handed to a person instead of guessed.

AI workflow automation

From $400

Model-driven workflows built to fail safely, with the malformed-output and timeout paths designed in rather than discovered later.

How it works

  1. You give me a look

    Read-only access is fine. A repo link, a project, or just a description of what's going wrong.

  2. You get a written report within 48 hours

    What's broken, how serious each item is, and what it costs to fix. This part is free.

  3. You choose what gets fixed

    A fixed price, agreed before any work starts. If the audit finds nothing worth paying for, I'll tell you that instead of inventing work.

The first report costs nothing and takes 48 hours.

Get a free audit

Things I found the slow way

From two years building production apps with AI agents, the same way most AI-built apps are made.

Critical

A public key that could rewrite twenty cities

Security looked configured, and technically it was. Both write policies checked true, so the key in every visitor's browser had full write access. Nothing behaved strangely, because nobody had tried yet.

Measuring nothing

A detector that would have flagged a quarter of anything

A rule meant to catch overrated tourist traps fired on 27% of real venues. The same rule flags 28% of pure random noise. I killed it rather than ship a number that only looked like a signal.

The finding was the failure

Half the records wouldn't match, and that was the answer

Matching 126 collected places against the live database recovered 63. The fix wasn't a better matcher. The database had never held those records, and the match rate was a map of what was missing.

Who you'd be working with

I built production apps the same way you built yours: prompting agents, shipping fast, trusting output that looked right. Then I spent two years finding everything that method gets wrong. Every fault on this page came out of that.

No agency, no team, no account manager. You deal with the person doing the work. I'm in Taipei, so for most clients you describe the problem at the end of your day and the report is waiting at the start of the next.

  • PhDComputer science
  • 5+ yearsCybersecurity research and security products
  • 10+ yearsWriting production code
  • 2 yearsBuilding and repairing agent-built apps in production

Notes

Practical write-ups on the failures AI-built apps ship with, and how to check your own.

Tell me what's going wrong

No call required. Describe the symptom in a couple of sentences and I'll tell you whether it's something I can help with.

Or email me directly at asad@auditmyapp.dev

Worried about giving access to your app? Here is how I handle access and data.

I only use your details to reply. Privacy policy