Security overview · version 1.0
Your data stays in one place, and only the people who need it can see it.
Client data lives in one Amazon RDS database in US West (Oregon), reachable only from our web server. No shared documents, no public links.
- Isolated code sandbox
- Submitted code runs with no network, in our own containers.
- No passwords
- Sign-in by one-time email code or passkey; nothing to leak or reuse.
- No trackers
- No analytics or tracking services in the app.
- Independent
- No AI lab holds equity or a board seat.
Where data lives
- Application: Amazon EC2, US West (Oregon). Database: managed PostgreSQL on Amazon RDS, US West (Oregon). Code sandbox: our own isolated containers on a dedicated Amazon EC2 server, US West (Oregon).
- Encrypted in transit with TLS from browsers to Amazon CloudFront, from CloudFront to our web server, and from the web server to the database. Encrypted at rest on all AWS storage: server disks, the database and file storage.
- Our web server accepts traffic only through Amazon CloudFront, which filters it with a web application firewall (AWS WAF) and AWS's DDoS protection. CloudFront caches only our public site files; pages and data are never cached.
- AWS is the only third party that stores or processes client data, unless a client that doesn't build AI models turns an AI model on for its project. Then that model's provider (today only Anthropic, which doesn't train on API data) reads the project's answers, to give our reviewers a second opinion and to measure how often a model solves each coding task. It's off by default, and the client decides. For clients that build AI models it stays off, whatever they ask: model providers' terms forbid using their models to help build competing ones. GitHub holds our source code, never client data.
- Client data enters as task files (JSONL or CSV) uploaded in the app. Each upload is checked for personal data (email addresses, phone numbers, Social Security and card numbers) and held until the client removes it or confirms it's made up or covered by a data processing agreement. Apart from the opt-in AI model above, data leaves only as exports the client downloads, in the app or with read-only API keys, each with a datasheet: where the data came from, how it was made and checked, its quality figures and the rights in it. Webhook events carry IDs, never data. It is never kept in shared documents, email attachments or public links.
Running submitted code
Code and tests that experts write run only in our own containers, never on a third-party sandbox service. Containers run under gVisor for an extra layer of kernel isolation.
Fresh container
Created for each check, deleted afterwards
No network
Code cannot call out or be reached
Read-only file system
Only temporary scratch folders are writable; nothing is mounted from the host
Unprivileged
Runs as a normal user with every Linux capability removed
Hard limits
1 CPU · 512 MB memory · 128 processes
Time-boxed
30 seconds per test run
The sandbox server accepts connections only from our web server, over a private network inside our AWS account, and only with a secret token. It keeps nothing: results, including up to 16,000 characters of test output per run, are saved in our database with the answer.
We run the isolation tests, the no-network test among them, on the production sandbox server itself, under gVisor, and keep each run's output as evidence (last run October 17, 2026).
Who can see what
| Role | Can access |
|---|---|
| Client users | Only their own organization's projects, progress and exports. The database enforces this too, with row-level security. |
| Experts | Only projects in their approved field, and only the task they are working on (one at a time per project). They see each client project under a codename, never the client's name or its own name for the project. |
| Senior reviewers | Answers in their own fields, never their own work, under the same codenames. |
| Our operations team (1 person) | All projects, to set them up, price them and monitor them. |
Reviewers, client users and exports see experts only under per-project pseudonyms.
Accounts and access
- The server checks the user's role on every page and action. Exports are served only to the client that owns the project.
- As a second lock, client pages, exports and the API read the database through a separate role that row-level security limits to that client's own rows.
- There are no passwords. People sign in with a one-time code emailed to them (valid 10 minutes, stored only as a hash), and can add two-factor login with an authenticator app. Staff sign in with a passkey. Experts and reviewers need a second factor, an authenticator app or a passkey, to see or send any client work.
- Sessions are stored in our database, so they can be revoked, and carried in httpOnly, Secure cookies. They last up to 7 days; staff sessions end after 12 hours, or 30 minutes idle.
- Sign-in attempts are rate-limited per visitor, and each code allows five tries.
- Staff confirm their passkey again before payouts, data exports, new client accounts and access changes.
- Two-factor login is required to sign in to every company account: email, code hosting and cloud hosting.
- Every staff action, and every time staff view or export client data, goes into an append-only audit log: who, what, when, from which address, and what changed. The database rejects edits and deletions, and entries are kept at least a year.
- Direct production database access is limited to one named person.
Experts
- All experts are located in the United States.
- Every expert passes a screening test and is approved by our team before their first task.
- Experts verify their identity before paid work: a government ID and live pictures of their face, compared on our own servers, so no outside company receives either. When the software can't settle a check, a person on our team decides from the photos, which are deleted once it's decided.
- Every expert signs a contractor agreement with confidentiality and IP-assignment terms before their first task, and confirms its data-handling rules every year.
- Before joining a client project, an expert accepts its terms and answers a conflict-of-interest question: someone who works for a company that builds AI models can't work on another model builder's data.
- All work happens inside our platform.
- Our original-work policy forbids using AI tools to write, check or translate answers. A person reviews every answer, helped by unannounced known-answer tasks and by flags for unusually fast or short work, pasted text, near-copies of another expert's answer and AI-style writing. An expert is removed on the first confirmed case.
Use, retention and deletion
- A client's data is used only for that client's project. It is never shared with other clients or used to train models.
- We keep client data until 30 days after the project ends, then delete it automatically. A client can ask for earlier deletion, from the project page or by email, and we do it within 7 days. Deleted data leaves our automated backups within 7 days. We confirm each deletion in writing, and the audit log records it. Invoices stay as financial records, with amounts and the project's name only.
Incidents
We notify affected clients within 48 hours of confirming a security incident, or sooner where the contract says so, at the contact named in the contract. A written incident-response plan sets who is told what, and when. Security contact: security@canonset.com.
Independence and customer eligibility
No AI lab owns equity in Canonset or holds a seat on its board. We do not work for organizations headquartered in, or at least 50% owned or controlled from, China (including Hong Kong and Macau), Russia, Iran, North Korea, Cuba or Venezuela, directly or through resellers. We screen every client's parent company against US government restricted-party lists. We never train models on your data, and we never reuse one client's tasks, rubrics or guidelines for another.
Subprocessors
The companies that process data for us, all in the United States:
| Company | What it does for us | Client data |
|---|---|---|
| Amazon Web Services | Hosting: the web server, the database, the code sandbox, file storage and the emails we send | Stores and processes it, in US West (Oregon) |
| Anthropic | Claude's second opinion for reviewers and its difficulty measurement for coding tasks | A project's tasks and answers, only when a client that doesn't build AI models turns it on for that project. Anthropic doesn't train on API data |
| Stripe | Invoices, payments and expert payouts | None: billing contacts and amounts only |
| Google Workspace | Our business email | None: client data is never sent by email |
Quality, measured
- Our public coding samples: 17 of 17 verified in the sandbox, every test passing twice on the reference solution, 0 flaky, last run Oct 27, 2026.
- Client-project rates (first-pass approval, returns for changes, submissions flagged) appear here once 50 answers have been reviewed on client projects; none has run yet.
- Every figure is computed from the platform's records when this page is read, never typed in. A client's own figures are in their quality report and datasheet.
Planned controls
Not in place yet, each with when it happens:
- SOC 2: readiness, then a Type I auditStarts within 30 days of our first signed pilot
- Single sign-on (SAML) for client companiesWhen a client asks
- Retention settings per client (deletion requests are already self-service)When a client asks
- Independent penetration testBefore the first client contract that requires one
Want to see the work itself? Every open sample shows the checks it passed.