EDORA
Skip to content

EDORA Learn — Pipelines

System Exit and Longitudinal Follow-Up (Tracking Outcomes Over Time)

Pipeline 09E

Transparency note: post-exit outcomes are derived from linked administrative datasets. Attrition due to unmatched records or migration is quantified, and confidence cues are applied when coverage falls below 85%.

Overview

When youth leave supervision or placement, longitudinal follow-up helps measure stability and change. Outcomes are tracked using cross-agency data on education, employment, and recidivism. A stable cohort design—anchored to an exit date—ensures comparability across time and programs. This page describes how those follow-ups are constructed and interpreted.

What We Track

Exit Definitions

  • End of formal involvement recorded with an exit date
    • Probation closure
    • Release from placement
    • End of court jurisdiction
  • Exit reason coded (completion, time-served, transfer, other)

Observation Windows

  • Fixed follow-ups: 6 / 12 / 24 months from exit date
  • Window completeness checked (left/right censoring flags)

Education & Employment

  • Enrollment & attendance (term-based) post-exit
  • Diploma/GED completion verified (date, credential type)
  • Employment/wage records matched to UI/workforce data (coverage noted)

Recidivism & Re-engagement

  • New referrals / petitions / arrests within each window
  • Charge severity & time-to-event captured (survival-friendly)

Attrition & Censoring

  • Unmatched records & migration coded (out-of-state, unknown)
  • Sealed/expunged cases excluded with censor timestamp

Typical Flow

  1. Define exit cohort by closure date/program/jurisdiction
    • Verify follow-up windows are feasible for each exit month
  2. Link datasets (justice, education, workforce, health)
    • Use common IDs or probabilistic rules; record match score & review status
  3. Calculate outcomes for each window
    • Education: enrollment/attendance, diploma/GED
    • Employment: any UI-covered earnings; wages/hours where available
    • Justice: new referral/petition/arrest; time-to-event
  4. Adjust denominators for attrition & censoring
    • Flag incomplete windows; consider weights for representativeness
  5. Publish indicators with transparency notes
    • Document coverage, definitions, series breaks, and small-n handling
Schema source: system-exit-and-follow-up

Fields

FieldTypeRequiredCodesetDescription
pipeline_place_iduuidUnique identifier for this exit-window record.
pipeline_stage_idenum
stages.yml#stage_key(8)
  • intake
  • detention
  • adjudication
  • disposition
  • supervision
  • commitment_and_placement
  • reentry
  • closure
One of the canonical stages; here = reentry_aftercare.
pipeline_place_keyenum
pipeline_places.yml#place_key(45)
  • intake
  • pre_petition_diversion_and_deflection
  • diversion
  • youth_assessment_tools
  • prosecutorial_screening
  • status_offenses
  • adjudication
  • case_planning
  • family_engagement
  • case_timeliness
  • language_access
  • restorative_justice
  • detention_screening
  • community_atds
  • electronic_monitoring
  • court_appearance_and_fta
  • initial_hearing
  • pretrial_supervision
  • probation
  • intensive_supervision
  • …and 25 more
Canonical key for this place (maps to route/slug).
youth_idstringSalted/hashed or state UID. No plaintext PII.
staff_idstringStaff responsible for follow-up coordination (ID only).
occurred_datetimedatetimeAnchor timestamp for row creation/update (e.g., window closeout).
jurisdiction_codestringCounty/parish/circuit or standardized local code.
legal_case_idstringCase/docket identifier if exit linked to court jurisdiction.
source_systemstringOrigin system name.
source_filestringSource batch/file id if flatfile.
extract_run_idstringETL run id for lineage.
series_break_flagbooleanComparability break applies to this row.
series_break_reasonenum
series_breaks.yml#reason(4)
  • definition_change
  • vendor_change
  • coverage_change
  • policy_change
Reason for break (policy/process/tool change).
exit_datedateDate of exit from formal involvement (cohort anchor).
exit_type_codeenum
exit_types.yml#type(3)
  • probation_closure
  • placement_release
  • end_of_court_jurisdiction
probation_closure, placement_release, end_of_court_jurisdiction.
exit_reason_codeenum
exit_reasons.yml#reason(5)
  • completion
  • time_served
  • transfer
  • administrative
  • other
completion, time_served, transfer, administrative, other.
followup_window_codeenum
followup_windows.yml#window(4)
  • followup_30d
  • followup_90d
  • followup_180d
  • followup_365d
6m, 12m, 24m (fixed windows from exit_date).
window_start_datedateInclusive start of observation window (typically = exit_date).
window_end_datedateExclusive end date of the observation window.
window_complete_flagbooleanTrue if full window observed (no right-censoring).
left_censor_flagbooleanTrue if pre-window data missing (rare for exit-based cohorts).
right_censor_flagbooleanTrue if observation ended before window_end_date.
censor_timestampdatetimeTimestamp when censoring occurred (sealed/expunged/moved).
migration_status_codeenum
migration_statuses.yml#status(3)
  • in_state
  • out_of_state
  • unknown
in_state, out_of_state, unknown.
post_exit_enrollment_status_codeenum
education_status.yml#status(6)
  • in_school
  • alt_edu
  • withdrawn
  • graduated
  • ged
  • unknown
Enrollment status during the window.
post_exit_attendance_days_presentintegerDays present accrued within the window (if available).
post_exit_attendance_days_enrolledintegerDays enrolled within the window.
diploma_credential_type_codeenum
credential_types.yml#type(6)
  • hs_diploma
  • ged
  • industry_cert
  • short_term_training
  • associate_degree
  • other
HS diploma, GED/HiSET, industry_cert, etc., if completed within window.
diploma_credential_awarded_datedateAward date of diploma/GED within the window.
workforce_match_method_codeenum
matching_methods.yml#method(3)
  • deterministic
  • probabilistic
  • clerical_review
deterministic, probabilistic, clerical_review.
workforce_match_scorenumberProbabilistic match score (if applicable).
workforce_match_outcome_codeenum
match_outcomes.yml#outcome(6)
  • auto_match
  • auto_no_match
  • clerical_queue
  • confirmed_match
  • confirmed_no_match
  • merged_duplicate
auto_match, clerical_queue, confirmed_no_match, confirmed_match.
ui_coverage_status_codeenum
employment_coverage_statuses.yml#status(4)
  • full
  • partial
  • none
  • unknown
full, partial, none, unknown (UI data coverage for the youth/window).
any_ui_earnings_flagbooleanTrue if any UI-covered wages observed within window.
earnings_observation_quarter_countintegerCount of quarters with UI-covered wages in window (0–4).
recidivism_event_type_codesarray<string>
recidivism_event_types.yml#type(5)
  • referral
  • petition
  • arrest
  • adjudication
  • violation_return
New referral/petition/arrest/adjudication within window; semicolon-delimited.
first_event_datetimedatetimeTimestamp of first qualifying event within the window.
first_event_severity_codeenum
event_severity_levels.yml#level(4)
  • low
  • moderate
  • high
  • unknown
Severity category of first event (local mapping).
survival_days_to_first_eventintegerDays from window_start_date to first_event_datetime (structural store; non-negative).
coverage_note_codeenum
coverage_notes.yml#note(6)
  • sealed_case_excluded
  • moved_out_of_state
  • unmatched_record
  • incomplete_window
  • data_hold
  • other
Notes about data coverage (e.g., sealed_case_excluded, moved_out_of_state).
Download CSVwhat_we_track.csv

Data & Methods

Longitudinal follow-up uses cohort-based denominators and fixed observation windows (e.g., 12 months post-exit). Each dataset’s coverage is validated by match rates and duplication checks. Attrition is handled through right-censoring or weighting adjustments per Attrition & Censoring. Cross-agency data integration follows Data Linkage & Integration and Data Interoperability & Architecture. Confidence intervals and suppression rules follow Suppression & Small-n, and time trends are interpreted using Trend Interpretation & Baseline Selection.

Related