Most teams that want AI screening already have an ATS and no intention of switching. The practical route is an export: candidates and job openings out of the system you use, into a tool that scores them, results read in that tool. This guide covers the file side of that, because the file is where most first attempts fail.
It is written around HyreTech's import, which takes three files and runs every applicant through the same scoring as candidates who applied directly. The column names are ours, but the shape of the problem is the same for any tool that imports from an ATS export.
The three files
| File | What it holds | Required columns |
|---|---|---|
roles.csv |
One row per job opening | external_role_id, name, category (Tech or Non-Tech) |
candidates.csv |
One row per applicant | name, email, role_ref, resume_file |
resumes.zip |
The resume files | Filenames must match resume_file exactly |
Everything else is optional. Unknown columns are ignored rather than rejected, so you do not have to strip your export down before uploading it. The full list, including the optional fields that show up on the scorecard, is in the applicants CSV reference.
The job openings file
Every ATS calls this something different: jobs, requisitions, openings, positions. Whatever the label, you need one row per opening with a stable identifier, a name and a category. The identifier is what the applicants file points at, so pick something that will not change if you export again next month. The ATS's own job ID is the safe choice.
Three more columns are optional but validated when present: employment_type (Full-time or Contract), work_settings (WFO, WFA or Hybrid) and status (Draft, Active or Closed). A row with an unrecognised value in one of those is skipped and reported, not silently corrected.
Two long-text columns do most of the work: job_description and job_requirement. They accept multi-line Markdown, and they are what the scoring rubric is built from. An opening exported with a one-line description gets a one-line rubric. If your ATS export truncates descriptions, paste the full text back in before uploading.
The applicants file
Four columns are required.
nameas you want it to appear on the scorecard.email, which is how a re-upload finds the existing candidate instead of creating a duplicate. It has to be unique per role.role_ref, the identifier of the opening this person applied to. It must match a value in the roles file.resume_file, the filename inside the ZIP, extension included, case-sensitive.
Phone, LinkedIn URL and similar fields are optional, shown on the profile and never used in scoring.
The one column no export will have
role_ref is the column that catches people out. No ATS emits it, because no ATS knows what another tool will call its openings. You add it yourself: one extra column in the applicants export, filled with the ID of the job each person applied to.
In practice this is a lookup in a spreadsheet. Export applicants with whatever job column your ATS provides, export openings with their IDs, then match the two. Ashby and Workable let you choose export columns, which makes this a two-minute job. Greenhouse and Lever hand you a fixed export, so the lookup happens after. The guide to what to export from your ATS covers the four of them one by one.
What happens on upload
The upload returns immediately and the work runs in the background with a progress bar. Each row is validated on its own: a missing resume, a blank category or a duplicate email skips that row and reports it, and the good rows still land. A batch finishes as Completed, Partial or Failed, and the report lists every skipped row with its reason.
Applicants become real candidates attached to the role they applied to, and each one is queued for scoring against that role's rubric. Results appear in the normal candidate views, filterable by import batch.
Imported openings are created for scoring only. They are never published to the public job board.
Re-uploading the same file
This is where import tools differ most, and it is worth testing before you trust one. On HyreTech a second upload of the same batch does not create duplicates: candidates match on email, openings match on external_role_id, and the import updates in place. Edits in the file take effect, so a corrected job description or a replaced resume flows through. And only applicants whose resume or role text actually changed are scored again, so a re-import after topping up credits does not pay twice for work already done. The re-upload article has the edge cases.
What it costs and what it does not do
Scoring is metered like every AI action: one credit per applicant analysed. The batch shows the estimated cost before it starts. If the balance runs out mid-batch, the import is never blocked; the remaining applicants are scored automatically once credits are added. The credit article lists what does and does not consume one.
Two boundaries to know before you plan around this. Import is file upload only; there is no live connection to your ATS and no button that syncs it. And there is no write-back: scores and shortlists live in HyreTech and are read there. If either of those is a deal-breaker, the keep-your-ATS overview explains what the workflow looks like with those constraints.
Before you export anything
Take one applicant's resume and the opening's description and run them through the free resume screener. It takes two minutes and tells you whether the scoring is worth the export. If it is, create a free workspace: the free plan includes one active role and 20 credits, enough to import a small batch and see the ranking on your own data.
FAQ
Which columns does the job openings CSV need? Three required: external_role_id, name and category. Optional columns for employment type, work setting and status are validated against fixed values when present, and the description and requirement columns accept multi-line Markdown.
Does HyreTech connect directly to Greenhouse, Lever, Workable or Ashby? No. It works with your ATS through a CSV export plus the resume files. There is no live sync and no write-back of results.
What if my ATS export has extra columns? They are ignored. You only need to add role_ref and make sure the four required applicant columns are present.
Will re-uploading create duplicate candidates? No. Candidates match on email and openings on their external ID, so a repeat upload updates in place and only re-scores applicants whose resume or role text changed.
