Appearance
Continuous Backups

AI has become very good at finding holes in software, and new ones turn up every day, so nobody can honestly promise they'll never be hit. That includes us.
Your data already runs live in two countries, with backups locked away. Continuous Backups adds the one thing no vendor can match: a fresh copy of every record and every CV, in storage you trust. Whatever happens to us, or to anyone else, your agency still has its data.
One backup a month is free, with no limit on size.
Coming soon
Continuous Backups are not open to accounts yet. This page describes the service and the file format, so you can plan for them.
How it works

What you get
| Plan | How often | Price |
|---|---|---|
| Monthly | Once a month | Free |
| Weekly | Once a week | Paid add-on |
| Daily | Once a day | Paid add-on, twice the weekly price |
Backups run on a schedule. They are not a live feed: a backup holds your data as it was when that run started.
What's in a backup

A backup holds 14 data files and your documents.
- Records: candidates, contacts, companies, leads, deals, jobs, system users
- Hiring: job pipeline, interviews, placements, invoices
- Activity: notes and tasks
- Files: a list of your stored files, plus the CVs and documents themselves in parts of about 1 GB
The File Schema lists every field.
Where it goes
Recruitly storage is the default. There's nothing to set up: your backup is kept in separate storage, away from our production systems, and you download it whenever you need it.
Your own storage suits technical teams: any S3-compatible bucket, such as Amazon S3, Cloudflare R2, Wasabi or Backblaze.
How the files are laid out
text
{accountId}/
2026-11-02T101500Z/
manifest.json
candidates.jsonl.gz
contacts.jsonl.gz
companies.jsonl.gz
...
documents/
part-00001.tar.gz
part-00001.index.jsonl
part-00002.tar.gz
...- Each run gets its own dated folder, and older runs are not overwritten.
manifest.jsonis written last and lists every file with its row count, size and SHA-256 checksum. A folder with no manifest is a run that did not finish, so don't use it.- Documents go into
documents/as numbered.tar.gzparts of about 1 GB, and each run adds only what's new. Each part has an index listing the files inside it.
Reading a file
Each data file is gzipped JSON lines: one record per line.
bash
gunzip -c candidates.jsonl.gz | head -1json
{"id":"…","tenantId":"…","firstName":"Ann","company":{"id":"…","name":"Acme"},"createdOn":"2026-01-02T03:04:05.000Z"}Snowflake, BigQuery and most data tools load this format directly. Check a file against its row count and checksum in manifest.json.
How we keep your data separate
- Every read is limited to your account, and every row is checked against your account before it's written. If a row doesn't match, the run stops and nothing is published.
- Each table is built from a fixed list of fields. Anything not on the list can't reach a backup.
- Passwords, sign-in codes, tokens, CV text and National Insurance numbers are never in the data files.
- The backup service only has read access to the data it backs up.
- Secret keys for your own storage are stored sealed, and only the backup service can open them.