Current position and work history ordering

4 min read

Understand the fixed rules we use to pick a person's current job and to order their work experience and education.

A person’s profile can list many jobs and several schools, but the API always returns them in a predictable shape: one job is singled out as the currentPosition, and the experience and education arrays follow a fixed order. This guide explains, in plain language, the two rules behind every profile we return.

Why it is not obvious

Career histories are messy:

  • Someone may list several jobs with no end date (a main role, a board seat, an advisory gig), so “the one that is still open” is not always enough on its own.
  • Dates can be missing or vague.
  • Job titles come from different data sources that do not always agree.

So we follow a clear, fixed set of tie-breakers, always in the same order, so the result is predictable.

How the current position is chosen

We ask up to four questions, in order, and stop at the first one that gives an answer:

  1. Do we already know which company they currently work at? If yes, look only at their jobs at that company and pick the one they started most recently.

  2. Otherwise, do we at least know the company name? Match jobs by company name instead, and again pick the most recently started one. Some data sources give us a name but not a precise company identifier.

  3. Otherwise, which jobs have no end date? Among the jobs that are still open (no end date), pick the one they started most recently.

  4. Last resort: pick the most recent. If nothing above applies, pick whichever job they started most recently.

“Most recently started” is the consistent tie-breaker at every step. If a job has no start date at all, it always loses to a job that has one.

If the person has no jobs listed, there is simply no current position, and the field is null.

How experience and education are ordered

Every profile is returned with its experience and education arrays sorted the same way:

  • Most recent first, based on the start date.
  • Entries without a start date go at the end of the list.
  • If two entries start on the same date, the one that is still ongoing (no end date) comes first.

The same rule applies to jobs and to schools. And it does not depend on where the profile came from: a result served from our database and a fresh live lookup are ordered identically.

A quick example

Say Maria’s profile lists:

Job Company Started Ended
Advisor Acme 2018 Ongoing
Head of Sales Globex 2021 Ongoing
Sales Lead Globex 2023 Ongoing
Mentor Volunteerly Unknown Ongoing

For the current position:

  • If our data tells us her current company is Globex, we look only at the two Globex jobs and pick the newest: Sales Lead (2023).
  • If we had no company hint at all, step 3 applies: all four jobs are ongoing, so we pick the most recently started one, again Sales Lead (2023). The Mentor role has no start date, so it can never win.

Either way the rule lands on the same sensible answer, and it gets there the same way every time.

And regardless of how the current position is resolved, her experience array always comes back in the same order: Sales Lead (2023), Head of Sales (2021), Advisor (2018), then Mentor last because it has no start date.

What this means in practice

  • The first item in experience is the person’s most recent role, and currentPosition is the job we determined they hold today.
  • The order is always computed on our side — it never depends on how the underlying data arrived.
  • If a profile shows a surprising current job, the cause is usually a missing or outdated date in the source data, not the rules above.

Why it is built this way

Before, different data sources inferred the current job — and listed experiences — slightly differently, so the same person could look different depending on where the data came from. Now there is one set of rules, applied everywhere the API returns a profile, so the result is consistent and explainable.

Previous

Webhooks

Next

Data freshness