Policy.unlisted_caps_suffixes is off by default because an all-caps surname is a real writing convention: with it on, Jean Pierre DUPONT gives suffix DUPONT. That convention puts the capitals on the family name, either last with no comma (Jean DUPONT) or before a comma (DUPONT, Jean). It never puts them after a comma behind a full name. The reason for the off default therefore does not reach the comma position, yet the comma position is switched off with it:
>>> parse("John Smith, XYZ")
ParsedName(given='XYZ', family='John Smith') # no report
>>> Parser(policy=Policy(unlisted_caps_suffixes=True)).parse("John Smith, XYZ")
ParsedName(given='John', family='Smith', suffix='XYZ') # reported SUFFIX_OR_NAME
Corpus: every corpus file under tools/differential/ holds 3 names with one comma, two or more words before it, and a single unlisted all-caps word after it in mixed-case input (measured 2026-09-30). All three are credentials, and all three put the credential in given today: Ahmad Jayadi, CHA, John Smith, RAI, The Rt Hon Kenneth Clarke QC MP, HMG.
Proposed rule
Rationale: after a comma behind two or more words, an all-caps word in mixed-case input is far likelier a credential than a given name written in capitals.
Statement: in that position, an unlisted all-caps word of three or more letters reads as a credential at the default, reported SUFFIX_OR_NAME. A two-letter word stays as it is today, because it has the same double-surname hazard as #563's dotted initials (Lloyd Webber, AL, De La Cruz, MJ).
Examples (target readings):
"John Smith, XYZ" → suffix="XYZ" ambiguity: SUFFIX_OR_NAME
"Ahmad Jayadi, CHA" → given="Ahmad" family="Jayadi" suffix="CHA"
"De La Cruz, MJ" → given="MJ" family="De La Cruz" · unchanged: two letters
"Smith, XYZ" → given="XYZ" · unchanged: one word before the comma
"John Smith XYZ" → family="XYZ" · unchanged: no comma, the DUPONT position
"Van Buren, MARTIN" → ? · see open questions
Open questions
Related: #563, #516.
Policy.unlisted_caps_suffixesis off by default because an all-caps surname is a real writing convention: with it on,Jean Pierre DUPONTgives suffixDUPONT. That convention puts the capitals on the family name, either last with no comma (Jean DUPONT) or before a comma (DUPONT, Jean). It never puts them after a comma behind a full name. The reason for the off default therefore does not reach the comma position, yet the comma position is switched off with it:Corpus: every corpus file under
tools/differential/holds 3 names with one comma, two or more words before it, and a single unlisted all-caps word after it in mixed-case input (measured 2026-09-30). All three are credentials, and all three put the credential ingiventoday:Ahmad Jayadi, CHA,John Smith, RAI,The Rt Hon Kenneth Clarke QC MP, HMG.Proposed rule
Rationale: after a comma behind two or more words, an all-caps word in mixed-case input is far likelier a credential than a given name written in capitals.
Statement: in that position, an unlisted all-caps word of three or more letters reads as a credential at the default, reported
SUFFIX_OR_NAME. A two-letter word stays as it is today, because it has the same double-surname hazard as #563's dotted initials (Lloyd Webber, AL,De La Cruz, MJ).Examples (target readings):
Open questions
Van Buren, MARTIN(a two-word surname with the given name in capitals) moves under this rule. How often does mixed-case input capitalize the given name and not the family? The corpus has no such row.García Márquez, G.J.has no given name #563, so the dotted and all-caps classes stay one rule?Related: #563, #516.