Prompt

How do I set up career site integration software to route applicants back into our ATS without duplicating records?

Latest observation

Jul 26, 2026 · OpenAI APIWeb search: off

To route applicants from a career site into your ATS without creating duplicates, the key is to make the ATS the system of record and use a unique matching strategy before creating any new candidate/application.

Recommended setup

1) Define a unique candidate identifier

Pick one or more fields your integration uses to check whether a candidate already exists in the ATS:

  • Primary: email address
  • Secondary: phone number
  • Best practice: ATS candidate ID, if already known
  • Optional: government ID or internal external-ID fields, if your ATS supports them and your process allows it

2) Use an “upsert” pattern, not “always create”

Your integration should:

  1. Receive the application from the career site
  2. Search the ATS for an existing candidate by the matching rule
  3. If found, link the new application to the existing candidate
  4. If not found, create the candidate
  5. Then create the application/lead/event associated with that candidate

This avoids duplicate candidate records.

3) Separate candidate and application records

In many ATSs, a person can apply multiple times. Your integration should:

  • Reuse the same candidate profile
  • Create a new application record for each job submission
  • Avoid creating multiple candidate profiles for the same person

4) Normalize data before matching

To reduce false duplicates:

  • Lowercase and trim email addresses
  • Standardize phone formats to E.164 if possible
  • Remove punctuation/spaces from names only if your ATS matching requires it
  • Apply consistent country/state formatting

5) Decide what counts as a duplicate

Create clear rules for edge cases:

  • Same email, different phone → treat as same candidate
  • Different email, same phone → maybe same candidate, maybe manual review
  • Re-applying to a different job → same candidate, new application
  • Returning applicant who changed email → use manual merge or secondary match rules

6) Use webhooks or API callbacks if available

If your ATS supports it, use:

  • Search endpoint to find candidate by email
  • Create candidate endpoint
  • Create application endpoint
  • Idempotency keys to prevent repeated submissions from creating duplicates
  • Webhook acknowledgments to confirm successful sync

7) Store the ATS candidate ID in your career site integration

After the first successful sync:

  • Save the returned ATS candidate ID in your integration database
  • On later submissions, use that ID first
  • This is more reliable than matching by email every time

8) Add a retry-safe design

Duplicates often happen during retries or timeouts. To avoid that:

  • Use a unique submission ID for each application event
  • Make create calls idempotent where possible
  • If a timeout occurs, re-check whether the record was already created before retrying

9) Build a merge/fallback workflow

For uncertain matches:

  • Queue the record for recruiter review
  • Let recruiters merge duplicates in the ATS
  • Feed merged IDs back into your integration mapping table

Example flow

  1. Applicant submits form on career site
  2. Integration receives submission with email and job ID
  3. Integration searches ATS for candidate by email
  4. If candidate exists:
    • reuse candidate ID
    • create new application for job ID
  5. If no candidate exists:
    • create candidate
    • create application
  6. Save ATS candidate ID and application ID in your integration logs

Common pitfalls

  • Creating candidate records before checking for matches
  • Using only name matching
  • Not saving ATS IDs after the first sync
  • Retrying failed requests without idempotency
  • Treating each job application as a brand-new person

If you want the cleanest architecture

Use:

  • ATS candidate ID as the canonical identifier
  • Email as the initial match key
  • Upsert logic
  • Idempotency keys
  • Application records separate from candidate records
  • A duplicate-review queue for edge cases

If you want, I can also give you:

  1. a sample API workflow,
  2. a database schema for deduping, or
  3. a vendor-neutral integration checklist.

Observation history

See 1 earlier observation

Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.

How did Obsurfable measure this prompt?

Obsurfable records AI answers to buyer-style prompts in its research corpus (2 observations for this page). Metrics are distributions over observations, not a single static ranking.

Which AI systems does Obsurfable collect answers from?

OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.