Skip to content
← All datasets

Inexperienced Teachers and Leaders

Share of Georgia teachers and leaders in their first career years by school, district, role, and poverty stratum, 2018-2024.

Year coverage
20182024
Updated
annual
Version
1.0.0
Schema hash
97f942f22b6b

Detail levels available

StateDistrictSchool · default

Overview

Georgia Office of Student Achievement (GOSA) Inexperienced Teachers and Leaders report. For every Georgia public school, school district, and the state as a whole, reports the total educator full-time equivalent (`total_fte`), the FTE of educators classified as Inexperienced — within the first years of their career, per the ESSA inexperienced-educator standard — (`inexperienced_fte`), and the inexperienced FTE as a percentage of total FTE (`inexperienced_fte_rate`, on a 0-1 decimal scale). Unlike the sibling educator-qualifications topics (Teachers-only), this dataset reports both Teachers and Leaders (`role`), and each entity carries rows across school-poverty strata (`poverty_subgroup`: total, high_poverty, low_poverty, plus not_applicable and unknown for Leaders). Coverage spans the 2017-2018 school year through 2023-2024.

Row grain: One row per year, district_code, school_code, role, poverty_subgroup.

Key metric

inexperienced_fte_rateInexperienced FTE Rate (proportion)

The single headline value most answers want.

Variables

Every column in the fact table. The code is the exact field name the API returns.

ColumnTypeUnitRangeNull?Description
yearYearintegernoEnding calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year.
Full description
Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year.
district_codeDistrict Codestringyes3-digit GOSA district code (zero-padded) for standard districts; 7-digit charter code for charter / specialty-school districts; NULL for state-level aggregate rows. FK to the education districts dimension. Because the source publishes only district NAMES (no codes), codes are resolved against `data/gold/education/_dimensions/districts.parquet` via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, and guarded name matching — see src/etl/education/gosa/_educator_lookups.py). Rows whose names cannot be resolved or faithfully attributed are dropped only under documented predicates; the transform manifest records each dropped class and count per year.
Full description
3-digit GOSA district code (zero-padded) for standard districts; 7-digit charter code for charter / specialty-school districts; NULL for state-level aggregate rows. FK to the education districts dimension. Because the source publishes only district NAMES (no codes), codes are resolved against `data/gold/education/_dimensions/districts.parquet` via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, and guarded name matching — see src/etl/education/gosa/_educator_lookups.py). Rows whose names cannot be resolved or faithfully attributed are dropped only under documented predicates; the transform manifest records each dropped class and count per year.

Joins districts; adds its label columns.

school_codeSchool Codestringyes4-digit GOSA school code (zero-padded); NULL for district-level and state-level aggregate rows. FK to the education schools dimension (composite key with district_code). Resolved by name via the shared educator-topic resolver; school-level rows whose name cannot be resolved to a dimension entry are dropped under documented source-gap predicates only (counts in the transform manifest).
Full description
4-digit GOSA school code (zero-padded); NULL for district-level and state-level aggregate rows. FK to the education schools dimension (composite key with district_code). Resolved by name via the shared educator-topic resolver; school-level rows whose name cannot be resolved to a dimension entry are dropped under documented source-gap predicates only (counts in the transform manifest).

Joins schools; adds its label columns.

roleRolestringnoWorkforce role the row measures: teachers or leaders (principals and assistant principals).
Full description
Workforce role the row measures: `teachers` or `leaders` (principals / assistant principals). Unlike the sibling emergency / out-of-field educator-qualifications topics (Teachers-only), this dataset reports both roles.
2 allowed values
  • leaders
  • teachers
poverty_subgroupPoverty SubgroupstringnoSchool-poverty stratum the row covers (total, high, or low poverty; Leaders add not_applicable/unknown); a school-poverty level, not a student demographic.
Full description
Poverty stratum of the schools whose FTE this row aggregates. `total` covers all schools in the entity; `high_poverty` / `low_poverty` cover only the entity's schools in the state's highest- / lowest-poverty quartile (per GOSA's K-12 Teacher & Leader Workforce Reports, school poverty is defined by the direct-certification rate). Leaders rows additionally carry `not_applicable` (the dominant Leaders stratum) and `unknown` (rare — chiefly Department of Juvenile Justice facilities, plus isolated Mitchell County 2022 and Gwinnett County 2024 rows); Teachers rows never carry either (enforced by a quality check). For a school-level row the stratum describes the school itself, so a stratum row duplicates that school's `total` row (enforced by a quality check). This is a SCHOOL-poverty stratum, NOT a student demographic — it does not map to the global demographics dimension.
5 allowed values
  • high_poverty
  • low_poverty
  • not_applicable
  • total — total / aggregate
  • unknown
total_fteTotal FTEnumbercountyesTotal educator full-time equivalent count in the entity for the given role and poverty subgroup. For `poverty_subgroup = total` this is the entity's total role FTE; for other strata it is the FTE in just that stratum of schools. Fractional FTEs are real (e.g. 58.2). NULL when suppressed by the GOSA reporting floor (`TFS`, < 10 FTE) — 2021 onward. Denominator of `inexperienced_fte_rate`.
Full description
Total educator full-time equivalent count in the entity for the given role and poverty subgroup. For `poverty_subgroup = total` this is the entity's total role FTE; for other strata it is the FTE in just that stratum of schools. Fractional FTEs are real (e.g. 58.2). NULL when suppressed by the GOSA reporting floor (`TFS`, < 10 FTE) — 2021 onward. Denominator of `inexperienced_fte_rate`.
inexperienced_fteInexperienced FTEnumbercountyesEducator FTE classified as Inexperienced (within the first years of their career, per the ESSA inexperienced-educator standard) in the entity for the given role and poverty subgroup. NULL when suppressed (`TFS`, < 10 FTE) — observed from 2021 onward. True zeros (no inexperienced educators) are preserved as 0.0 in 2018-2020, before GOSA introduced suppression for this report. Numerator of `inexperienced_fte_rate`. WARNING — not additive across hierarchy levels for Teachers: school-row sums exceed the district row and district-row sums exceed the state row by ~1.4x in every year (bronze-native; consistent with experience measured relative to the reporting unit — new-to-school vs new-to-district vs new-to-profession). Never derive an aggregate by summing lower-level rows; use the published row for the level you need. Leaders rows and `total_fte` DO reconcile across levels (~1.000). Six 2018-2020 Leaders rows at tiny programs exceed `total_fte` by exactly 0.1 (e.g. 2.0 vs 1.9 at Randolph Clay High School 2018) — an artifact of GOSA rounding each FTE to 0.1 independently; preserved per data-cleaning-standards §4b (extreme-but-conceivable).
Full description
Educator FTE classified as Inexperienced (within the first years of their career, per the ESSA inexperienced-educator standard) in the entity for the given role and poverty subgroup. NULL when suppressed (`TFS`, < 10 FTE) — observed from 2021 onward. True zeros (no inexperienced educators) are preserved as 0.0 in 2018-2020, before GOSA introduced suppression for this report. Numerator of `inexperienced_fte_rate`. WARNING — not additive across hierarchy levels for Teachers: school-row sums exceed the district row and district-row sums exceed the state row by ~1.4x in every year (bronze-native; consistent with experience measured relative to the reporting unit — new-to-school vs new-to-district vs new-to-profession). Never derive an aggregate by summing lower-level rows; use the published row for the level you need. Leaders rows and `total_fte` DO reconcile across levels (~1.000). Six 2018-2020 Leaders rows at tiny programs exceed `total_fte` by exactly 0.1 (e.g. 2.0 vs 1.9 at Randolph Clay High School 2018) — an artifact of GOSA rounding each FTE to 0.1 independently; preserved per data-cleaning-standards §4b (extreme-but-conceivable).
inexperienced_fte_rateInexperienced FTE RatenumberproportionyesShare of educator FTE classified as inexperienced, on a 0-1 scale (inexperienced_fte / total_fte).
Full description
`inexperienced_fte` / `total_fte` on a 0-1 decimal scale. Bronze publishes an integer 0-100 percent (verified range 0-100 across all years); divided by 100 per data-cleaning-standards §4. GOSA computes the integer percent from UNROUNDED FTE values while publishing FTEs rounded to 0.1, so at small programs the published rate deviates from inexperienced_fte/total_fte (up to 0.9 below 10 FTE, e.g. published 0.1/0.1 with rate 0.10; at or above the 10-FTE reporting floor the worst observed deviation is 0.09). A quality check enforces reconciliation within 0.10 where total_fte >= 10. The rate is preserved from bronze even when `inexperienced_fte` is suppressed.

Filters

Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.

ParameterKindAllowed valuesNotes
yearyear_exactany value
year_minyear_rangeany value
year_maxyear_rangeany value
detaildetaildistrictsschoolsstatesenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
rolecategoricalleadersteachersmulti-value, enum-enforced, pick one
poverty_subgroupcategoricalhigh_povertylow_povertynot_applicabletotalunknownmulti-value, enum-enforced
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced

Example requests

Run these against the base URL — they return live data.

All rows (first page), schools level

curl "https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders"

schools data for 2024

curl "https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?year=2024"

Filtered to role = leaders for 2024

curl "https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?year=2024&role=leaders"

One district (code 601), 2024

curl "https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?district_code=601&year=2024&detail=districts"

Download 2024 as CSV

curl "https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?year=2024&format=csv"

Notes & limitations

NULL handling

  • Suppressed cells (too few students to report) are NULL, never zero.
  • Zero is a real, reported value.

Limitations

Suppression is era-asymmetric: 2018-2020 publish a real `0` (true zero inexperienced educators, 723-765 rows per year), while 2021 onward suppress any value below 10 with `TFS` (treat NULL as 'value < 10' for 2021+ but as genuinely missing pre-2021); inexperienced_fte_rate may be non-null even when inexperienced_fte is suppressed. The source publishes only district/school NAMES, so codes are resolved by name against the education dimensions via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, guarded matching); rows that cannot be resolved or faithfully attributed are dropped only under documented predicates — unresolved truncated charter-container placeholders, cataloged source gaps (e.g. Ivy Prep Kirkwood), and the ambiguous 52-char-truncated Genesis Innovation Academy district aggregates (Boys/Girls distinguisher erased; bare school rows carry the real values) — with per-year counts in the transform manifest. District-level coverage for Genesis Innovation Academy is therefore missing in 2023-2024 while its school-level rows are complete. The 2024 truncated Utopian Academy aggregates (one Leaders/Total identical-metric pair collapsed by dedup, plus a single Leaders/Low Poverty row) are all bound to the pinned main campus 7820121 even though the truncated name also covers the Trilith campus 7820619 — the Low Poverty row likely describes Trilith; preserved as published and matching the v1-approved handling. Six 2018-2020 Leaders rows carry inexperienced_fte exceeding total_fte by exactly 0.1 (independent 0.1-FTE rounding; preserved per data-cleaning-standards §4b). Teachers `inexperienced_fte` does NOT aggregate across hierarchy levels: school-row sums exceed the district row and district-row sums exceed the state row by ~1.4x in every year (consistent with experience measured relative to the reporting unit); never derive aggregates by summing lower-level rows. The 2019 file's Teachers FTE levels run ~40% above adjacent years statewide (162,256.2 vs 118,009.1 in 2018 / 110,800.8 in 2020) and the 2018 file's school-level total_fte can sum above the district row (149 of 205 districts) — treat 2018-2019 levels as a distinct measurement basis when trending. State rows have NULL district_code and school_code; district rows have NULL school_code.