Skip to main content

SLAS Post Classification Catalog

253 raw post titles from the four SLAS seniority lists have been normalized to 100 canonical posts and classified using the OpenGIN kind: { major, minor } taxonomy. Each post is assigned a role family (major) and a seniority tier (minor).

2,616
Total Officers
100
Classified Posts
253
Raw Variants
8
Major Categories
By Grade: Special Grade: 376 | Grade I: 943 | Grade II: 656 | Grade III: 641 — as at 01.01.2026

Distribution by Role Family

Field Administration
685 (26.2%)
Secretariat
678 (25.9%)
Directorate
532 (20.3%)
Non-Active
297 (11.4%)
Commission
282 (10.8%)
Regulatory
73 (2.8%)
Municipal
39 (1.5%)
Provincial
30 (1.1%)

Distribution by Seniority Tier

Head
160 (6.1%)
Additional/Senior Deputy
251 (9.6%)
Deputy
178 (6.8%)
Senior
177 (6.8%)
Standard
1136 (43.4%)
Assistant
580 (22.2%)
Acting
134 (5.1%)

Post Catalog

100 posts (2616 officers)
Post TitleRole FamilyTierTotalSPGIGIIGIIIVariants
AttachedNon-ActiveStandard2881437581792
Assistant Divisional SecretaryField AdministrationAssistant26871191424
DirectorDirectorateStandard251122918324
Divisional SecretaryField AdministrationStandard244242111
Assistant SecretarySecretariatStandard21213901098
Senior Assistant SecretarySecretariatSenior1731737
Additional SecretarySecretariatAdditional/Senior Deputy1371374
Assistant DirectorDirectorateAssistant1204417510
Assistant CommissionerCommissionAssistant1113456327
SecretarySecretariatHead82686441
Acting Divisional SecretaryField AdministrationActing807461
CommissionerCommissionStandard6154714
Deputy CommissionerCommissionDeputy57546610
Deputy DirectorDirectorateDeputy4854216
Additional District SecretaryField AdministrationAdditional/Senior Deputy45454
Additional Director GeneralDirectorateAdditional/Senior Deputy41413
District SecretaryField AdministrationHead25251
Director GeneralDirectorateHead231764
Assistant District SecretaryField AdministrationAssistant221482
Deputy Immigration & Emigration ControllerRegulatoryDeputy181171
Assistant Election CommissionerCommissionAssistant16972
Municipal CommissionerMunicipalStandard151322
Provincial DirectorProvincialStandard15875
Deputy Chief SecretarySecretariatDeputy14145
Assistant Chief SecretarySecretariatAssistant142661
Page 1 of 4
Taxonomy Reference

Role Families (kind.major)

FamilyDescriptionOfficers
Field AdministrationDistrict & Divisional secretariat roles685
SecretariatMinistry/department secretary-level roles678
DirectorateDirector-level roles in departments/institutions532
Non-ActiveAttached, Leave, Interdicted, Foreign Mission297
CommissionCommissioner-level regulatory/statutory roles282
RegulatoryControllers, Registrars, specialized statutory73
MunicipalUrban/municipal governance roles39
ProvincialProvincial council administration30

Seniority Tiers (kind.minor)

TierRankDescriptionOfficers
Head1Top of hierarchy (Secretary, DG, CG)160
Additional/Senior Deputy2Additional/Senior Deputy level251
Deputy3Deputy level178
Senior4Senior assistant level177
Standard5Base rank (Director, Commissioner, Divisional Secretary)1136
Assistant6Assistant level580
Acting7Acting in a role (temporary)134

Classification Methodology

Transparency Note

This section documents every rule applied during normalization and classification so that any result in the catalog above can be independently verified. The source script is classify_posts.py.

Overview

The classification pipeline has three stages, executed in strict order:

Raw presentPost string
→ Stage 1: Normalization (253 raw → 100 canonical titles)
→ Stage 2: Classification (100 titles → kind.major + kind.minor)
→ Stage 3: Aggregation (count by grade, collect raw variants)

Every officer record across all four grade JSONs (Special Grade, Grade I, Grade II, Grade III — 2,616 officers total) is processed through this pipeline. No records are dropped. The final sum of all post counts must equal 2,616.


Stage 1: Normalization

Normalization converts the raw presentPost field into a clean, canonical form. It runs six sub-steps in order; order matters because later steps depend on earlier ones.

1.1 Whitespace cleanup

  • Strip leading and trailing whitespace
  • Collapse all runs of multiple spaces to a single space
  • Example: "Commissioner of Agrarian Development""Commissioner of Agrarian Development"

1.2 Typo correction

Exact string replacements fix known misspellings in the source data. Each replacement is applied using simple string substitution (not regex).

MisspelledCorrectedOccurrences
AssiatnatAssistant26 (GIII)
Assistan (trailing space)Assistant 1 (GIII)
SeiniorSenior1 (GIII)
CommisionerCommissioner2 (GII, GIII)
SecretraySecretary2 (GIII)
SceretarySecretary1 (GIII)
SecreatarySecretary1 (GIII)
SeretarySecretary1 (SP)
EstabilishmentEstablishment1 (GI)
Co-operative / Co- operative / Co- OperativeCooperative7
HaomeHome1 (SP)
HambanthotaHambantota1 (GIII)

1.3 Abbreviation expansion

Standard SLAS abbreviations are expanded to their full forms using regex patterns. The period character (.) is required in the match to prevent false positives inside full words (e.g., Sen. matches but Senior does not).

AbbreviationExpansionRegex
Addl.Additional\bAddl\.\s*
Asst.Assistant\bAsst\.\s*
Dy.Deputy\bDy\.\s*
Snr.Senior\bSnr\.\s*
Sen.Senior\bSen\.\s*
Govt.Government\bGovt\.\s*
Prov.Provincial\bProv\.\s*

After expansion, multiple spaces are collapsed again, and leading lowercase letters are uppercased.

1.4 Structural overrides

A lookup table of ~13 entries handles cases that cannot be solved by abbreviation expansion alone:

Raw (after steps 1.1–1.3)Canonical formReason
District Secretary / Government AgentDistrict SecretaryDual-title — normalize to primary
Import and Export Controller GeneralController General of Imports & ExportsReorder to standard "Controller General of..." form
Municipal Commissioner (Acting)Acting Municipal CommissionerMove "(Acting)" suffix to "Acting" prefix
Additional Director General (Acting)Acting Additional Director GeneralSame
Assistant / Deputy DirectorAssistant DirectorNormalize slash-combined title
Senior Deputy Custom DirectorSenior Deputy Director of CustomsFull canonical form

1.5 Geographic qualifier stripping

Post titles that include a district, province, or city name in parentheses are merged into their base post. This treats "Assistant Commissioner (Monaragala)" and "Assistant Commissioner (Galle)" as the same classified role.

Stripped qualifiers: Monaragala, Matara, Kalutara, Kandy, Gampaha, Badulla, Anuradhapura, Galle, Jaffna, Kantale, Ampara, Mannar, Trincomalee, Hambantota, Harispaththuwa, Galigamuwa, Katana, Kilinochchi, Polonnaruwa, Colombo, Kurunegala, Matale, Puttalam, Uva, North Central, North Western, Central, SLC.

Not stripped: Functional qualifiers like (Administration), (SLAS), (LLDA), (Personnel & Training) are kept where needed or handled by the role-title normalization table (step 1.6).

Trailing Roman numeral suffixes ( - I, - II) are also removed.

1.6 Role-title normalization

The largest normalization table (~150 entries) maps domain-specific long titles to canonical short forms. The full list of rules falls into these categories:

Directors — All specialized Director variants (parenthetical divisions, department names) collapse to the base tier:

  • Director (Combined Service), Director (HRD), Director (Establishment), Director (SLAS), etc. → Director
  • Director General - Establishment, Director General (World Food Programme)Director General
  • District Director, Managing Director, Executive DirectorDirector

Commissioners — Domain-specific commissioner titles collapse to base:

  • Commissioner of Labour, Commissioner of Local Government, Commissioner of Cooperative DevelopmentCommissioner
  • Commissioner General of Ayurveda, Commissioner General of LabourCommissioner General
  • Deputy Commissioner of Labour, Deputy Commissioner of ExciseDeputy Commissioner
  • Assistant Commissioner of Labour, Assistant Commissioner of Local GovernmentAssistant Commissioner

Provincial — Provincial role variants collapse:

  • Provincial Director of Rural Development, Provincial Director of Sports, Provincial Director of TextileProvincial Director
  • All four spelling variants of Provincial Commissioner of Probation & Child CareProvincial Commissioner

Secretariat — Deputy Chief Secretary variants (different parenthetical qualifiers for Administration, Personnel & Training) collapse:

  • Deputy Chief Secretary (Administration), Deputy Chief Secretary (Personnel & Training), etc. → Deputy Chief Secretary
  • Senior Assistant Secretary (HR), Senior Assistant Secretary (Project Management Unit)Senior Assistant Secretary
  • Additional District Secretary (Land), Additional District Secretary (Admin)Additional District Secretary

Regulatory/Statutory — Specialty statutory roles keep their distinct identity:

  • Immigration & Emigration Controller General — kept as-is
  • Director of Customs, Senior Deputy Director of Customs — kept as-is
  • Comptroller General, Registrar General, Postmaster General — kept as-is

The raw variants that mapped to each canonical post are preserved in the rawVariants array of the output JSON and can be inspected by clicking the expand arrow in the catalog table.


Stage 2: Classification

After normalization, each canonical post title is classified into a two-dimensional taxonomy: kind.major (role family) and kind.minor (seniority tier).

The "Acting" prefix rule

If a normalized title starts with "Acting ", the prefix is stripped for the purpose of determining kind.major, and kind.minor is forced to "acting" regardless of what the base title would otherwise produce. This means:

  • Acting Divisional Secretary → major = FieldAdministration (from "Divisional Secretary"), minor = acting
  • Acting Director General → major = Directorate (from "Director General"), minor = acting

Major classification — Evaluation order

The classifier tests keyword conditions against the (prefix-stripped) title in the following priority order. The first match wins. This order is critical because some titles contain overlapping keywords (e.g., "Divisional Secretary" contains "Secretary").

1. NonActive         — exact match: Attached, Compulsory Leave, Foreign Mission, Interdicted, Leave
2. FieldAdministration — contains "divisional secretary" OR "district secretary"
3. Municipal — contains "municipal"
4. Provincial — contains "provincial"
5. Commission — contains "commissioner"
6. Secretariat — contains "secretary"
7. Directorate — contains "director"
8. Regulatory — matches any of: controller, registrar, inspector general,
customs, immigration, competent authority, general manager,
postmaster, survey general, government printer, comptroller,
conservator, chief operating officer, consultant, auditor
9. Fallback — Regulatory (for any unmatched title)

Why this order matters:

TitleWithout priorityWith priority
Divisional SecretarySecretariat (matches "secretary")FieldAdministration (step 2 matches first)
Municipal CommissionerCommission (matches "commissioner")Municipal (step 3 matches first)
Provincial DirectorDirectorate (matches "director")Provincial (step 4 matches first)
Provincial CommissionerCommission (matches "commissioner")Provincial (step 4 matches first)

Minor classification — Within each major

Once the major family is determined, the seniority tier is assigned based on prefix/qualifier keywords in the title:

FieldAdministration:

ConditionMinorExample
Title contains "additional district"additionalAdditional District Secretary
Title contains "assistant"assistantAssistant Divisional Secretary
Title contains "district secretary"headDistrict Secretary
All other Divisional Secretary variantsstandardDivisional Secretary

Municipal:

ConditionMinorExample
Commissioner + "deputy"deputyDeputy Municipal Commissioner
Commissioner + "assistant"assistantAssistant Municipal Commissioner
Commissioner (plain)standardMunicipal Commissioner
Secretary + "assistant"assistantAssistant Municipal Secretary
Secretary (plain)standardMunicipal Secretary

Provincial:

ConditionMinorExample
Director + "additional"additionalAdditional Provincial Director
Director + "deputy"deputyDeputy Provincial Director
Director (plain)standardProvincial Director
CommissionerstandardProvincial Commissioner
Chief Secretaryhead(not present in current data)

Commission:

ConditionMinorExample
"commissioner general" + "additional"additionalAdditional Commissioner General
"commissioner general" (plain)headCommissioner General
"deputy"deputyDeputy Commissioner, Deputy Election Commissioner
"assistant"assistantAssistant Commissioner, Assistant Election Commissioner
"additional"additionalAdditional Election Commissioner
All othersstandardCommissioner, Election Commissioner

Secretariat:

Condition (tested in order)MinorExample
"chief secretary" + "deputy"deputyDeputy Chief Secretary
"chief secretary" + "assistant"assistantAssistant Chief Secretary
"chief secretary" (plain)headChief Secretary
"additional secretary"additionalAdditional Secretary
"deputy secretary"deputyDeputy Secretary of the Treasury
"secretary general" + "deputy"deputyDeputy Secretary General
"secretary general" (plain)headSecretary General
"senior assistant secretary"seniorSenior Assistant Secretary
"assistant secretary"standardAssistant Secretary
"committee secretary"standardCommittee Secretary
"secretary to the governor"headSecretary to the Governor
"secretary to the prime minister"headSecretary to the Prime Minister
Exact match "secretary"headSecretary
All othersstandard

Directorate:

Condition (tested in order)MinorExample
"director general" + "additional"additionalAdditional Director General
"director general" + "deputy"deputyDeputy Director General
"director general" (plain)headDirector General
"deputy director"deputyDeputy Director, Senior Deputy Director of Customs
"assistant director"assistantAssistant Director
"senior"senior(Senior Deputy treated separately)
"additional"additionalAdditional Director
"regional director"standardRegional Director
All othersstandardDirector, Director of Customs

Regulatory:

Condition (tested in order)MinorExample
"controller general"headController General of Imports & Exports
"registrar general" + "assistant"assistantAssistant Registrar General
"registrar general" + "senior deputy"seniorSenior Deputy Registrar General
"registrar general" (plain)headRegistrar General
"inspector general" + "deputy"deputyDeputy Inspector General of Police
"postmaster general" + "deputy"deputyDeputy Postmaster General
"postmaster general" (plain)headPostmaster General
"general manager" + "additional"additionalAdditional General Manager
"general manager" + "deputy"deputyDeputy General Manager
"general manager" (plain)headGeneral Manager
"survey general" + "additional"additionalAdditional Survey General
"survey general" + "senior deputy"seniorSenior Deputy Survey General
"government printer" + "additional"additionalAdditional Government Printer
"government printer" + "deputy"deputyDeputy Government Printer
"comptroller general"headComptroller General
Generic "additional"additionalAdditional Conservator General
Generic "deputy"deputyDeputy Controller
Generic "assistant"assistantAssistant Consultant
Generic "senior"seniorSenior Consultant
All othersstandardImmigration & Emigration Controller, Consultant

NonActive — all non-active statuses receive minor: "standard".


Stage 3: Aggregation

After every officer record is normalized and classified:

  1. Officers sharing the same normalized title are grouped together
  2. For each group, the following are computed:
    • count.total — total officers holding this post across all grades
    • count.SP, count.GI, count.GII, count.GIII — breakdown by SLAS grade
    • rawVariants — sorted list of distinct raw strings that mapped to this normalized title
  3. Groups are sorted by count.total descending
  4. A stable id is generated from the normalized title by lowercasing and replacing non-alphanumeric characters with hyphens
  5. Summary statistics (byMajor, byMinor, byGrade) are computed by summing across all posts
  6. The total across all posts is verified to equal 2,616 (assertion in the script)

Known Limitations

  1. Geographic detail is lost. "Assistant Commissioner (Monaragala)" and "Assistant Commissioner (Galle)" are merged into one canonical "Assistant Commissioner" post. The raw variants preserve the original strings, but the classification and count treat them identically.

  2. "Acting" overrides seniority. An "Acting Director General" is classified with minor: "acting" rather than minor: "head". This is a design choice — it signals the appointment is temporary — but it means the tier distribution does not reflect the effective seniority of acting appointments.

  3. Fallback to Regulatory. Any title that does not match the first seven major families falls into Regulatory. In the current dataset this captures roles like Consultant, Chief Operating Officer, and Conservator of Forest, which are arguably miscellaneous rather than regulatory. The fallback is intentional to ensure no officer is left unclassified.

  4. Normalization is rule-based. The typo and abbreviation tables were compiled by manual inspection of all 253 raw variants. New seniority lists may introduce new misspellings or abbreviation styles that are not yet covered.