Applicant Tracking System Integrations
Background check requests in, results out — across a dozen ATS platforms that agree on almost nothing.
- Period
- 2017 — 2023
- Stack
- C# · ASP.NET Core · SQL Server · REST · SOAP/XML · Message Queues
Problem
Employers live inside their applicant tracking system, so ordering a background check should not mean leaving it. The difficulty is that every ATS exposes a different contract: mostly REST, but Workday speaks SOAP/XML, and older partners still exchanged flat files over SFTP. Each brings its own authentication scheme, and its own opinion about whether it pushes work to us or waits for us to pull. Left unchecked, every new partner becomes another bespoke codebase, and every new customer becomes a deployment.
Approach
I co-designed and extended the inbound and outbound APIs that carry requests and results between partners and our screening platform, normalizing each partner's contract at the edge into one internal representation so the differences stayed at the boundary. Push-based partners are acknowledged immediately and queued for asynchronous processing, so a slow downstream never turns into a partner-side timeout. Partial failure was the genuinely hard part: a request that half-succeeds is worse than one that fails cleanly, and getting retries and recovery right mattered more than the happy path ever did. Customer onboarding moved into configuration pages in the platform, which made a new customer integration a matter of configuration rather than a code change.
Outcome
Built new integrations for Ceridian Dayforce and Neogov; co-designed and extended integrations across iCIMS, Workday, SmartRecruiters, Oracle, and Greenhouse; and maintained UKG, Jobvite, and Bullhorn. Six years of production ownership on the path that carries regulated, PII-heavy data between two systems that each assume they are in charge.