EDORA Learn β Pipelines
Electronic Monitoring & Location-Based Conditions (ATD Modality)
Pipeline 03B
Transparency note: EM cohorts can be small and device/vendor changes create definition shifts in alert logic; we pool low-n cells and mark series breaks when hardware, software, or policy thresholds change.
Overview
Electronic monitoring (EM)βincluding GPS ankle devices or app-based geofencingβis used in some jurisdictions as an alternative to secure detention. Conditions typically include curfew windows, exclusion zones (e.g., schools, retail areas), or stay-away orders. This page documents where EM fits in the pipeline, what data are generated, and how compliance and responses are measured neutrally across sites.
What We Track
Eligibility & Criteria
- Decision rules for assigning EM (risk score, offense type, prior history)
- Contraindications (housing instability, medical needs, device incompatibility)
- Overrides documented with rationale & approver
Device Setup & Data
- Install date/time; device type & version
- Sampling interval / ping cadence configured
- Battery/charge events captured
- Geofence definitions:
- Curfew windows
- Exclusion zones
- Inclusion zones (school, work)
Compliance Metrics
- Percent of curfew hours compliant
- Alert counts by type (strap tamper, low battery, zone entry/exit)
- Average time-to-acknowledge alert
- False alert rate (vendor logic/version aware)
Responses & Escalation
- Graduated responses (warning β schedule change β ATD switch β petition to revoke)
- Proportionality & consistency checks (grid fidelity)
- Action/outcome logged with timestamps
Equity, Accuracy & Privacy
- Performance by subgroup & geography (entry, alerts, responses)
- Device reliability & version changes tracked (series breaks)
- Data retention & access controls (who can view, how long)
Simple Flow
- Assignment at initial hearing or intake diversion decision; conditions & zones defined
- Confirm eligibility and explain expectations in plain language
- Installation & orientation with youth/caregiver; confirm consent & contact protocols
- Set geofences, curfew windows, and alert routing
- Test device; verify contact escalation pathways
- Monitoring of curfew windows and zones; alerts routed to officer/provider per on-call schedule
- Log alert types, acknowledge times, and any false-alert flags
- Response workflow based on severity/frequency; document actions & outcomes
- Apply graduated grid; record proportionality and overrides
- Review & step-down after a defined compliance period
- Remove device or transition to lighter ATD; close episode with status
Fields
Field | Type | Required | Codeset | Description |
---|---|---|---|---|
pipeline_place_id | uuid | β | β | Unique identifier for this pipeline place row. |
pipeline_stage_id | enum | β | stages.yml#stage_key(8)
| One of the 8 canonical stages. |
pipeline_place_key | enum | β | pipeline_places.yml#place_key(45)
| Canonical key for this place (maps to route/slug). |
youth_id | string | β | β | Salted/hashed or state UID. No plaintext PII. |
staff_id | string | β | Staff primary actor for this place, if applicable. | |
occurred_datetime | datetime | β | β | Timestamp when EM assignment was authorized/recorded. |
jurisdiction_code | string | β | β | County/parish/circuit or standardized local code. |
location_site_id | string | β | Program office or installation site identifier. | |
actor_role_code | enum | roles.yml#actor_role(7)
| Role primarily responsible for this place. | |
legal_case_id | string | β | Docket/case identifier if already created. | |
source_system | string | β | β | Origin system name. |
source_file | string | β | Source batch/file id if flatfile. | |
extract_run_id | string | β | ETL run id for lineage. | |
series_break_flag | boolean | β | Comparability break applies to this row. | |
series_break_reason | enum | series_breaks.yml#reason(4)
| Reason for break when flagged. | |
referral_context_code | enum | β | atd_referral_contexts.yml#context(3)
| Where/when EM assignment originated (intake, detention_hearing, review_hearing). |
assignment_reason_code | enum | em_assignment_reasons.yml#reason(4)
| Pretrial_condition, step_down_from_detention, graduated_response, other. | |
atd_program_id | string | β | Program identifier when EM is delivered via an ATD program. | |
risk_tool_name | enum | instruments.yml#risk_tool_name(2)
| Risk tool informing eligibility/cutoffs (RAI variant, etc.). | |
risk_tool_version | string | β | Version string/number for the risk tool used. | |
risk_cutpoint_set_key | enum | cutpoint_sets.yml#set_key(2)
| Named threshold set applied for eligibility. | |
charge_exclusion_codes | array<string | charge_exclusions.yml#exclusion(5)
| Charge disqualifiers present; semicolon-delimited in CSV. | |
override_flag | boolean | β | Judicial/probation override used contrary to guidance. | |
override_reason_code | enum | overrides.yml#reason(4)
| Rationale for override; approver captured in audit trail. | |
override_approver_staff_id | string | β | Staff ID of override approver. | |
device_type_code | enum | β | em_device_types.yml#device_type(3)
| gps, radio_frequency, smartphone_app. |
device_vendor_code | enum | em_device_vendors.yml#vendor(3)
| Vendor code (do not store serials or MAC addresses here). | |
device_install_datetime | datetime | β | β | Installation/activation timestamp. |
device_remove_datetime | datetime | β | Removal/deactivation timestamp. | |
grace_period_minutes | integer | β | Configured grace period for alerts at assignment time. | |
curfew_start_time | time | β | Daily curfew start (local time), if imposed. | |
curfew_end_time | time | β | Daily curfew end (local time), if imposed. | |
geofence_zone_codes | array<string> | geofence_zones.yml#zone(4)
| Assigned exclusion or inclusion zones; semicolon-delimited in CSV. | |
alert_count_total | integer | β | Total device alerts during the episode window. | |
alert_count_low_battery | integer | β | Count of low-battery alerts. | |
alert_count_strap_tamper | integer | β | Count of strap-tamper alerts. | |
alert_count_zone_violation | integer | β | Count of zone/curfew violations. | |
alert_count_signal_loss | integer | β | Count of prolonged signal-loss alerts. | |
data_gap_minutes_total | integer | β | Total minutes of missing telemetry (vendor outage/device offline). | |
response_action_codes | array<string> | graduated_responses.yml#action(5)
| Actions taken in response to alerts (contact_attempt, home_visit, step_up, violation_report); semicolon-delimited in CSV. | |
appearances_scheduled_count | integer | β | Court appearances scheduled during EM episode. | |
appearances_missed_count | integer | β | Missed court appearances (FTAs) during EM episode. | |
violation_event_count_new_law | integer | β | New-law violation events during EM episode. | |
violation_event_count_technical | integer | β | Technical violations (curfew/zone/monitoring conditions). | |
completion_status_code | enum | β | completion_statuses.yml#status(3)
| completed, neutral_exit, or unsuccessful. |
completion_datetime | datetime | β | β | Episode end timestamp. |
unsuccessful_reason_code | enum | failure_reasons.yml#reason(3)
| If unsuccessful, reason (new_offense, noncompliance, withdrawal). | |
routed_to_next_node_code | enum | next_routes.yml#route(3)
| Routing after closure (continue_detention, step_down, case_review, other). | |
Download CSVwhat_we_track.csv |
Data & Methods
EM indicators use assignment-based denominators. Compliance is measured as compliant hours Γ· total required curfew hours, plus alert rates per 100 monitored hours. Time-to-response is captured from alert timestamp to action recorded. Device/version fields are mandatory to separate hardware/software effects; when vendors or thresholds change, we mark series breaks. Classification of responses follows Technical Violations vs. New Offenses. Privacy and retention practices are documented per Data Privacy & Disclosure Control, and cross-site comparability follows Cross-Jurisdiction Comparability.