Admin
Field mapping

Unified Common Model → qode-matching ES (v3)

Every ATS normalizes to the same Unified candidate shape; this is how it's transformed into our per-connection index — which mirrors qode-matching's v3 candidate schema. indexed fields are what the engine filters and ranks on; display fields ride in _source for the result card (kept via dynamic: false, not in the v3 mapping). Reference only.

Candidate mapping

Source (Unified) → target (ES) → transform.

Unified Common Modelqode-matching ES (v3)TransformIn index?
id · external_identifierid, usernameid → both (username mirrors id)indexed
titlejobTitlecopy (keyword)indexed
address.citycitycopy — v3 location fieldindexed
address.countrycountrycopyindexed
rawLocation (assembled)viewport { lat, lon }resolved via location-ms (null if unresolved)indexed
experiences[] { title, company_name, start_at, end_at }experiences[] { jobTitle, companyName, durationMonths, isCurrent }start_at/end_at → durationMonths; no end_at → isCurrentindexed
(derived from experiences)totalExperienceMonths, avgExperienceDurationMonthssum · average of durationsindexed
education[] { institution, degree, level, field_of_study, end_at }educations[] { schoolName, degreeType, fieldOfStudy, graduationDate }institution→schoolName; degree (or level)→degreeType; end_at→graduationDateindexed
skills: string[]skills[] { name }one nested entry per skill (keyword)indexed
languages · certificationslanguages[], certifications[]best-effort (Unified rarely provides these)indexed
name · first_name + last_namefullnameuse name, else join first + lastdisplay
titleheadlinecopydisplay
image_urlavatarcopydisplay
address.{ city, region, country }rawLocationassemble "City, Region, Country"display
skills[]skills[].canonicalName= name (display)display
created_at · updated_atcreatedAt · updatedAtISO 8601display
emails, telephones, tags, web_url, link_urls, origin, sources…no field in the v3 candidate schema

We don't populate qode-matching's ML-derived v3 fields (dense-vector embeddings, domains, per-experience skills/company enrichment) — those come from qode-matching's own pipeline, not raw ATS data.