A data engineering + AI-assisted decision-support project focused on improving youth transition outcomes through clean data pipelines, transparent scoring, and actionable resource recommendations.
Quick overview for employers and instructors: PROJECT_BRIEF.md
Future Path simulates a real-world workflow used by transition teams, instructors, and employers to understand youth needs and match support services quickly.
The project combines:
- Synthetic youth profile generation
- Data quality and validation pipelines
- Relational modeling in SQLite
- Risk scoring and recommendation logic
- AI Assistant intake workflow
- Streamlit dashboards for operational visibility
Youth transition support programs often struggle with fragmented data, inconsistent intake quality, and limited visibility into who needs what support first.
Future Path addresses these challenges by providing:
- A reproducible, privacy-aware data foundation
- Clear risk scoring rules that are auditable
- Structured recommendation and assignment workflows
- Dashboard views that make trends and priorities obvious
- Language: Python 3
- Data processing: pandas
- Database: SQLite
- Testing: pytest
- Dashboard/UI: Streamlit
- Data artifacts: CSV (raw, clean, processed)
Labels: documentation, architecture, diagram
flowchart LR
subgraph DataPipeline[Data Pipeline]
A[Synthetic Data Generator]
B[Raw Data Storage]
C[Cleaning Pipeline]
D[Validation]
E[SQLite Database]
F[Risk Scoring]
G[Resource Recommendations]
A --> B --> C --> D --> E --> F --> G
end
subgraph AssistantWorkflow[AI Assistant Workflow]
H[AI Assistant Intake]
I[Intake Answers and Session Context]
J[Recommendation and Assignment Logic]
H --> I --> J
end
E --> H
E --> J
F --> J
J --> G
E --> K[Streamlit Dashboard]
F --> K
G --> K
H --> K
- Generate synthetic youth and caseworker datasets
- Clean public, caseworker, and resource catalog records
- Load curated data into SQLite domain tables
- Calculate risk scores per youth
- Generate recommendations from risk + intake context
- Assign resources from intake outcomes
- Explore outcomes in dashboards and profile views
Future-Path/
├── dashboard/
│ ├── overview.py
│ ├── profile_lookup.py
│ └── ai_assistant.py
├── data/
│ ├── raw/
│ ├── clean/
│ └── processed/
├── database/
│ └── relational_schema.sql
├── docs/
│ └── screenshots/
│ ├── dashboard-overview.svg
│ └── ai-assistant.svg
├── src/
│ ├── generate_synthetic_youth_data.py
│ ├── clean_synthetic_youth_data.py
│ ├── clean_caseworker_youth_data.py
│ ├── clean_youth_resource_catalog.py
│ ├── load_youth_data_to_database.py
│ ├── load_youth_profiles_etl.py
│ ├── calculate_risk_scores.py
│ ├── generate_recommendations.py
│ ├── future_path_ai_intake.py
│ ├── assign_resources_from_intake.py
│ ├── match_youth_to_resources.py
│ └── run_data_pipeline.py
├── tests/
├── requirements.txt
└── README.md
On macOS, double-click start.command to migrate the database, run the pipeline, start all dashboard servers, and open the Overview dashboard. You can also double-click Future Path.app for the same behavior from Finder.
Current launcher behavior:
- Starts all dashboards up front (ports
8601-8605) so switching is immediate - Opens Overview first at
http://localhost:8601 - Preloads all dashboard URLs at startup so pages are ready in the browser
- Keeps all dashboard servers running while the app session is active
- Automatically stops dashboard servers after all dashboard tabs/windows are closed
- Also stops all dashboard servers when you end the launcher session (Ctrl+C)
Optional: run ./start.command <dashboard_key> to open a different dashboard first.
Valid keys: overview, profile_lookup, ai_assistant, caseworker_dashboard, youth_dashboard.
python3 -m pip install -r requirements.txtpython3 src/run_data_pipeline.pyThis command generates, cleans, loads, matches, and validates core pipeline outputs.
python3 src/generate_synthetic_youth_data.py
python3 src/clean_synthetic_youth_data.py
python3 src/clean_caseworker_youth_data.py
python3 src/clean_youth_resource_catalog.py
python3 src/load_youth_data_to_database.py
python3 src/load_youth_profiles_etl.py
python3 src/calculate_risk_scores.py
python3 src/generate_recommendations.py
python3 src/match_youth_to_resources.pyOverview dashboard:
streamlit run dashboard/overview.pyYouth profile lookup:
streamlit run dashboard/profile_lookup.pyAI Assistant intake UI:
streamlit run dashboard/ai_assistant.pyCaseworker workflow dashboard:
streamlit run dashboard/caseworker_dashboard.pyIf your local database was created with an older schema and dashboard pages fail due to missing columns, run:
python3 src/migrate_database_schema.py --database database/future_path.dbpytest -qCurrent expected result: all tests pass.
Labels: demo, presentation
Use this script for a one-minute walkthrough of the project value and core features.
One-page speaker version: docs/demo-cheat-sheet.md
Run once before the timed demo so the app is warm and ready:
python3 src/run_data_pipeline.py
streamlit run dashboard/overview.py- 0:00-0:08 | Explain the problem
- "Youth transition programs often have fragmented data and limited visibility into who needs help first."
- "Future Path unifies data, scoring, and support recommendations in one workflow."
- 0:08-0:15 | Run pipeline
- In terminal, run:
python3 src/run_data_pipeline.py- Narration: "This generates synthetic records, cleans and validates data, loads SQLite tables, and computes matching outputs."
- If timing is tight, show the most recent successful pipeline terminal output from your prep run.
- 0:15-0:25 | Open dashboard
- In browser, show Overview at
http://localhost:8601. - Narration: "This dashboard gives operational visibility across youth outcomes and support activity."
- 0:25-0:33 | Show risk score
- Point to risk-level and risk-summary sections on Overview or Youth Dashboard.
- Narration: "Risk scoring is transparent and auditable, so teams can prioritize high-need youth."
- 0:33-0:50 | Complete AI Assistant intake
- Navigate to AI Assistant and answer the guided questions quickly.
- Narration: "The intake captures structured answers and converts them into actionable need signals."
- 0:50-1:00 | Show recommended resources
- Show generated recommendations with priority and contact details.
- Narration: "Recommendations combine risk context and intake responses, including phone/email/website for follow-through."
- Problem: fragmented data slows support decisions.
- Solution: reproducible pipeline + AI-guided intake + explainable recommendations.
- Reliability: validation checks, SQLite persistence, and automated tests.
- Outcome: faster, clearer, and more actionable youth support planning.
Use these existing assets in order:
- docs/screenshots/dashboard-overview.svg for architecture outcome, dashboard, and risk overview.
- docs/screenshots/ai-assistant.svg for intake workflow and recommendation handoff.
Optional: capture two additional backups before presenting:
docs/screenshots/risk-score-view.pngdocs/screenshots/recommended-resources-view.png
Future Path AI Assistant is a guided intake workflow that asks structured questions one at a time and stores responses for downstream recommendations.
- Starts an intake session for youth or candidate profiles
- Captures standardized answers (not free-form sensitive details)
- Tracks completion progress and top need category
- Triggers recommendation and assignment logic
- Shows end-of-intake summary with prioritized supports
- Uses synthetic/demo data in this project context
- Decision-support only, not a crisis intervention tool
- Includes emergency guidance if safety concerns are reported
- Encourages minimal sensitive data collection
Future Path now supports a candidate-first onboarding workflow so intake can happen before a full youth profile exists.
- Open the Caseworker Dashboard
- In Quick Actions, click Start Candidate Intake
- In AI Assistant, choose candidate profile type and complete the intake session
- Return to Caseworker Dashboard
- In Candidate Intake Promotion, select the completed candidate intake
- Fill in youth profile details (name, age, county, education, employment, housing, and related fields)
- Confirm or edit the suggested Youth ID
- Click Promote Candidate To Teen
What promotion does automatically:
- Creates a new row in
youth_profiles - Optionally writes first/last name into
caseworker_youth - Converts linked intake sessions from candidate to youth profile type
- Migrates candidate-linked assigned resources to the new youth ID
- Optionally assigns the new teen case to the active caseworker
- Overview dashboard: Candidates Waiting KPI and Candidate Queue panel
- Caseworker dashboard: Candidate Intake Promotion section
The test suite covers core logic across:
- Data cleaning and validation
- Risk scoring logic and persistence
- Recommendation generation and priorities
- AI intake response handling and summary logic
- Answer-to-need mapping and resource assignment inserts
Run targeted suites when needed:
pytest tests/test_data_pipeline.py -q
pytest tests/test_risk_scoring.py -q
pytest tests/test_recommendations.py -q
pytest tests/test_ai_intake.py -q
pytest tests/test_intake_resource_assignment.py -q-
Add one-click candidate ID generation in AI Assistant so caseworkers do not type IDs manually
-
Allow selecting a candidate directly from Overview and opening Caseworker promotion with that candidate preselected
-
Add a required-fields checklist and validation summary before final promotion submit
-
Add an audit trail table for promotion events (who promoted, when, and from which candidate ID)
-
Add optional duplicate checks (name + age + county) before creating a new youth profile
-
Add notification banner for newly promoted teens visible to caseworkers on login
-
Add role-based access and authentication for caseworker views
-
Introduce configurable scoring weights and explainability panels
-
Add trend dashboards (weekly/monthly deltas) for program outcomes
-
Support export workflows (PDF summaries, CSV action lists)
-
Add lightweight API layer for external integrations
-
Expand UI test coverage for Streamlit interaction flows
Future Path demonstrates practical capability in:
- End-to-end data engineering design
- Reproducible ETL and quality controls
- Applied analytics and recommendation systems
- Human-centered AI assistant workflow design
- Test-driven implementation and maintainability
It is designed to be reviewable as both a technical portfolio artifact and an instructional capstone-quality project.