← all playbooks

Move to another ATS without taking the mess with you

A pre-move audit of your database: likely duplicates paired, records with no usable identifier listed, current titles and employers for the segment you place from, and an export of people and companies shaped to the columns your destination system imports. The migration itself stays with your vendor.

use when
you are about to move from one ATS or CRM to another, and you do not want the duplicates, dead records and old job titles migrated along with everything else
starts from
Your database

The prompt

Paste it into Claude Code or the Claude desktop app with Hyreflow connected. The first line tells your agent to use Hyreflow, so it reads the play, asks before it spends anything, and hands the work back to you.

paste this into Claude
Use hyreflow and check and tidy my database before we move it to another
ATS.

We are moving from <CURRENT_ATS> to <DESTINATION_ATS>. The destination's
import columns are in <IMPORT_TEMPLATE_FILE>.

The free part first, across people and companies:
- Count everything, and tell me how many records have an email, a mobile
  or a LinkedIn URL, and how many have none of the three.
- Pair likely duplicates with the reason. Do not merge or delete anything.
- List the fields my records use that the import template has no column
  for. I will decide what happens to those.

Then the paid part, only for <SEGMENT_I_STILL_PLACE_FROM>: pull each
person's current title and employer and set it next to what I hold.

Run five rows first and tell me what the full run costs before you do the
rest. Show me the changes before you write anything to the CRM.

Finish with an export shaped to the import columns. You are not doing the
migration. CVs, notes and history stay with the vendor's process.

Replace every <PLACEHOLDER> with your own detail. Everything else can stay as written.

What you need first

  • The ATS or CRM you are leaving, connected to your workspace
  • The import template or field list of the system you are moving to
  • A decision on which segment is worth refreshing, since that is the paid part
  • A Hyreflow workspace with credits

Tools it can reach for

The agent picks per step from what your workspace has. Nothing here is required by name.

What happens when you run it

Free steps are marked free. Anything that spends credits is marked, and the agent asks before the first paid run of any size.

  1. 1

    Count what you hold

    free

    People, client contacts and companies are read from the system you are leaving and counted by what each record can be matched on: an email, a mobile, a LinkedIn URL, or none of them. It is a read of your own system, so it is free.

  2. 2

    Pair the duplicates

    free

    People who share an email, a mobile or a LinkedIn URL, and companies that share a domain or a name, are paired by plain comparison. Nothing is merged. You merge in your ATS with its own tool, which keeps the notes and history from both records.

  3. 3

    List the records with nothing to match on

    free

    A person with no email, no mobile and no LinkedIn URL cannot be deduplicated, refreshed or contacted. They are listed, not removed. Whether they make the journey is your call.

  4. 4

    Set your fields against the destination's

    free

    The fields your records use, including custom fields where the connection can read their definitions, are set beside the import template. Fields with no column to go to are listed for you to decide on. The agent does not invent a mapping.

  5. 5

    Pilot five records and price the refresh

    credits

    Five people from your segment are refreshed so you see the real output and the real cost. The agent then states the most the segment could cost and waits for your go-ahead.

  6. 6

    Refresh the segment that matters

    credits

    Each person's profile is looked up through a chain of providers that stops at the first one to answer with a dated work history. The current title and employer are set next to the ones you hold. An answer with no work history is a miss and is not billed.

  7. 7

    Write back what you approve, if you want it migrated

    free

    Approved corrections can be written to the system you are leaving, one record first, so the vendor's extract already carries them. Or leave that system untouched and keep the corrections in the export.

  8. 8

    Build the export for the destination

    free

    People and companies are written to files in the destination's column names and formats. Duplicate pairs and records with no identifier carry their own flag columns, so you can filter them before the import.

What a run costs

Credits are spent per record the play actually works, and a lookup that finds nothing usually costs nothing. The two figures are the run where the first provider answers and the run where every lookup walks its full chain.

recordsif the first provider answersif every lookup walks the chain
25under $11.5 credits$220 credits
100under $15.3 credits$6.868 credits
500$2.525 credits$33330 credits
1,000$550 credits$65650 credits

Free before anything is charged

  • Count what you hold
  • Pair the duplicates
  • List the records with nothing to match on
  • Set your fields against the destination's
  • Write back what you approve, if you want it migrated
  • Build the export for the destination

What moves the number

  • Coverage on work history. The chain stops at the first provider that answers, and only that provider bills.
  • How many records survive the free filters. Everything dropped before the paid steps costs nothing.
  • Providers you connect with your own key. Those calls bill your account, not your credits.

An estimate, not a quote, priced at the volume credit rate. Your agent sizes the run against your own workspace and tells you what it will cost before it spends anything.

A migration copies everything, including what is wrong

Changing ATS is the one moment every record you hold gets picked up and put down again. The vendor's migration moves what is there, faithfully. Two records for the same finance director arrive as two records. A candidate with a name and nothing else arrives as a name and nothing else. The title somebody held four years ago arrives as their title.

After the move the clean-up gets harder, not easier. Record ids change, the team is learning different screens, and nobody has the appetite. Before the move, the same work is a filter on an export.

This is narrower than making an old database searchable again, which is upkeep on a system you are keeping. This one has a destination, and it ends in files shaped for the import.

What you get back

A count of what you hold, split by what each record can be matched on. A list of likely duplicate pairs, people and companies, each with the reason. A list of people with no email, no mobile and no LinkedIn URL. And for the segment you chose, the current title and employer beside the ones on file.

Then the export: people and companies in the destination's column names, with the duplicate and no-identifier flags as their own columns, plus the list of your fields that had no column to go to.

What this play does not do

Hyreflow reads and writes records through the systems you connect. It does not run the vendor migration. It does not move CVs, documents or attachments. It does not map every custom field. Notes, activity history, placements and pipeline stages stay with the vendor's process.

Variations worth knowing

Fix the source, not the file. Approved corrections can be written back to the system you are leaving, one record first, so the vendor's extract already carries them.

Pilot the destination. If the destination is a system you can connect, a small approved batch of people and companies can be created there through its connection. You see how your data looks on those screens before the bulk import.

Leave people behind. Records with no identifier at all are the obvious candidates for staying behind, which is also a retention question. The list is the input. The decision belongs to you and whoever advises you on data protection.

Where this goes wrong

Running it after the extract. Corrections made once the vendor has taken the data have to be made again on the other side.

Refreshing everything. Every refreshed profile is a paid lookup. Refresh the people you could place this year and migrate the rest as they are.

Expecting merged records. Pairs are flagged. Merging happens in your ATS, by you, with its own tool.

Treating the export as the migration. It carries people and companies. It carries no CVs and no history.

Questions

Does Hyreflow migrate my ATS for me?

No. Your vendor's import or migration service does that, and this play leaves CVs and other attachments, notes, activity history, placements and pipeline stages to it. The play works on records. It reads people and companies through your connected system, flags what is wrong with them, refreshes the ones you choose and hands you clean files. It is preparation for the migration, not a replacement for it.

Can it load the clean records straight into the destination?

For people and companies, where the destination is one you can connect. Recruit CRM, Loxo, JobAdder, Recruiterflow, Atlas and Spott all accept created people and companies through their connection. It is a plain create with no merge behind it, one record first and only after you approve. JobAdder and Atlas refuse a person whose email they already hold, and elsewhere the agent searches before it creates. For a whole database the vendor's bulk import is the better route, and the export is built for it. Bullhorn, Vincere and TrackerRMS connections are set up with the Hyreflow team and are not self-serve.

What about my custom fields?

They are listed, not mapped. Where the connection can read your custom field definitions, the agent sets them beside the destination's import columns and shows which have no obvious column to go to. Whether a field becomes a tag, a note or nothing at all is a judgement about how your desk works. Custom field writes also differ per system, and on at least one a wrongly shaped value is accepted without being saved. Settle those with the vendor.

What does it cost?

Counting, pairing duplicates, listing records with no identifier, comparing fields, building the export and any write-back cost nothing. They are reads and writes on your own system and work on files. The refresh is the paid part, billed per profile found, and a lookup that returns no work history is not billed. That is why it runs on a segment. Five records run first and you approve a figure before the rest.

When should I run it?

Before the vendor takes the data extract, with room left to merge duplicates in the old system first. A correction made after the extract has to be made twice. If that point has passed, the audit still helps: the flags tell you which imported records to fix first.