iCIMS real-tenant validation¶
Companion to the Workday and Greenhouse
validations. Validated the iCIMS engine against a live iCIMS candidate form — Cotiviti's "Senior
Software Engineer (AI), US-Remote" (careers-cotiviti.icims.com/jobs/19357/...). Andrew created the
iCIMS candidate account himself (new-site register + apply are one combined step); I never handled his
credentials, filled a field, or submitted — pure read-only DOM inspection inside the content iframe.
What matched — the two HARDEST things validate ✅¶
iCIMS is the app's hardest base (nested iframes, ASP.NET-generated ids, table soup). Both risky parts hold up against the real tenant:
| Concern | Real Cotiviti tenant | Our selector | Match |
|---|---|---|---|
| Content iframe | iframe#icims_content_iframe |
ContentIframe[0] = "#icims_content_iframe" |
✅ |
| First name | input#PersonProfileFields.FirstName |
input[id$='FirstName'] |
✅ |
| Last name | input#PersonProfileFields.LastName |
input[id$='LastName'] |
✅ |
input#PersonProfileFields.Email (type=email) |
input[id*='email' i] / input[type='email'] |
✅ | |
| Phone | input#-1_PersonProfileFields.PhoneNumber |
input[id*='phone' i] |
✅ |
| Address (street) | input#-1_PersonProfileFields.AddressStreet1 |
input[id*='address' i] (DOM-first) |
✅ |
The ends-with / substring philosophy the ScraperLab loop chose for iCIMS is vindicated — the real ids
carry the FirstName/LastName/Email/Phone suffix tokens exactly as assumed.
Findings (coverage gaps, not broken selectors)¶
Unlike Workday (whose existing contact selectors were genuinely broken), iCIMS's existing fills work. The gaps are fields the engine doesn't yet reach:
- Structured address is only half-filled. The engine fills
AddressStreet1but the real form also has separate-1_PersonProfileFields.AddressCity,AddressZip,AddressState(select),AddressCountry(select) — none of which the engine fills or has selectors for. The app has this data (intake city/state/zip/country); it just doesn't push it into iCIMS's structured address. - "How did you hear about us?" fails on iCIMS custom-field ids. The real control is
<select id="rcf3048">whose meaning lives ONLY in its<label for="rcf3048">("How did you hear about us?"). OurHowHeardSelectchain looks forid/nametokens (source/hearaboutus/howheard) or anaria-label— none present — so WW-38 how-heard won't resolve here. iCIMS's tenant-configurable questions all use opaquercf<number>ids; matching them needs LABEL-driven resolution (find the control whose associated<label for>text matches), which the current CSS-selector chains can't express. Same applies to other custom questions (work-auth, consent, etc.).
Both gaps need new engine capability (more fills; a label→for→control resolver) AND can't be validated autonomously without typing into / submitting a real application (which the build never does), so they're filed as a follow-up rather than auto-implemented here.
Verdict¶
The scary parts of iCIMS — the nested content iframe and the generated contact ids — are correct against a real tenant. The gaps are additive coverage (structured address, label-driven custom questions), tracked as a follow-up.