architecture and data flow.

A plain reading of how Canary handles the most sensitive data a person has, and what the system refuses to do with it.

Technical documentation, revision 1.0

read the full privacy policy →
An empty office with two desks, a telephone, wall calendar and pendant lamps, no one at work.
An office with no one in it, Amsterdam, 1913.

how data moves through the system.

  1. separated identity

    Health data and identity are stored separately. Individual records are keyed by an anonymous identifier, not by name or employee ID, inside the application's data layer.

  2. the clinical layer

    Biomarker results are reviewed by a clinician before the member sees them. Raw lab data is handled under a defined retention window, not kept indefinitely.

  3. the aggregation gate

    Employer-facing insight is produced only above a minimum cohort size of 5. This is not a UI rule — it is enforced directly in the database: our Postgres row-level security policy for the aggregate-metrics table requires cohort_size >= 5 before a row is visible to any employer session. Below that floor, there is nothing to suppress in the UI, because the query returns no rows at all.

  4. consent boundaries

    Separate, revocable consent for clinical care, employer aggregation, and any model-development use. Participation is genuinely optional, and withdrawing consent does not remove access to the underlying clinical service.

A mining foreman in a helmet lamp and breathing apparatus holds up a small cage with a canary.
Mining foreman R. Thornburg with a canary used to test for carbon monoxide, 1928.

the floor, in practice.

What an employer session sees when one team is too small: not a hidden row or a zeroed-out one. For that session, the team does not exist.

What an employer can see
Illustrative
  • Engineering · 32 peopleTrends shown
  • Sales · 18 peopleTrends shown
  • Design · 4 peopleWithheld · under 5
  • Finance · 7 peopleTrends shown

Enforced by row-level security in the database, not by the screen. No individual is ever listed.

constraints, not promises.

Every row below describes something the system cannot do, not something we have committed not to do.

Two women write in ledgers at desks in a wood-panelled office while a man works at a counter window.
Office staff at work, Schenk biscuit factory, Rotterdam, 1922.
No individual health data is ever visible to the employer.
Enforced at the database level. The table holding individual health records has a row-level security policy that lets a member read only their own rows — there is no policy granting an employer-context session any access to it at all. With RLS default-deny, the absence of a policy is the guard: an employer session querying that table returns zero rows, not filtered rows.
No employer signal below the minimum cohort size.
The aggregate-metrics table's row-level security policy requires cohort_size >= 5. A cohort of 4 or fewer produces no visible row for any employer session — not a hidden one, not a zeroed-out one. It does not exist from that session's point of view.
No use of any data for employment, promotion, or dismissal decisions.
Prohibited contractually in every employer agreement, and structurally impossible in practice — the data an employer can query is aggregate by design and cannot be traced back to an individual.
No health data leaves the EU except via named processors under Standard Contractual Clauses.
Our database and authentication infrastructure run on Supabase, hosted in Frankfurt. Two processors operate outside the EU under Standard Contractual Clauses, disclosed in full on our privacy policy: WHOOP (wearable integration, only if you connect a device) and Anthropic (AI-powered insights, processed under a data processing agreement and never used to train models). We say this plainly rather than claiming data never leaves the EU, because it sometimes does, under a named legal basis.
No sale of data, ever.
Not to advertisers, not to data brokers, not to the employer beyond the aggregate view described above.

test it with your own questions.

Bring your DPO and your hardest questions to a pilot, or read what the research already knows.