Skip to content

Continuous Backups ​

Your data belongs to you

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 ​

Choose how often, Recruitly writes your backup, take it whenever you like

What you get ​

PlanHow oftenPrice
MonthlyOnce a monthFree
WeeklyOnce a weekPaid add-on
DailyOnce a dayPaid 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 ​

Your records and your CVs and documents

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.json is 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.gz parts 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 -1
json
{"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.

Recruitly — Recruitment CRM for Agencies