Security Overview
How AirTA Sites protects agencies' sites and candidates' data: how it is built, the controls in place, and what isn't in place yet. Written to answer a security review.
Updated 3 November 2026
Trust Center
A recruitment website holds people's CVs. So we hold as little as we can, for as short a time as you choose, in Tokyo, walled off from every other agency and from the AI. Built for Japan's privacy law (APPI), with each measure listed below, including the ones not finished yet.
Hosted in
Tokyo
Sites, the admin, the database and uploaded files all run and are stored in Japan.
Where data is keptBackups
Daily
Encrypted and kept off-site. Last restore test 2 November 2026: all 133 tables back in 8 seconds, with 0 errors.
Restore testsBreach notice
48 hours
The longest you wait to hear from us if candidates' data is leaked, lost or damaged. It is a term of the contract.
Incident planHealth checks passed
100%
RunningChecked every 5 minutes since monitoring began on 12 Nov 2026. A check that didn't run counts as failed.
System statusFive documents a security review asks for, each in English and Japanese. The controls they cite show their status live from the register below, and every page prints to PDF.
How AirTA Sites protects agencies' sites and candidates' data: how it is built, the controls in place, and what isn't in place yet. Written to answer a security review.
Updated 3 November 2026
What we do when something goes wrong, how fast you hear from us, and how we help you meet your own duties under Japan's personal information law.
Updated 3 November 2026
How much data a failure could cost, how fast we can bring the service back, the risks we plan for, and the restore tests that show it works.
Updated 3 November 2026
What AirTA Sites holds for your agency, where it is kept, how long, how it is deleted and how you take it with you.
Updated 3 November 2026
The rules everyone who runs AirTA Sites follows to protect the service and the data agencies entrust to it.
Updated 3 November 2026
69 standard security questions, answered from the same register as this page, in English and Japanese. Sent with the security pack.
On request · a person replies within one business day
The contract, with our data processing terms in Section 14.
Updated 11 November 2026
English日本語How we handle personal information, here and on the sites we host.
Updated 12 November 2026
English日本語Every company that processes data for us, what it gets and where.
Updated 11 November 2026
English日本語Live checks every 5 minutes, with 90 days of history and every incident written up.
The site, its database and the applications in it are served and stored in Japan.
Data handlingPages are served from Vercel's Tokyo region and data is stored in Supabase's Tokyo region.
Analytics are first-party, fonts are served from your own domain, and embedded videos and posts load only when a visitor chooses to play them.
Isolation is enforced by the database itself, not by remembering to filter.
How it worksRow-level security on every agency table
Every row carries its agency's id, and the database refuses any query that isn't for the agency signed in. The rule is forced, so even the table owner is bound by it.
The app can't switch the rules off
The application connects with a restricted database role that can't bypass row-level security, can't delete an agency, and can update only the agency's own settings row.
Isolation tested before every release
An automated test acts as one agency and tries to read, write and change another's data, and checks that agents can't read names, emails or notes. Releases go out only through a gate that runs it.
Database reachable by our servers only
Only the site's servers connect to the database. Its tables aren't exposed through Supabase's public data API: the public roles have no access to the schema the service uses.
CVs in private storage, one-minute links
CVs are stored privately in Tokyo, in each agency's own folder. A file's address opens nothing on its own; each download is a one-minute link for a signed-in team member, and it is logged.
Each agent works on a data level you choose. Names, emails and phone numbers never reach the AI.
AI and candidates' dataYour pages, jobs and team profiles: only what's already public
Cookieless analytics and Search Console. No individual can be identified
Application counts, stages and times. Never names, emails or notes
Career history, skills, languages and the applicant's own message, with names and contact details removed first. Only the Researcher and the Candidate Assistant, and only once the owner allows it. Never names, emails, phones or LinkedIn
Work history and applications, for the Researcher and the Candidate Assistant only. Off until your owner switches it on and confirms your privacy notice covers it. Names, emails and phone numbers never reach the AI.
Then deleted automatically. The apply form's privacy notice states the period, generated from the same setting.
Retention and deletionKeep declined applications for 30 days and placed ones for a year, if that's what your process needs.
When a candidate asks to see or delete what you hold, find everything about them and act on it in one place.
Notification emails carry a link into the admin, never a CV or a candidate's details.
HTTPS only, with HSTS
Every page is served over HTTPS with a two-year Strict-Transport-Security header, and certificates renew automatically, on our domains and each agency's own.
Security headers on every page
Framing, content sniffing, referrers and browser features are locked down on every response, no header names the software behind the site, and downloads and relayed images carry their own stricter sandbox.
Everything written is cleaned before it's shown
Text an agency or a visitor writes is cleaned before any page or email shows it: no raw HTML and no scripts.
Spreadsheet exports can't carry formulas
Exports open in Excel with Japanese intact, and any cell that could run as a formula is neutralised.
Every CV a candidate sends is inspected
Files are judged by their bytes, not their names. Macros, scripts, embedded programs, remote templates, external links in spreadsheets and password-protected files are refused.
An activity log no one can edit
The activity log of who changed what is append-only: the application's database role can add entries but can't change or delete them.
Every company that processes data for the site, and what it receives. We give you 30 days' notice before adding one.
The full list| Company | For | What it gets |
|---|---|---|
| VercelTokyo region | Hosting | Everything a visitor sends to a site passes through it; request logs keep no form contents. |
| SupabaseTokyo region | Database | All data the service holds, separated per agency by row-level security. |
| AnthropicUnited States | AI features | Public site content and counts. The site assistant receives what visitors type, and the feedback agent survey comments, with email addresses and phone numbers removed first. Applicants' work history only at a data level the agency turns on, with names and contact details removed. Never kept for training. |
| ResendTokyo region (sending) | Recipient's email address and the message; the agency's sending domain and its DNS records. Notifications to agencies carry a link, never a CV or an applicant's details. | |
| StripeUnited States and Japan | Plan subscriptions by card or bank transfer, invoices, and card payments for AI credit top-ups | The agency's name and billing address, and the paying staff member's name and email; card details, or the details of the bank transfer. We never see or store full card numbers. |
| ElevenLabsUnited States | Speech to text for job and intro videos | The audio of a recording the agency's staff make. Never candidates' data. |
| GoogleUnited States | Search Console | The connection's access credentials, stored encrypted, and the addresses of job pages. Nothing about visitors or candidates is sent. |
| DataForSEOOutside Japan | Search data | Search words, job titles and website addresses. No personal data. |
| SerperOutside Japan | Search results for blog research, and who ranks on Google's first page | The topic or search words. No personal data. |
| SE RankingOutside Japan | Search data | Search words and website addresses. No personal data. |
| SearchApiOutside Japan | Google for Jobs listings, and answers from ChatGPT to questions about an agency's field | Job titles, cities and questions about the field. No personal data. |
Trust is also being able to leave.
Your pages, your design and your content are yours, on your own domain.
Your content, settings and applications, free, whenever you want them.
If a breach ever affects your data, we tell you within 48 hours, so you can meet your own reporting duties.
A security questionnaire from a client of yours? Ask for the security pack and we'll help you answer it.
For your security or procurement review, before you sign or at any time after. Free, and a person replies within one business day.
The full list we work from: what is live, what we're building and what is planned. Nothing unfinished is shown as done.
75 controls, checked against the code on 3 November 2026.
5 of 6 live
Where the site runs, where the data sits, and how it travels.
Sites and the admin run in Vercel's Tokyo region, the database is in Supabase's Tokyo region, and uploaded files, CVs and recordings are stored in Tokyo.
Every page is served over HTTPS with a two-year Strict-Transport-Security header, and certificates renew automatically, on our domains and each agency's own.
The application, migrations and every operational script connect to the database over TLS and check its certificate against Supabase's root, so a connection can't be read or redirected on the way.
Only the site's servers connect to the database. Its tables aren't exposed through Supabase's public data API: the public roles have no access to the schema the service uses.
Visitor analytics are first-party, fonts are served from the site's own domain, and embedded videos and posts load only when a visitor chooses to play them.
Our own connections are already encrypted. This switches on Supabase's server-side setting so the database itself turns away any connection that isn't.
Due: November 2026
5 of 6 live
One agency's data can't be reached from another's, by design of the database.
Every row carries its agency's id, and the database refuses any query that isn't for the agency signed in. The rule is forced, so even the table owner is bound by it.
The application connects with a restricted database role that can't bypass row-level security, can't delete an agency, and can update only the agency's own settings row.
An automated test acts as one agency and tries to read, write and change another's data, and checks that agents can't read names, emails or notes. Releases go out only through a gate that runs it.
CVs are stored privately in Tokyo, in each agency's own folder. A file's address opens nothing on its own; each download is a one-minute link for a signed-in team member, and it is logged.
Raw video and audio takes, and the files made from them, are stored privately. Everything that reads them, including transcription and the AI, gets a short-lived signed link. Only the finished, published video is public.
Moves the admin to its own host, apart from agencies' public sites, so a page on one site can never share a browser origin with an admin.
4 of 6 live
Who on your team can sign in, and what each role can open.
Team members sign in with a code sent to their work email. Codes are stored only as keyed hashes, expire, and lock after a few wrong tries, counted so that parallel guesses can't slip past the limit.
Members can add an authenticator app with ten recovery codes, and owners can require it for everyone. Each code works once, and a stolen session can't replace an authenticator that is already on.
Owner, admin, editor, author, and viewer; an author changes only their own jobs and profile. Each admin page and download names the role it needs, and a page's rule holds however the request is dressed up. An agency always keeps an owner.
Sessions are 256 random bits, stored only as a hash, in cookies that scripts can't read and that belong to one agency. The Team screen shows how many browsers each member is signed in on, and can sign a member out everywhere.
Today a team member's session lasts 14 days from their last visit and a sign-in link can be used again within its period. This makes links single-use and ends every session after a fixed time, however active.
Lets an agency's team sign in through its own Microsoft Entra ID or Google Workspace, under the agency's own policies.
5 of 5 live
When AirTA Sites staff look at your admin or data, you see it.
When we help in your admin, we sign in as a named "AirTA Sites support" member on your Team screen, which your owner can remove. No one else can take that name.
Each admin page the support seat opens and each file it downloads is recorded in your activity log, under its own Support tab. Changes it makes are recorded like any member's.
Any work on an agency's data in the database goes through one script that runs inside that agency's walls and writes the reason to its activity log in the same transaction. It refuses without a real reason.
The activity log of who changed what is append-only: the application's database role can add entries but can't change or delete them.
The written policy limits direct access to the database console to incidents, each one recorded in the incident log.
10 of 13 live
How the code handles what people type, upload and link to.
Text an agency or a visitor writes is cleaned before any page or email shows it: no raw HTML and no scripts.
Framing, content sniffing, referrers and browser features are locked down on every response, no header names the software behind the site, and downloads and relayed images carry their own stricter sandbox.
Files are judged by their bytes, not their names. Macros, scripts, embedded programs, remote templates, external links in spreadsheets and password-protected files are refused.
When the service fetches a picture or page from an address someone gave it, it checks each connection lands on the public internet, never inside our network, follows redirects one by one, and caps size and time.
Authenticator secrets, the tokens of a connected Google account and the addresses of webhooks you connect are encrypted before they're stored; a tampered value opens to nothing.
Messages from Stripe and Resend are accepted only with a valid signature, and a paid session grants credits only when it is ours and matches exactly.
Exports open in Excel with Japanese intact, and any cell that could run as a formula is neutralised.
Releases go out through one command that runs type checks, the full test suite, lint, the isolation test and a check for known high or critical vulnerabilities, stops at the first failure, and records the result.
Every day, every package that ships is checked against the public database of known vulnerabilities, and Node.js, Next.js, React and PostgreSQL against their support dates. Each finding gets the policy's deadline the day it is found, we are alerted, and the result is published on the status page.
Development and testing run on their own database, which holds only test agencies and sample data. The live database is never used to build or try features.
CVs your team adds in the admin will go through the same inspection as those candidates send.
Due: Before the first live agency's candidate data
Adds a Content-Security-Policy that lets only the site's own scripts run, using a fresh value for each page, as a second line of defence behind the cleaning above.
A test of the web application and its interfaces by an outside firm, with its findings fixed and retested. Its summary will be in the security pack.
Due: When an agency's security review needs one
4 of 5 live
Limits that keep forms, inboxes and AI credits from being misused.
Applications, CV uploads, enquiries, alert sign-ups, sign-in codes and the site assistant are limited per address across every agency's site, and a visitor who hits one is told in their language how long to wait.
An email address typed into any form receives at most a handful of emails a day across all sites, and fewer for alert confirmations. Applications are always saved, even when the receipt is held back.
Public forms carry a hidden field people never see; a submission that fills it is answered quietly and goes nowhere.
The site assistant is limited per visitor address and per agency, and each turn reserves its credit before the model is called, so parallel requests can't spend past the balance.
Vercel BotID is running on public forms in observe mode. Once a week of results shows it doesn't turn away real candidates, it starts blocking.
Due: November 2026
3 of 3 live
How we find out something is wrong, before you have to tell us.
Every server error is recorded with the route's pattern, never the real address, and the operator is alerted. Logs drop database values and mask emails, phone numbers and tokens.
Every scheduled job records each run and reports failure loudly. A check every five minutes tests the database and notices a nightly job that didn't run.
airtasites.jp/status shows 90 days of checks for the sites, email delivery and scheduled jobs. A check that didn't run counts as failed, and days before monitoring began show as no data, never green.
4 of 7 live
Copies we can restore from, and proof that restoring works.
The database is copied in full every day over a verified encrypted connection. Daily copies are kept 7 days, Monday copies 5 weeks and first-of-month copies 190 days, and each copy is checked to be complete before it is kept.
Each day's backups are encrypted with AES-256 and copied to separate cloud storage, and every copy is reopened after upload to prove it restores.
A backup is restored into a fresh database and compared with production table by table, at least once a quarter. The latest result is shown on this page.
Recovery objectives, and what we do about outages, data loss, a lost provider account, stolen credentials, a lost computer and our own unavailability, tested by the restore drills.
A trusted person, named in our internal plan, holds sealed instructions to reach every agency, keep the service running and help each agency take its data and domain elsewhere.
Due: November 2026
Turns on continuous database backup, so data can be restored to any moment rather than to the last daily copy: from up to 24 hours of loss to minutes.
Due: With the first paying agency
Images, CVs and recordings are stored in Vercel Blob, apart from the database, and aren't in the daily database backup. This adds an encrypted copy of them alongside it.
Due: Before the first live agency's candidate data
Latest restore test: 2 November 2026
An AirTA Sites backup restored into a fresh database, its row counts matching production table by table (bar rows written after the backup was taken).
8 of 10 live
How long candidates' data is kept, how it leaves, and what happens in a breach.
Each agency sets how long applications are kept, by outcome, and they are deleted automatically when that time is up. The apply form's privacy notice states the period from the same setting, and a change never lengthens what an applicant was told.
Backups are never edited, so deleted data remains in older copies until they expire. The longest-kept copy is 190 days old, so every deletion has reached every backup by then.
When a candidate asks to see or delete what an agency holds, Settings › Privacy finds everything about them in one place and acts on it.
Emails to your team carry a link into the admin, never an applicant's name, contact details, CV or what they wrote.
Owners can download the site's content, settings and applications at any time, free.
Extends the export to every record and file an agency has, and adds an offboarding routine that deletes everything at the end of a contract and gives the agency a record of it.
If a leak, loss or damage affects candidates' data, we tell the agency within 48 hours and help with its report to the Personal Information Protection Commission and its notices to the people affected. It is a term of the contract.
Severity levels, who does what, the APPI reporting timeline, notice templates in English and Japanese, and a review after every incident.
The job, job-seeker and fee registers keep what Japan's Employment Security Act requires, for two years after each record ends, even after an application is anonymised or a person asks for deletion. Then the nightly job deletes it. No AI agent can read them.
Due: December 2026
Removes the contact details of prospective agencies' staff from the reference data shipped with the application, so personal data lives only in the database, where deletion reaches it.
Due: Before the first live agency's candidate data
4 of 6 live
What the agents and the site assistant may read, and what they never see.
Agents work on public content, counts or redacted work history, at the level each one is given. Names, email addresses and phone numbers are never sent to the AI.
Applicants' work history reaches the AI only for the Researcher and the Candidate Assistant, and only after your owner switches it on and confirms your privacy notice covers it.
CVs lose names, contact lines, links, birth years and family details; visitors' messages and survey comments lose emails and phone numbers. This happens on our servers, before the text is sent.
The AI is reached through Anthropic's commercial service, whose terms exclude using what we send to train its models. Matching uses embeddings computed on our own servers.
Most agents already read through a database role limited to their level. This moves the remaining few onto it too, so the level is a permission and not only a rule in the code.
Due: Before the first live agency's candidate data
Consultants' recordings go to ElevenLabs for captions. Its terms allow it to learn from what it receives unless the account opts out; this records our opt-out. Candidates' data never goes there.
Due: November 2026
4 of 4 live
Every company that processes data for the service, listed and kept in step with the code.
airtasites.jp/subprocessors names each company, what it does, what it receives and where. We give 30 days' notice before adding one.
Every outside service the servers call is registered and tied to a listed sub-processor, a service the agency connects, or public data. A new one fails the tests until it is listed.
Your CRM, chat tools, webhooks, LINE, and the analytics and ad tags you add (Google Analytics, Tag Manager, ad pixels) are your own vendors, not ours. They are listed separately, and nothing goes to any of them until you connect or add it. Your site's privacy page names every tag you add.
Each sub-processor's security terms, breach notice terms, data location and published audits are reviewed once a year and when a contract changes, and what the review finds is acted on.
2 of 4 live
The computers and accounts that run the service, and the written rules behind them.
The computers used to run the service have full-disk encryption on and lock their screens after five minutes.
Access control, patching deadlines (critical within 72 hours, high within 14 days), change management, suppliers, devices and confidentiality, reviewed every year.
Two-step verification on every account that can reach the service: hosting, database, code, email and payments, with credentials kept in a password manager.
Due: November 2026
Insurance covering the costs of responding to a security incident.
Your private preview is token-protected, never indexed, and expires after 30 days. We read your public pages only.
Start free trial