Free. No forms. No email required.
These are the instruments we use on client engagements, published open — because a business that can diagnose its own exposure is a better conversation than one that can't. Each answers two questions: what's broken, and what being visible would actually get you.
The compliance document that doubles as a procurement credential
Ley 81 de 2019 is Panama's personal data protection law. Most businesses treat it as a legal box to check. That framing costs them contracts.
Here's the distribution reality: corporate and institutional buyers run vendor reviews before they run negotiations. A procurement officer at a bank, a hospital, a government contractor, or a multinational's Panama office has a checklist. Data handling is on it. If you cannot demonstrate compliance, you are not rejected — you are filtered out before anyone reads your proposal.
The businesses that document compliance don't just avoid fines. They stay on shortlists their competitors never learn they were removed from.
Compliance is a market-access credential. Treat it as one.
Score one point per principle you can fully evidence. Partial credit is zero credit — a procurement officer doesn't award partial credit either.
Personal data is protected from unauthorized access.
Common failure: A contact form posting to an unencrypted endpoint, or a chat widget loading third-party scripts with unrestricted access to form fields.
Data movement to third parties is disclosed and controlled.
Common failure: Running Google Analytics, Meta Pixel, and a CRM integration without disclosing any of them. Three undisclosed transfers on a site that believes it collects nothing.
Data is held responsibly for a defined period.
Common failure: Six years of contact-form submissions sitting in a shared inbox four employees can access, with no retention policy and no deletion path.
Data is accurate and protected from unauthorized modification.
Common failure: Client-side validation only. The form looks protected in a browser and accepts anything sent directly to the endpoint.
Technical measures protect data proportionally to its sensitivity.
Common failure: Every header missing. This is the single most common finding, and the fastest to correct.
Users can access and retrieve their own data — ARCO rights.
Common failure: A privacy policy that mentions ARCO rights without providing any mechanism to exercise them.
| Score | Reading |
|---|---|
| 6 / 6 | Defensible. You can answer a vendor security questionnaire without preparation. |
| 4–5 / 6 | Correctable in days. The gaps are usually headers and documentation, not architecture. |
| 2–3 / 6 | You are being filtered out of procurement processes and receiving no signal that it happened. |
| 0–1 / 6 | Structural exposure. Any buyer who checks will find it, and institutional buyers check. |
A documented compliance posture changes what you can pursue:
The asymmetry: this is a one-time infrastructure investment that permanently expands your addressable market. Most competitors in most Panamanian verticals have not done it, and the buyer cannot tell who has until they ask.
The vendor review you're failing without knowing it
Security headers are instructions your server sends to browsers before a single word of content loads. They are trivially checkable by anyone, from anywhere, in seconds, without permission.
That last point is the one businesses miss. A prospect, a competitor, a procurement officer, or an auditor can grade your security posture without asking and without telling you.
The distribution consequence: enterprise and institutional buyers increasingly run an automated scan as a pre-qualification step. It costs them nothing. A failing grade doesn't produce a conversation about remediation — it produces a quiet removal from the vendor list.
You will never receive that email. That's the entire problem.
Scan your domain at Mozilla Observatory (developer.mozilla.org/observatory). Note your grade before reading further. Most Panamanian business sites score F.
If you scored F, nothing is wrong with your business. Your server was simply never configured to say anything — and defaults are silence.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Forces browsers to use HTTPS exclusively for one year, including subdomains.
Without it: A browser will attempt an unencrypted connection first. On untrusted networks — hotel wifi, airport, café — that initial request is interceptable. Session-downgrade attacks depend on this gap.
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'; form-action 'self'
Declares which sources may load scripts, styles, images, and other resources.
Without it: Any injected script executes with full page access — including access to your form fields. This is the header that turns a minor vulnerability into a data breach.
Note: Add your actual third-party domains to the relevant directives. Analytics, payment processors, and font providers each need explicit permission.
X-Frame-Options: DENY
Prevents your site from being embedded in a frame on another domain.
Without it: Clickjacking. Your site rendered invisibly over an attacker's page, so users interact with your interface while believing they're somewhere else.
X-Content-Type-Options: nosniff
Stops browsers from guessing file types.
Without it: An uploaded file the server labels as an image may be interpreted and executed as a script.
Referrer-Policy: strict-origin-when-cross-origin
Controls how much URL information travels with outbound links.
Without it: Full URLs — including any parameters — leak to every external site your users visit from yours. This is also a Ley 81 exposure if those URLs carry personal data.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Disables browser APIs your site doesn't use.
Without it: Any script on your page can request camera, microphone, or location access. Remove payment=() if you use a payment processor requiring the Payment Request API.
Cloudflare Pages — create a file named _headers in your site root:
/*
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'; form-action 'self'
Other platforms use different mechanisms — Netlify uses the same _headers format, Apache uses .htaccess, nginx uses the server block. The header values are identical regardless.
Verify by rescanning. F to A is typically a single deployment.
The asymmetry: this costs one afternoon and permanently removes a silent disqualifier. Most of your competitors are scoring F right now and have no idea, because failure in this channel is invisible from the inside.
Can a machine tell a buyer what you do?
Buyers no longer only search. They ask.
"Who does industrial cleaning in Panama with ISO certification?"
"Which production companies in Panama have worked with US networks?"
"Where can I find a specific watch reference in Latin America?"
A language model answering those questions builds its response from sources it can parse, classify, and cite. Being on page one is irrelevant if the model cannot determine what your business is, where it operates, or what it's certified to do.
The shift is structural. Search rewarded whoever spent the most on ads. AI-mediated discovery rewards whoever is most legible to a machine — and legibility is a one-time build, not a recurring spend.
That's the asymmetry, and it is temporary. It closes as competitors notice.
Can a machine determine what your business is?
Check: view source and search for application/ld+json. If nothing appears, you have zero structured entity data. Google's Rich Results Test will validate what you do have.
Score: 0 / 5
Can a machine verify what qualifies you?
The most common single failure across every vertical: certifications rendered exclusively as logo images in a footer. To a machine, that is a decorative picture — your strongest differentiator, invisible.
Score: 0 / 5
Can a machine determine what you actually sell?
Check: ask a language model directly — "What services does [your business] offer?" If the answer is vague, wrong, or "I don't have information about this business," you have your result.
Score: 0 / 5
Can a machine extract meaning from your pages?
Check: a free crawler (Screaming Frog's free tier handles 500 URLs) will surface every one of these in a single pass.
Score: 0 / 5
Can a machine serve the right audience the right version?
The distribution consequence: an international buyer searching in English and a local buyer searching in Spanish are running two different queries with two different vocabularies. One site attempting both without structural separation serves neither well.
Score: 0 / 5
| Score | Reading |
|---|---|
| 21–25 | Machine-legible. You are a candidate for AI-mediated recommendation. |
| 15–20 | Partially legible. Machines know you exist but cannot reliably classify what you do. |
| 8–14 | Structurally illegible. You are absent from consideration sets your competitors appear in. |
| 0–7 | Invisible. Operational credibility with no machine-readable counterpart. |
The asymmetric window: most businesses in most Panamanian verticals score below 10. The gap between operational credibility and machine legibility is the widest and least-contested opportunity in the market right now — and it closes the moment competitors notice it exists.
Run all three against your own site before running them against anyone else's. The results are usually uncomfortable and always actionable.
Nothing here is gated. Nothing requires an email address. If they're useful, use them.
If the findings raise questions about your specific situation — that's a conversation worth having.