People get external identifiers too, starting with ORCID #46

Closed
opened 2026-09-06 15:46:44 +00:00 by tiagoagueda · 0 comments
Owner

Observation

every user also can have unique identifiers, lets start for now with just ORCID

Why

#42 gave companies external identifiers — Wikidata, LEI, a register number — because a
name is not an identity. The same is true of a person, and in the places Postulo is aimed
at first (academic posts, research institutes, EU bodies) the identifier a person actually
has is an ORCID: sixteen digits, checksummed, saying which researcher this is.

It belongs on a CV. It is also the identifier an application form asks for by name, and
having it in the record means never looking it up again.

Shape

  • PersonIdentifier, owner-scoped, beside the profile: scheme, value, an optional
    label. The registry is the one #42 already built (jobs/identifiers.py): normalise,
    validate and url_for per scheme, with a URL lifted only from a host that scheme
    actually uses.
  • ORCID first. 0000-0002-1825-0097: four groups of four, the last character a
    checksum that is a digit or X (ISO 7064 MOD 11-2). Check it rather than counting
    characters — an ORCID that fails its own checksum is a typo, every time. The address is
    https://orcid.org/<id>.
  • Where it shows: Settings → Account, and in a CV's contact block beside the website
    and the LinkedIn address, which is where a reader looks for it.
  • In the export, and in the API's person schema.
  • Schemes that can follow without another model: ResearcherID, Scopus Author ID, ISNI, a
    code forge account, a national registration number. Each is one entry in the registry.

Classification

Enhancement. Not breaking: a new table, and nothing at all for somebody who adds none.

Depends on

#42, for the registry and its shape. Done.

Open questions

  1. Does an identifier go on every CV automatically, or is it a per-CV choice like the rest
    of the contact block? Proposal: follow the contact block, which is per-CV already.
  2. Is an ORCID ever checked against ORCID's public API? Proposal: no. Postulo makes no
    request nobody asked for, and the checksum catches the typos without one.
## Observation > every user also can have unique identifiers, lets start for now with just ORCID ## Why #42 gave companies external identifiers — Wikidata, LEI, a register number — because a name is not an identity. The same is true of a person, and in the places Postulo is aimed at first (academic posts, research institutes, EU bodies) the identifier a person actually has is an **ORCID**: sixteen digits, checksummed, saying which researcher this is. It belongs on a CV. It is also the identifier an application form asks for by name, and having it in the record means never looking it up again. ## Shape - **`PersonIdentifier`**, owner-scoped, beside the profile: scheme, value, an optional label. The registry is the one #42 already built (`jobs/identifiers.py`): `normalise`, `validate` and `url_for` per scheme, with a URL lifted only from a host that scheme actually uses. - **ORCID first.** `0000-0002-1825-0097`: four groups of four, the last character a checksum that is a digit or `X` (ISO 7064 MOD 11-2). Check it rather than counting characters — an ORCID that fails its own checksum is a typo, every time. The address is `https://orcid.org/<id>`. - **Where it shows**: *Settings → Account*, and in a CV's contact block beside the website and the LinkedIn address, which is where a reader looks for it. - In the export, and in the API's person schema. - Schemes that can follow without another model: ResearcherID, Scopus Author ID, ISNI, a code forge account, a national registration number. Each is one entry in the registry. ## Classification Enhancement. Not breaking: a new table, and nothing at all for somebody who adds none. ## Depends on #42, for the registry and its shape. Done. ## Open questions 1. Does an identifier go on every CV automatically, or is it a per-CV choice like the rest of the contact block? Proposal: follow the contact block, which is per-CV already. 2. Is an ORCID ever checked against ORCID's public API? Proposal: no. Postulo makes no request nobody asked for, and the checksum catches the typos without one.
tiagoagueda added this to the 0.2.0 milestone 2026-09-06 15:46:44 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Postulo/postulo#46
No description provided.