Back to projects

Data / Data CLI

FBI Data Pipeline

A small, explicit ETL command that reads FBI Wanted API pages or local JSON and normalizes records into a thorn-delimited text format.

PythonRequestsJSONCLI
View repository
FBI DATA PIPELINE
EXTRACT → TRANSFORM → LOAD

01 / COMPONENTS & DATA FLOW

Inside the system.

  1. 01API page / JSON file
  2. 02Record normalization
  3. 03Multi-value fields
  4. 04Delimited output

Two input adapters

The command accepts either --page for the FBI Wanted API or --file for a UTF-8 JSON file. HTTP errors propagate through requests.raise_for_status.

A normalization function

process_data accepts an items envelope or a list of records. It normalizes subjects and field_offices into lists, handles missing values, and joins non-empty values.

Portable text output

Each output line contains title, subjects, and field offices separated by the thorn character þ. The CLI writes the transformed records to standard output.

02 / IMPLEMENTATION DECISIONS

Why it works this way.

Keep transformation independent

API access and file reading both feed the same normalization function. That makes processing behavior testable without a live HTTP request.

Be precise about the dataset

The source is the FBI Wanted list API. This project is not a general FBI crime-statistics warehouse or a scheduled multi-source pipeline.

03 / SCOPE & TRADEOFFS

The implementation boundary.

A focused data-conversion project with tests for fetching and transformation. Pagination orchestration, retries, scheduling, and warehouse loading are outside the implemented CLI.

04 / READ THE IMPLEMENTATION

Follow it into the code.