Transparency

How the Prodable scan works — and exactly what we can (and can't) see

July 8, 20268 min read

The Prodable scan is a read-only security probe of your app’s public URL. It runs about 48 deterministic checks across 9 categories, grades the result from A+ to F, and shows you the full verdict with no email required. It never runs in your browser, never writes to your database, and never sees your source code — it reaches your live app from our servers exactly the way any visitor’s browser would.

~48 checks
deterministic, across 9 categories
A+ → F
graded like SSL Labs / Mozilla Observatory
$0
full verdict, no email for the grade

Because Prodable is a paid service that actively reaches out and probes your live app, you deserve to know precisely what it does before you point it at production. This is that answer, without hand-waving: what the scan touches, what it can and can’t see, the guarantee that keeps it non-destructive, and the list of things we deliberately refuse to do. If you were about to search “is Prodable safe” or “is Prodable legit,” read this instead.

What the scan actually is

A lot of security tools run as a script inside your browser tab. Prodable is the opposite. When you enter a URL, the scan runs from our servers and makes ordinary network requests to your public address — the same requests a curious stranger, a competitor, or an automated bot would make. That inversion is the point: the scan sees your app the way the internet sees it, not the way you see it when you’re logged in as the owner.

Practically, that means we fetch your homepage and its JavaScript bundle, read the HTTP response headers, look up a handful of DNS records, and probe a small, capped set of well-known paths and API routes. We never log in. We never load service-role credentials. We can only ever observe what your deployment already hands out to anonymous traffic — which is exactly the surface an attacker gets for free.

The 9 categories and ~48 checks

Older scanners only recorded problems, so a clean site looked empty — three missing headers and nothing else. We changed the model: every check emits a result, pass or fail, grouped by category, so even a locked-down app returns a long, mostly-green report instead of a blank screen. Here is what the nine categories cover.

The report leads with the letter grade and per-category dials, states the denominator prominently (“we ran 47 checks across 9 categories”), renders every passed check as a green row with a one-line note of what we verified, and shows evidence on every failure — the writable table, the endpoint that returned data, the masked key, the exact header value. Where it applies, findings map to OWASP and CWE identifiers.

From building the scanner
We built the pass-state model on purpose, after a scan of our own marketing site — a static page with no database and no secrets — came back 70/100 with three “missing header” warnings and then tried to upsell a $499 “stop the bleeding” fix. A fixed high price plus fear language firing at zero criticals is the exact signature of “your website failed our audit, pay us” scareware. So we rebuilt the scan so that outcome is impossible: length of the green list is the value on a clean site, and urgency is only ever earned by evidence.

The strictly non-destructive guarantee

Almost every check is passive — reading headers, parsing a bundle, resolving DNS. A tiny number are “active,” and each is deliberately defanged:

Path probing is capped (roughly 15 well-known paths, ~10 DNS lookups) and runs concurrently, so the scan does real work without hammering your origin. Nothing we do writes lasting data, deletes anything, or takes control of infrastructure.

Why alarmist copy can’t appear on a clean scan

The single most important design decision is that the offer branches on the highest severity actually found. This is a structural guarantee, not a promise about our marketing restraint — the alarmist branch simply doesn’t exist in the code path a clean result takes.

What we foundHeadlineTone
Clean / cosmetic only“You’re in good shape. No exposures found.”Reassurance + optional monitoring
Medium“A few gaps worth closing before you scale.”Calm, practical
High“Real gaps. Worth fixing this month.”Direct
Critical“Active exposure. Anyone can read your data right now.”Urgent — earned by a screenshot of your own exposed key

There are no countdown timers and no manufactured deadlines anywhere in the product. Every paid fix re-scans and shows a before/after — the structural opposite of scareware, which vanishes the moment you pay. And if the Fix doesn’t resolve the findings it scoped, you get a full refund.

What we deliberately do not do

Naming the limits is part of being trustworthy. Here is the explicit list:

The deep kit — Semgrep static analysis on your actual source, a full git-history secret scan, and a line-by-line review of your Supabase RLS policies in SQL — runs on the Fix, where you consciously grant repo or share-link access. The free scan finds what your users could find; the Fix finds what an attacker with repo access would find. The difference is what becomes visible, not how hard we work.

Why the scan is free at all

The pain here is real and well documented. Veracode’s 2025 GenAI code-security analysis found that 45% of AI-generated code fails security tests; Wiz Research puts it at roughly 1 in 5 vibe-coded apps containing security risks; and Escape.tech’s vibe-coding study reported 2,000+ high-impact vulnerabilities and 400+ exposed secrets across 5,600 apps. Those are category statistics — they describe the population of AI-built apps, and we’ll never quote them at you as if they describe your clean app.

The free scan is our credibility engine, not our product. It’s how we find what’s worth watching. The business is the layer above the scan — continuous monitoring, a human-delivered fix when something breaks, and an independent Verified Secure badge — the things a $2 one-shot scanner structurally can’t deliver. When your scan comes back clean, that’s not a dead end; it’s the moment to lock the result in so the feature you ship next week can’t silently undo it.

FAQ

Is Prodable legit, or is this scareware?+

It's a deliberate anti-scareware design. The result screen branches on the highest severity actually found, so alarmist 'stop the bleeding' copy is architecturally impossible on a clean scan — urgency only renders next to a real, evidenced exposure. A clean site sees a calm reassurance screen and an offer to lock it in with monitoring, never an emergency upsell. The verdict is also never gated: your grade and severity summary show with no email at all.

Is it safe to run the scan on my production app?+

Yes. Every probe is read-only against your public URL and strictly non-destructive. We do not write data (the one 'active' database check is a guarded empty-body insert we distinguish from a schema error), we do not use service-role credentials, we do not run authenticated requests as your users, and we do not store your source code. It behaves like an ordinary visitor's browser, not an attacker with your keys.

Does Prodable run in my browser or see my code?+

No. Unlike an in-browser tool, the scan runs from our servers and reaches out to your public URL over the network — it sees exactly what any stranger on the internet can see. It never sees your source code. The deeper source-level kit (Semgrep static analysis, full git-history secret scanning, and Supabase RLS policy review in SQL) only runs on the paid Fix, and only after you explicitly grant repo or share-link access.

What do I get for free versus what needs an email?+

The diagnosis is free and ungated: the letter grade, the per-category dials, and the severity summary appear instantly with no signup. What an email or account unlocks is the deliverables — the full line-item report, the AI-ready fix prompts, and the badge. You trade your email for the fix instructions, never for permission to know whether you're exposed.

What does the scan deliberately not do?+

It is not a penetration test, and we never call it one. It won't exploit anything, won't claim or register a vulnerable resource (subdomain-takeover checks are fingerprint-only), won't log into your app, won't use service-role keys, won't store your code, and won't tell you your app is 'unhackable.' The badge, when issued, attests that an app passed Prodable's automated checks on a given date — nothing more.

Keep reading