Repository navigation
Description
The problem. 79 credentials are each written by at least 2,000 US providers in NPPES: 753,891 providers in all, 15.6% of the 4,824,544 who write a credential (tools/name_usage.py --rank 400 --unlisted, August 2026 file, measured 2026-11-02). None of them is in any vocabulary list. After a comma in a mixed-case name, C6's caps shape reads them, which is why #797's screen kept none of them: it kept only tokens that reverse John Smith, X. Every other comma shape and case loses a name field:
"Jane Doe MSW" → middle="Doe", family="MSW"
"Jane Doe MSW, PhD" → middle="Doe", family="MSW", suffix="PhD"
"Doe, Jane MSW" → middle="MSW"
"JANE DOE, MSW" → given="MSW", family="JANE DOE"
"john smith, mbbs" → given="mbbs", family="john smith"
"Jane Doe, MSW" → suffix="MSW", ambiguities=("suffix-or-name",)
In the ClinicalTrials.gov officials corpus (ctgov-officials, 352,104 distinct names, data 2026-10-21), 331 names put one of these words in a name field. 322 of them have a comma and 78 are written wholly in capitals. MBBS alone accounts for 180:
"Prof Nigel Curtis, MBBS DCH DTM&H MRCP FRCPCH PhD" → given="MBBS", family="Nigel Curtis"
"ABEER E LASHEEN, MBBS" → given="MBBS", family="ABEER E LASHEEN"
"Canan PORUCU, MsN, RN" → given="MsN", family="Canan PORUCU"
When: one of these credentials stands where a suffix may stand: after the name with no comma, inside a comma's given part, or after a comma in a name written in one case.
Then: it reads as a suffix, as the listed LCSW, PA-C and OTR/L already do.
Because: the comma path already reads these words as credentials when the case signal allows it. The no-comma path, the uniform-case comma path and the given part after a family comma have only vocabulary to go on, and no list holds them.
Candidates (≥2,000 NPPES providers, John Smith X → family, John Smith, X → suffix): MSW, FNP, LMFT, RBT, LMHC, BCBA, ARNP, LICSW, MSN, CRNP, SLP, OTR, LSW, NCC, BSN, LPCC, MFT, COTA, PMHNP, LAT, LDN, LMP, MPT, OTD, LISW, MBBS, MSED, IBCLC, PAC, CPNP, MSPT, LADC, CDCA, LBA, BSW, MOT, LLMSW, LCMHC, CADC, RPT, OTRL, AMFT, CDE, ANP, CSW, APNP, LCSWA, CSCS, CNS, PNP, ACSW, LPTA, LCDC, QMHS, LPCA, ASW, SLPA, MHPP, WHNP, PLPC, LLPC, ACNP, MSD, CASAC, LGSW, CRC, CDN, OCS, LMHCA, RNFA, LCAS, HHA, NNP, LCADC, LCMHCA, LLP, AGACNP, QMHP.
Except, to decide per word under decisions/suffix-acronym-collisions:
- Words that are also surnames, to mark ambiguous rather than list plain (Mark 33 credential readings ambiguous where a surname reading is substantial #796's threshold of 200):
COTA(Census 11,554),PAC(535) andLAT(395).MOT(109) is under the threshold and needs a call. TodayJane Cotareads family 'Cota' andJane Doe COTAreads family 'COTA'; marked ambiguous, S6's case signal (the case signal at the suffix slot) would read the capitals as the credential and keepJane Cotaa name. - Held out:
PHARMACISTis an occupation and not a credential, though 77 officials write it after a comma (Dandan Wu, pharmacist→ given 'pharmacist'). It would be a title-or-occupation question on its own. - Mixed-case masks:
MsN,MsDandMsPToccur as written. Which entries get acasedmask is part of the batch, as it was for Should "John Smith, FNP-C" read FNP-C as a credential instead of the given name? #797's mixed-case words.
Accepted: a person whose given name or initials are written as one of these letter groups after a comma reads as a credential. #797 accepted this cost for DM, MB, BS and LD.
Done when:
- The batch is listed and its
ctgov-officialsmoves are measured withsnapshot.py --local ctgov-officials --base <checkout>. - The screening miss is recorded where the next batch will meet it: a credential candidate is screened in every comma shape and in uniform case, not only as
John Smith, X. That means a line in decisions/suffix-acronym-collisions beside Should "John Smith, FNP-C" read FNP-C as a credential instead of the given name? #797's entry, and a sentence innameparser/vocab/AGENTS.md.
Found by comparing against iliaal/nameparser, a PHP parser whose credential list was mined from the same registry.
Activity
Correct the review's comment findings on #993
Say in the #993 release note that a kept surname reports the fork
List 77 common US credentials no wordlist held; refuse cota (#993) (#…