Trust & Data Posture
How we handle your data, who else sees it, and what we deliberately do not claim. We list the controls we actually operate and the certifications we do not (yet) hold. If anything below changes, this page is the source of truth.
Controls we operate today
Encryption in transit
TLS 1.2+ on every request to every endpoint. HSTS on the marketing surface. No fallback to plaintext.
Encryption at rest
Application database encrypted at rest via Supabase managed Postgres on AWS KMS. Backups carry the same encryption.
Row-level security
Multi-tenant tables carry RLS policies enforced by Postgres itself. Server-side API routes run with a service role that bypasses those policies by design, so on those paths isolation is enforced by the queries instead. Both are true and we would rather state both than only the flattering half.
Least-privilege admin
Admin access to production is restricted to named individuals and is logged. The service role behind server-side routes is technically able to read any row, raw assessment answers included; what keeps them away from an administrator is that no admin-facing query selects them.
Published sub-processor list
Every sub-processor is named on this page with its purpose and location, rather than kept behind a request form. Each operates under its own published data-protection terms; we have not executed a bespoke agreement with each of them and do not claim to have. The list updates as sub-processors change; institutional customers get notice.
Candidate answer privacy
Raw item-level answers are never readable by any administrator in any tier — only by the user who created them and by the scoring engine. Aggregate metrics for coordinators are computed from scored outputs, not raw inputs.
What we will not do
We do not sell data.
Not now, not to anyone, not for any price. Not assessment data, not contact data, not cohort data. One thing belongs under this heading rather than hidden from it: for our own consumer advertising measurement we send server-side conversion events to Meta carrying a hashed email address and hashed first name, which the CCPA treats as "sharing for cross-context behavioural advertising" even though no money changes hands. It never fires for someone who arrives through an employer invitation or a class code. If we ever change any of this, it will be an explicit opt-in change visible here.
We do not train AI models on customer data.
The AI-generated content surfaces call third-party LLMs at request time without contributing the user's assessment data to those models' training corpora.
We do not claim certifications we have not earned.
No SOC 2 badge unless we are certified. No ISO 27001 mention unless we hold it. No HIPAA claim unless we are operating as a business associate under a BAA.
We do not surface raw answers to admins.
Coordinators see aggregate cohort metrics and consented summaries. Item-level answers stay with the candidate and the scoring engine.
Sub-processors
These sixteen third-party services process customer data on our behalf. Until 20 September 2026 this table listed five — the other eleven were live and unpublished, which is a disclosure failure and not a rounding error, so it is written here rather than quietly corrected. Each operates under its own published data-protection terms; we have not executed a bespoke agreement with each of them and do not claim to have. The list is updated when sub-processors change; institutional customers get notice in advance.
| Sub-processor | Purpose | Residency |
|---|---|---|
| Supabase | Managed Postgres, authentication, file storage | EU (Ireland, eu-west-1) — one region, not selectable; corporate entity US |
| Amazon Web Services | Underlying infrastructure for the database above | EU, as engaged by Supabase |
| Vercel | Application hosting, serverless execution, edge cache, CDN | US corporate; global edge |
| Cloudflare | DNS, edge security, bot mitigation, web analytics | US corporate; global edge |
| Stripe | Payment processing | US / EU; assessment data never sent |
| Resend | Transactional and notification email delivery | US |
| Upstash | Rate limiting, cached career guidance, and the queue that carries rendered emails | US |
| Google (Gemini via Vertex AI) | Model inference for generated narrative content | Google Cloud; prompts carry assessment scores |
| Groq | Model inference fallback when the primary model is unavailable | US |
| Microsoft (Clarity) | Heatmaps and session replay | US; recorder stopped on the assessment runner, retained on results pages |
| Google Analytics 4 | Website usage analytics | US; Consent Mode v2 |
| Ahrefs | Marketing web analytics | Singapore |
| HubSpot | CRM for institutional enquiries; assessment-completion events | US / EU |
| Google (One Tap sign-in) | Federated sign-in prompt | US |
| Meta (Conversions API) | Server-side consumer advertising measurement — never for org-invited or class-code candidates | US; hashed email and first name, IP, user agent |
| Telegram | Operational error and incident alerting to our own team | Non-EEA; alert body can include an affected user's email address |
Data residency
The application database is resident in the European Union — Ireland, eu-west-1. There is one region: it is not a per-tenant setting, and there is no US or APAC alternative to switch to. That covers the datastore, not the whole system. Hosting and edge, email delivery and queueing, analytics and model inference run through vendors outside the EU, each named in the table above, so a procurement question of the form “does any of our data leave the EU?” gets a yes with a list attached rather than a no.
We do not currently offer dedicated single-tenant infrastructure. Tenancy in the shared database is held by row-level security policies in Postgres plus the query layer in our own API routes, which run with a service role that bypasses those policies by design. We used to describe this as enforced at the database layer alone; that was the better-sounding half of a two-part answer.
Data Processing Agreement
Drafted, not yet signable. A DPA covering GDPR Article 28 processor obligations — the sub-processor list, the security controls above, the data-export and deletion mechanics, international transfers, and the notification terms for sub-processor changes and security incidents — has been written against the infrastructure as it actually runs, and it is with legal review as of September 2026. This page previously said a copy would arrive the same business day. It would not have, and sending a procurement team a compliance document no lawyer had read would have been the worse outcome. Email support@jobcannon.io and we will tell you where it stands against your timeline. Once reviewed it is included with Team, Scale, and Enterprise.
Security incident response
We follow the GDPR Article 33 notification window: any incident affecting customer data is reported to the listed billing contact on the affected organization within 72 hours of confirmation, with a post-incident report (root cause, scope, remediation, prevention) within 30 days. We have not had an incident requiring such notification to date; if and when one occurs, we will say so here, with the date, and link the post-incident report.
What we do not yet have, said plainly
We are not SOC 2 Type II certified. We are not ISO 27001 certified. We do not hold HIPAA business-associate status. We do not operate a public bug bounty programme. We do not currently offer single-tenant dedicated infrastructure. SAML single sign-on is not enabled today. There is no verifiable-parental-consent workflow for under-13s. Our Data Processing Agreement is drafted but has not been through legal review, so it is not signature-ready. Each of these is a real gap; some are on the roadmap and some are not. If a specific control is a hard requirement for your procurement, contact us and we will tell you honestly whether we can meet it now, when we will be able to, or that we will not pursue it.
FERPA, COPPA, and school deployments
U.S. school and district deployments operate under a school-official posture consistent with FERPA: deployments restrict who sees what student data, and deletion is available on request. The written agreement covering the records a district designates as student records is negotiated as part of the engagement — it is not a document we have drafted and waiting, and this page implied otherwise.
On COPPA our posture is data minimisation rather than parental consent, and the difference matters to a district. On a class code we collect no email address and no demographics: a student enters the code and picks a username. What we do not have is a verifiable-parental-consent workflow for under-13s. If your district requires one, that requirement is unmet today — our school-district page has said so for some time and this page should have matched it. Two guides walk administrators through the rest — the FERPA guide and the COPPA guide.
Contact
For privacy or data-protection questions, security disclosures, or DPA requests, email support@jobcannon.io. For specific procurement-team requirements, include the question in plain language and we will reply within one business day with whether we can meet it.
No. We will not claim a certification we have not earned. SOC 2 Type II is on our roadmap and we will publish the date the day the audit completes. Until then, the controls we already operate (encryption in transit and at rest, row-level security on multi-tenant tables, least-privilege admin access, and a sub-processor list published here rather than behind a request form) are listed below in plain language, with no badge attached to them.
Yes, in the substantive sense that matters: every JobCannon user has the right to export their data, the right to deletion, and the right to a copy of any record we hold about them. We act on those requests within the GDPR-mandated 30-day window, and account deletion actually runs during the request itself. Where we are not yet finished: a formal Data Processing Agreement has been drafted against our real infrastructure and is with legal review as of September 2026 — it is not signature-ready, and until it is we would rather tell you that than send you a document nobody has reviewed. Contact support@jobcannon.io and we will tell you where it stands against your procurement timeline. We do not display a GDPR badge because no enforcement body issues one; we display the underlying controls instead.
Application data — accounts, assessment results, organizational tenancy — is stored in Supabase's managed Postgres on AWS in Ireland (eu-west-1). There is one region: it is not a per-tenant choice and there is no US or APAC alternative to switch to. Read that as a statement about the primary datastore and not about every byte, because it is not the same claim: hosting and edge cache, email delivery, queueing, analytics and the LLM inference behind generated narratives all run through vendors outside the EU. They are named one by one in the sub-processor table on this page. Payment data never touches our servers — it goes directly to Stripe.
Sixteen, as at 20 September 2026 — and this page listed five until we audited the production environment against the code instead of against our own copy. The full table with purpose and location for each is on this page, above; we do not keep it behind a request form. In short: Supabase and AWS hold the application database in Ireland; Vercel and Cloudflare serve and protect the application; Stripe sees billing data and never assessment data; Resend delivers transactional email and Upstash queues it; Google (Gemini via Vertex AI) and Groq run the model inference behind generated narratives, and those prompts contain assessment scores, so "anonymized prompts" — which this answer used to say — was wrong; Microsoft Clarity, Google Analytics 4, Ahrefs and HubSpot cover product analytics and CRM; Google One Tap handles federated sign-in; Meta receives server-side conversion events for consumer advertising measurement, never for a candidate who arrives through an employer invitation or a class code; and Telegram receives our own operational error alerts, which can carry the email address of the user an error affected.
No — by deliberate design. In institutional deployments, coordinators see aggregate cohort metrics (archetype distribution, completion rates, skill-gap rollups) by default. Individual candidate summaries (archetype label, top career matches) are visible to coordinators only when the candidate explicitly consents during the assessment. Raw item-level answers are never exposed to any administrator in any tier. Two layers hold that, and it is worth knowing which is which, because this answer used to credit only the stronger one: multi-tenant tables carry row-level security policies enforced by Postgres itself, and the server-side routes behind the admin dashboard run with a service role that bypasses those policies by design — on those paths isolation is enforced by the queries, which never select raw answers into an admin-facing response. The database layer is real. It is not the only thing standing between an application bug and a leak.
No. We do not train any model on customer assessment data, organization data, or cohort data, and we have no model of our own to train. The AI-generated content surfaces (premium narratives, career-explanation engine, coach-style framing) call third-party models at request time: Google's Gemini models through Vertex AI on Google Cloud, with Groq as a fallback when that is unavailable, both under standard commercial terms that exclude training-data use of prompts. One correction to what this page said before: the prompts are not anonymized. They carry the assessment scores and the result label, which is assessment data, and describing it otherwise made a weaker control sound like a stronger one.
A candidate deletion request removes the user record, the assessment results, the answers, and the user's presence in any cohort. It is not a 30-day queue, which is what this page used to promise: the erase routine runs inside the request, and by the time the call returns the rows are gone — it then re-checks that nothing keyed to that account survived and alerts us if anything did. Aggregate cohort metrics that depended on that user's presence remain (the rollup numbers do not retroactively change), but the user-level data is gone. An organization deletion removes the org tenancy, all cohorts under it, and all org-scoped data. Backups are the one exception, and the real number is smaller than the one we used to publish: the managed database keeps daily backups for 7 days, with point-in-time recovery not enabled (measured 20 September 2026). Data inside an existing backup cannot be selectively erased — it ages out with the backup.
The honest answer is narrower than the usual vendor answer, so read it slowly. For U.S. K-12 partners we operate a school-official posture consistent with FERPA: institutional deployments restrict who sees what student data, and deletion is available on request. What does not exist yet is the paperwork — we do not have a written school-district agreement drafted and waiting, and our Data Processing Agreement is still in legal review, so both are negotiated as part of a district engagement rather than signed off a shelf. On COPPA our posture is data minimisation, not parental consent: on a class code we collect no email address and no demographics, a student enters a code and picks a username, and the production surface carries no third-party advertising trackers for them. We do NOT have a verifiable-parental-consent workflow for under-13s — if your district requires one, that requirement is unmet today, and our /for-school-districts page says the same thing. Our guides on /b2b/guides/ferpa-student-data-career-platform and /b2b/guides/coppa-compliance-career-assessment-under-13 walk school administrators through the rest of the posture.
Not today — and this answer said "yes" until we checked the live setting instead of the code. SAML 2.0 is switched off on our authentication project (verified against production, not inferred: the admin endpoint answers cheerfully with an empty list whether SAML is on or off, and the setting that actually decides it reads disabled). So no identity-provider connection would work if we tried to stand one up for you tonight, whoever your IdP is. Turning it on is a project-level configuration change that moves us onto per-SSO-user billing; we will make it for a district or enterprise engagement that needs it, so contact support@jobcannon.io with your identity provider and the domain your team signs in with and we will give you a date rather than a maybe. What works today is Google sign-in, including Google Workspace for Education accounts. Background in our /b2b/guides/saml-sso-career-assessment-platform guide.
Notification within 72 hours for any incident affecting customer data, consistent with GDPR Article 33. Notification goes to the listed billing contact on the affected organization and, where required, to the relevant supervisory authority. A post-incident report (root cause, scope, remediation, prevention) is published within 30 days to the affected customer. We have not had an incident requiring such notification to date; if and when one occurs, we will say so on this page.
Not yet, and this page promised one by default until today. A DPA covering GDPR Article 28 processor obligations — sub-processor list and notification of changes, data-export and deletion mechanics, the security controls, international transfers — has been drafted against our actual infrastructure rather than against our marketing copy, and it is with legal review as of September 2026. It is not signature-ready, and we will not send a procurement team a compliance document that no lawyer has read. Contact support@jobcannon.io and we will tell you exactly where it stands and what it means for your timeline. Once it is through review it is included with Team, Scale, and Enterprise.