$ cat projects/ats-integration-platform.md
Applicant Tracking System Integrations
Background check requests in, results out — across a dozen ATS platforms that agree on almost nothing.
period: 2019 — 2025
// 01 problem
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 exchange 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.
// 02 approach
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. None of it happened on a clean slate: the integrations stayed tightly coupled to the VB.NET monolith that predated them, so alongside the new work was the slower job of carving services out of it and migrating them where the coupling allowed.
// 03 outcome
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. Five years of production ownership on the path that carries regulated, PII-heavy data between two systems that each assume they are in charge.