Most staffing agencies don't have a sourcing problem. They have a records problem. Knowing how to build a candidate database is only half the job. The other half is keeping it accurate enough that a recruiter can open it on a Monday morning, pull a shortlist and start calling. This guide walks through the full process: why databases decay, how to capture clean data at intake, how to tag and segment, how to run scheduled re-engagement, how to remove duplicates and stale records, and how to measure whether the database is producing placements.
It is written for agency owners and recruiters who already have candidates in a system and want those records to be usable. Every section ends in something you can put into practice this week.
Why candidate databases decay over time
A candidate record is a snapshot. The moment it is saved, it starts going out of date. People's lives move on, and the record doesn't move with them unless someone updates it.
- Availability changes. Someone who was looking for work last season may now be placed, employed elsewhere or on a long assignment.
- Contact details drift. Phone numbers change, personal email addresses get abandoned, people move house.
- Skills and credentials move. Certifications expire, new ones get earned, people learn new equipment and software.
- Pay expectations shift with experience and with the local market.
- Duplicates pile up. The same person applies through a job board, an email and a referral, and ends up as three separate records.
- Context stays in recruiters' heads. When a recruiter leaves, the notes that never made it into the system leave with them.
None of this is anyone's fault. It's what happens when a database is treated as storage instead of a working tool. The fix is a routine, not a one-time cleanup.
Step one: define what a usable record looks like
Before changing any process, write down the minimum standard for a record your team will call complete. If you can't define it, you can't enforce it at intake or audit it later. Keep the list short. Every field you add is a field someone has to keep current.
| Field | Why it matters | When to capture |
|---|---|---|
| Name and primary phone | Fast contact by call or text | At intake |
| Email address | Longer messages, documents, confirmations | At intake |
| Contact consent and preferred channel | Know who agreed to hear from you, and how | At intake |
| Location or travel radius | Match candidates to client sites | At intake |
| Core skills and job titles | Search and segmentation | At intake, refreshed on every re-engagement |
| Certifications and expiry dates | Roles with credential requirements | At intake and whenever the candidate updates them |
| Availability status | Know who can start | At intake and on every confirmed contact |
| Pay expectation | Avoid wasted submissions | At screening |
| Source | See which channels produce placements | Automatically at intake |
| Last verified date | Measure freshness | On every confirmed contact |
The last two fields are the ones most agencies skip. They are also the ones that make measurement possible later. Without a source, you can't tell which channels pay off. Without a last verified date, you can't tell a fresh record from a dead one.
Capturing clean data at intake
Every bad record started as a bad intake. Fixing data at the front door is far cheaper than cleaning it up months later, when nobody remembers where it came from.
Route every channel into one system
Candidates arrive through job boards, your careers page, email, walk-ins, referrals and recruiter calls. If any of those channels lives outside the ATS, such as a shared inbox, a spreadsheet or a recruiter's phone, you'll get gaps and duplicates. Set up applications that arrive by email to land directly in the ATS so nothing sits in an inbox waiting for someone to re-type it.
Let the system do the typing
Manual data entry is where typos, missing fields and inconsistent job titles come from. Use resume parsing to turn CVs into structured fields, then have recruiters review and correct the result instead of re-entering it.
Standardize the fields people fill in by hand
- Use picklists for job titles, skills, shifts and availability instead of free text.
- Agree on one format for phone numbers and locations, and stick to it.
- Make the minimum fields mandatory before a record can move forward in a pipeline.
- Record the source automatically, not from a recruiter's memory.
- Stamp a last verified date the first time you speak to the candidate.
Capture consent and channel preference up front
Ask each candidate how they want to be contacted and record their agreement to receive texts and emails. This keeps later re-engagement clean, and candidates tend to respond on the channel they chose. Follow your agency's own consent and opt-out policy, and take legal advice on what that policy needs to cover.
Tagging and segmenting candidates
A database you can't slice is a database you can't use. Tags and segments turn a long list of names into shortlists you can act on quickly.
Build a small, controlled tag taxonomy
Tags fail when anyone can create them. Before long you have forklift, Forklift, FLT and forklift cert all meaning the same thing, and searches miss half the people. Limit who can add new tags and group them into a few families.
| Tag family | Examples | Used for |
|---|---|---|
| Role and skill | Warehouse associate, CNA, CDL driver, receptionist | Matching to job orders |
| Credential | Forklift certified, CPR current, food handler | Roles with credential requirements |
| Availability | Available now, on assignment, available soon, not looking | Prioritizing outreach |
| Shift and schedule | Nights, weekends, part-time, seasonal | Shift-based orders |
| Location | Branch, metro area, willing to travel | Multi-location clients |
| History | Placed before, client re-request, do not rehire | Fast redeployment and risk control |
| Engagement | Responded recently, unresponsive, opted out | Cleanup and outreach targeting |
Turn tags into saved segments
Segments are saved combinations of tags and fields: available now plus forklift certified plus north branch, or placed before plus assignment ending soon. Build the handful your desks use every week and keep them saved so recruiters aren't rebuilding filters each time. You can segment candidates into targeted lists and reuse them for outreach and for new job orders.
Keep availability current above everything else
Of all the fields, availability decays fastest and matters most. Tie it to events instead of memory. When a candidate is placed, set them to on assignment. When an assignment ends, set them back to available and trigger a check-in. This is the same discipline behind keeping a ready bench of workers you can call on when an order lands.
Scheduled re-engagement outreach
Re-engagement is how a database stays fresh without a cleanup project. Each touch is a chance to confirm contact details, availability and skills, and to move the last verified date forward. A reply updates the record. No reply is a signal too.
Set a cadence by segment
- Available now: frequent, short check-ins tied to new job orders.
- On assignment: a touch before the assignment is due to end, so they're ready to redeploy.
- Placed before with strong client feedback: regular personal contact from their recruiter.
- Not looking: lighter, less frequent updates so the agency stays front of mind.
- Unresponsive: one final still-interested message before the record is archived.
Pick intervals that match your sector's pace. Light industrial and hospitality orders move faster than professional placements. What matters is that the cadence is written down and runs on a schedule, not whenever someone remembers.
Use the channel candidates actually read
Text is usually the quickest way to get a yes or no on availability. Email suits longer updates, documents and job details. Use both from the same record so the conversation history stays in one place. For a full playbook, see how agencies automate candidate outreach with text and voice.
Availability check-in (SMS)
Hi {first_name}, it's {recruiter_name} at {agency_name}. We have new {role_type} shifts coming up near {location}. Are you available to work? Reply YES, NOT NOW, or STOP to opt out. Keep it short, name the recruiter and give a one-word reply option. Log every reply against the record and update availability straight away.
Profile refresh (email)
Subject: Quick update so we can match you to the right roles
Hi {first_name},
We want to make sure we only send you jobs that fit. Could you take a minute to confirm a few details?
- Are you available now, and if not, from when?
- Has your phone number or location changed?
- Any new certifications or skills?
- Preferred shifts and pay range?
Just reply to this email and I'll update your profile.
Thanks,
{recruiter_name}
{agency_name} Ask only for the fields that decay. Long forms get ignored.
Run outreach in bulk without losing the personal touch
Re-engagement at volume means sending to whole segments at once. Use bulk actions to message and update large groups of records, then have recruiters follow up personally on the replies that matter, such as a strong past placement saying they're free next week.
Removing duplicates and stale records
Even with clean intake, duplicates and dead records build up. Schedule cleanup as routine work with a named owner, not as an annual project nobody wants.
A simple cleanup routine
- 1 Find duplicates Search by phone number and email first. They are the most dependable match keys. Names alone produce false matches.
- 2 Merge, don't delete Keep the most recent contact details, combine notes and history, and preserve placement records and the original source.
- 3 Flag stale records Pull records with no confirmed contact for longer than the threshold your team agreed on.
- 4 Send a last-chance message One clear message asking whether they still want to hear about roles. Make replying easy.
- 5 Archive non-responders Move them out of active segments so they stop cluttering searches and skewing response numbers.
- 6 Honor opt-outs and removal requests Mark opted-out candidates clearly so nobody contacts them again, and handle removal requests according to your data policy.
Archive versus delete
Archiving keeps history while removing the record from daily searches. Deleting removes it. Many agencies archive by default and delete only when a candidate asks or when their retention policy requires it. Set your retention policy with legal advice and apply it the same way every time.
Measuring database ROI by placements
A fresh database is only worth the effort if it produces placements. Measure it like any other sourcing channel, with the same rigor you'd apply to a paid job board.
| Metric | What it tells you | How to track it |
|---|---|---|
| Placements from existing records | How much revenue the database produces | Tag each placement as a new candidate or an existing record |
| Share of submissions from the database | How much recruiters trust and use it | Compare database submissions with newly sourced ones |
| Time to first submission on rediscovered candidates | Speed advantage over fresh sourcing | Time from job order opened to first submission |
| Re-engagement response rate | Health of contact details and relationships | Replies divided by messages sent, per segment |
| Recently verified records | Overall freshness | Active records with a recent last verified date, compared with all active records |
| Duplicates found per cleanup | Quality of intake | Duplicates merged in each cleanup cycle |
| Redeployment rate | How well you keep placed workers working | Candidates placed again after an assignment ends |
Review these numbers with recruiters, not just in a dashboard. If the database share of placements is low, the cause is usually one of three things: records are stale, segments don't match the job orders coming in, or recruiters default to job boards out of habit. Each has a different fix. For the workflow side, see how agencies fill job orders from records they already have.
Surface the right people faster
When a job order comes in, recruiters shouldn't be scrolling. Rank existing candidates against the job order so the strongest matches in the database rise to the top, then confirm availability by text before submitting.
Common mistakes to avoid
- Treating cleanup as a one-off project. Without a routine, the database decays straight back.
- Letting everything be free text. Inconsistent titles and skills make search unreliable.
- Letting tags multiply. A tag list nobody controls is as bad as no tags.
- Only contacting candidates when there's a job. Silence between orders is when contact details go stale.
- Ignoring the not-looking group. Today's employed candidate is next quarter's available one.
- Keeping intake channels outside the ATS. Every side spreadsheet creates duplicates.
- Measuring database size instead of placements. A bigger list of dead records is not progress.
- No clear owner. If everyone is responsible for data quality, nobody is.
Candidate database maintenance checklist
Use this as a starting rhythm and adjust it to your volume. Put each task on a calendar with a named owner.
| Frequency | Task | Owner |
|---|---|---|
| Daily | Update availability when candidates are placed or assignments end | Recruiters |
| Daily | Log every reply and confirmed contact, and update the last verified date | Recruiters |
| Weekly | Run outreach to available-now and ending-soon segments | Recruiters |
| Weekly | Review new records for missing mandatory fields | Team lead |
| Monthly | Search for and merge duplicates | Database owner |
| Monthly | Review placement metrics with the team | Agency owner |
| Quarterly | Send last-chance messages to stale records and archive non-responders | Database owner |
| Quarterly | Review the tag taxonomy and retire unused tags | Database owner |
Where ATS Mako fits
ATS Mako is a white-label applicant tracking system built for high-volume and multi-location hiring. Native SMS and an integrated email client keep re-engagement messages and replies on the candidate record, so history doesn't scatter across phones and inboxes. AI candidate ranking helps surface strong matches from existing records, and AI voice screening, interview scheduling and onboarding keep candidates moving once they say yes. If you need to connect other systems, see the public API and developer access. You can review plans and pricing or book a demo to walk through it with your own workflow.
Keep your candidate database working for you
See how a white-label ATS with native SMS, an integrated email client and AI candidate ranking helps your recruiters fill orders from the records they already have.