How Exclia handles your data

You are about to put a list of the people your organization pays into a product run by one person in Spain. That deserves a specific answer rather than a page of assurances, so this page states what is in place, what is not in place yet, and who else touches your data. Everything here describes the system as built — where a control is missing, it is listed as missing.

The list below is not a marketing summary of our practices — it is the practices, reconciled claim by claim against the code before this page could be published. Anything we have not built is in the second list, not left out of the first.

Claims last reconciled against the product on July 30, 2026.
This page is in draft and is not published: it is still inside legal review, and the deployment items it depends on are open. It is accurate about the system as it stands today, which is why it is readable now.

How the system is put together

  • Four parts make up the product: this public site, the application you sign in to, an API that serves it, and a background worker that runs screenings, sends notifications, and builds reports. Behind them sits one Postgres database holding your roster, your screening history, and your audit log.

  • Screening runs inside Exclia. Your roster is not sent to a list publisher, to an outside matching service, or to any AI service — there is no code path that does so, and no such provider appears anywhere in the product’s dependencies.

  • The background worker takes its jobs from Redis, which holds job descriptions — identifiers, and for an email job the recipient address — together with the rate-limit counters. Your roster is not stored there.

  • A finished report is written once to object storage under a key nothing rewrites, in a bucket with versioning on. A correction is a new report rather than an edit of the one an auditor already has.

What Exclia does not store

  • Exclia stores no Social Security numbers. Not as an optional field, not in a note, not anywhere: there is no column for one in the database and no parameter for one in the API.

  • No personal tax identifiers of any kind, either. The only tax identifier Exclia holds is an organization’s EIN, and only if you choose to enter one — a business identifier rather than a person’s.

  • Confirming a potential match needs a date of birth or a Social Security number, so that step happens on the OIG’s own verification tool, where those identifiers already are. Exclia records the outcome you reached and the reasoning you wrote — never the identifiers you used to reach it. The federal list download omits them by design, and this design follows that rather than working around it.

  • Nothing in Exclia states an automated verdict about a person. The strongest claim any screening produces is “potential match — verification required”, and that rule is enforced in one shared formatting module every surface renders through, not in each screen’s copy.

Encryption

  • Every request Exclia makes to a provider — identity, payments, email, object storage, bot protection — goes over HTTPS.

  • Report PDFs are encrypted at rest by the storage provider, in a bucket that is not publicly readable. Every download is signed on the server and served through an authenticated path, so a report URL is not a link anyone can pass around.

  • API keys are not stored. The database holds a SHA-256 hash, so a key shown once at creation cannot be read back out of us by anyone — a lost key is rotated, never recovered.

  • The signing secrets behind outbound webhooks are encrypted at rest with AES-256-GCM, under key material held in the deployment’s configuration rather than in the database beside them.

Where the data is, and who we are

  • Exclia is operated from Spain by one person. That is who processes your data — there is no other staff, and no contractor with access to it. The providers listed further down are the only other parties involved, and the table says what each one receives.

  • Report PDFs — which name the people on your roster — are stored in North America. For an operator established in Spain that is an international transfer, so it is named here rather than left implicit.

Who can reach your data

  • Every endpoint checks the caller’s role on the server, and every query is scoped to one organization. Nothing is held closed by a hidden button.

  • Sign-in and sessions are handled by Clerk. Exclia never receives or stores a password, and multi-factor is Clerk’s own setting rather than something reimplemented here.

  • Support access to your organization runs as an impersonation session that expires after 60 minutes, and every action taken inside one is written to your own audit log, attributed to the operator rather than to your user. You can read what was done on your data, in the same place you read everything else.

  • The audit log is append-only. Corrections are new entries, and no part of the product edits or removes one — including the retention job, which holds a port that can only append.

  • The free checker and the API are rate-limited through one shared counter, so a published ceiling holds however many instances are running, and the checker sits behind a bot check that refuses when it cannot reach its verifier.

How long we keep it

  • While your subscription is active, your roster, screening history, reports, and audit log are kept.

  • If you cancel, you keep full export access for 90 days. When that window closes, the roster and the screening history are deleted by a scheduled job that computes the date from your cancellation, records what it removed and what it kept, and cannot run twice on the same organization.

  • Two things outlive that window on purpose: the audit reports your organization generated, and the resolution records behind them. That is the evidentiary trail — the proof that you screened a given person on a given date against a given list version. Removing it would take away the evidence the product exists to produce, for periods you have already paid for and may be asked about years later.

  • An erasure request leaves a tombstone rather than a hole. The person’s identifying details are cleared from their record; the record itself stays as a marker, so the screening history that points at it still says a screening happened without saying who it was about. A tombstoned record stops being screened and stops counting against your plan.

Durability and availability

  • Report storage keeps every version of an object, so an overwrite cannot take away a copy an auditor has already been given.

Certifications we do not hold

  • Exclia holds no SOC 2 report, no ISO 27001 certificate, and no HIPAA attestation, and this page claims none. Nor is an audit “under way” — when it is, this page says so with a date on it. The posture is deliberate: document the real practices now, and undertake a certification at the point a customer requires one in writing.

  • No third-party penetration test has been performed. If that matters to your review, say so — it is the kind of thing a customer asking in writing moves up the list.

Who else touches your data

These are the third parties that process something on Exclia’s behalf, and what each one actually receives. A provider that is added to the product is added to this list in the same change.

ProviderWhat it doesWhat reaches itWhere
ClerkAccounts, sign-in, sessions, organizations, and the subscription plan behind your billing.The name and email address of each of your users. No roster records — Clerk never sees the people you monitor.United States
StripeCard payments and invoicing, underneath Clerk Billing, plus metered API usage.Your billing details and usage quantities. No roster records and no screening results.United States
ResendSending notification email, and receiving mail sent to the dispute address.The recipient’s address and the message itself. A potential-match alert names the roster record it is about, so a person’s name does reach the mail provider.United States
PostHogCounting how people find the marketing site and whether the free check leads anywhere — the two figures the decision to keep building Exclia is made from.From the marketing site only, and only if you agree to it: the pages you open, the site that linked you, and an identifier that connects those page views to each other. Never a name typed into the free checker, never an email address, and nothing at all from inside the application.European Union
CloudflareObject storage for report PDFs, and the bot check in front of the free public checker.Report PDFs, which name the people on your roster. From the checker: a visitor’s bot-check token. Names typed into the free checker are not sent to Cloudflare.North America (report storage); the bot check is answered at the nearest edge
The exclusion lists themselves are sources, not processors: nothing about your roster is sent to the OIG, to SAM, or to a state agency. When you confirm a potential match you go to the OIG’s own tool yourself, carrying whatever you choose to type there.

What is not in place yet

Every item here is a control this page would otherwise be expected to claim. They are listed because a security page that mentions only its strengths tells you nothing about the ones it left out.

  • Where the database and the application containers run. The production environment is not provisioned yet, so there is no host and no region to name — and naming one before it exists is exactly the claim this page refuses to make. When it is chosen, the host, its region, and its encryption-at-rest posture are stated here.

  • Encryption at rest for the database. It is a property of the managed Postgres that has not been chosen yet, so it is not a promise we can make today.

  • TLS on Exclia’s own domains, with certificates and the domain map settled. Requests we make to providers already go over HTTPS; the requests you make to us are part of a deployment that does not exist yet.

  • Automated database backups, and a restore that has actually been performed into a scratch environment and timed. An untested backup is an assumption, and this page does not report an assumption as a control. The audit trail’s durability is the product’s whole value, so this one blocks charging anybody.

  • A public status page with an external checker, so availability is something you read rather than something we assert.

  • Secrets in a managed store, and least-privilege database credentials for each application. Today they are deployment configuration held outside the repository, which is not the same thing.

  • A dependency audit in the build pipeline that fails on known vulnerabilities. Lint, typecheck, tests, and the browser suite run on every change; this check does not exist yet.

  • The paperwork for the North American report storage: the provider’s data-processing agreement with standard contractual clauses. The transfer itself is named in our privacy policy, which is where a reader should expect to find it — what is missing is the signed safeguard behind it, so it is listed here rather than described as covered.

  • One gap in erasure we know about and would rather you heard from us: when a potential match is resolved, the evidence is frozen onto that record as it was seen, and a later erasure clears the roster record without reaching into that frozen copy. The trail is deliberately not editable, which is what makes it evidence — so honoring both obligations at once needs a design decision rather than a quick change, and it has not been made.

Reporting a security problem

If you have found a vulnerability in Exclia, send it to security@exclia.com. Include what you did, what you saw, and enough detail to reproduce it — a URL and a request are worth more than a scanner’s summary.

A report is acknowledged by a person within 3 business days. You will get an assessment of what we think it is, what we are doing about it, and a rough timeline — and an update when it is fixed, whether or not you chase us.

Exclia runs no bug bounty and offers no payment. That is stated up front rather than discovered after the work: if you want to be paid for the finding, this is not the place to send it.

Research done in good faith within the scope below is welcome, and we will not pursue or report a researcher who stays inside it. If you are unsure whether something is in scope, ask first at the same address.

Scope

In scope: the Exclia application, its API, this site, and the free public checker. Use your own account and your own test data.

Out of scope: denial of service and load testing, spam or social engineering of our providers, physical access, and automated scanning heavy enough to degrade the free checker for other visitors — that checker is rate-limited for everyone, so a scan takes the service away from real users.

A problem in Clerk, Stripe, Resend, or Cloudflare belongs to that provider’s own disclosure programme. Send it to them, and tell us if it affects Exclia so we can act on our side.