A factory readiness + CapEx governance portfolio project: readiness gating, critical-path visibility, CapEx variance tracking, expedite burn analysis, and automated leadership-ready evidence packs generated in CI.
All data is synthetic/anonymized.
- Live demo (Streamlit): https://capexfactoryreadiness-3t3ngaxnz2fvjf8jqsxkvg.streamlit.app/
- CI workflow:
.github/workflows/capex_readiness_ci.yml - Evidence pack outputs:
docs/evidence/ - Templates + samples:
docs/templates/+docs/samples/
(Backup file for high-res viewing: docs/images/dashboard.pdf)
This portfolio project demonstrates how I run complex, cross-functional programs where execution discipline + decision-making across CapEx + facilities readiness + supply chain execution intersect. It translates fragmented operational data into a clear operating view—readiness status, critical path, variance drivers, and expedite risk—so teams can make faster, higher-quality decisions and leadership has consistent visibility.:
- Clear “what’s blocking install/power-on?” visibility
- Early identification of gate slip risk (open/blocked/high-risk work)
- CapEx variance + forecast drift surfaced by program / category / month
- Expedite burn tracking by vendor and driver
- Repeatable “evidence pack” outputs you can share with leadership
- What’s on the critical path right now (per program/tool)?
- What’s blocking install → power-on → commissioning → SAT?
- Where are we burning expedite, and which vendors drive it?
- Which gates are most likely to slip, and why?
- Where is CapEx trending vs plan/forecast (what’s driving variance)?
- CapEx plan vs actuals: (program × tool × category × month)
- Facility readiness tasks: (dependencies + gates + risk)
- Lead-time / expedite lines: (need-by vs promise vs received + expedite spend)
- Coverage: 5 programs, 50 tools, 6 categories, 6 vendors, 24 months
- Planned CapEx: $561.8M vs Actual: $569.3M → +$7.5M variance
- Expedite spend: $7.6M across 1,434 expedited lines
- Readiness spread: ~57.5% → ~87.0% across tools with multiple R/A flags
These numbers are computed from the synthetic CSVs checked into
data/raw/.
- Entry point:
app.py - Reads from:
data/raw/(synthetic CSVs)
src/analytics/readiness.py— readiness rollups + RAGsrc/analytics/critical_path.py— dependency-aware critical path per tool/programsrc/analytics/expedite.py— vendor burn summaries
Generated by:
python -m src.tooling.generate_evidence
Written to:
docs/evidence/
Outputs:
docs/evidence/readiness_score_output.mddocs/evidence/critical_path_output.mddocs/evidence/expedite_summary_output.mddocs/evidence/capex_variance_snapshot.mddocs/evidence/gate_slip_risk_output.md
- Python **3.11+**
python -m venv .venv
# Windows:
# .\.venv\Scripts\activate
# macOS/Linux:
# source .venv/bin/activate
pip install -r requirements.txtstreamlit run app.pypython -m src.tooling.generate_evidenceWorkflow file:
.github/workflows/capex_readiness_ci.yml
What it does:
- Installs dependencies
- Runs
python -m src.tooling.generate_evidence - Uploads
docs/evidence/**as a CI artifact
Raw inputs:
data/raw/capex_plan_vs_actuals.csvdata/raw/facility_readiness_tasks.csvdata/raw/lead_times_expedite.csv
Optional rollups (if you add them later):
data/processed/
Data dictionary:
docs/data_dictionary/
docs/templates/DECISION_LOG_TEMPLATE.mddocs/templates/RAID_LOG_TEMPLATE.mddocs/templates/WEEKLY_EXEC_UPDATE_TEMPLATE.md
docs/samples/DECISION_LOG_SAMPLE.mddocs/samples/RAID_LOG_SAMPLE.mddocs/samples/WEEKLY_EXEC_UPDATE_2026-01-02.md
docs/diagrams/system_view.md
data/
raw/ # synthetic/anonymized source data
processed/ # rollups used by charts
docs/
data_dictionary/ # column-level documentation
diagrams/ # system views
evidence/ # outputs
images/ # screenshots / preview PDF
samples/ # program artifacts
templates/ # program templates
src/
analytics/ # readiness, critical path, expedite summaries
tooling/ # evidence scripts
utils/ # IO helpers
app.py # Streamlit dashboard
.github/ # CI workflow
- Keep the logic, swap the data (never publish proprietary CapEx, vendor, or facility data)
- Replace identifiers with anonymized keys (Program A/B/C, Vendor 1/2/3)
- Prefer aggregated metrics over raw transactional exports
- Add scenario planning (forecast vs commit vs stretch)
- Add “gate readiness” go/no-go criteria checks per milestone
- Add a KPI page: OTD, lead time percentiles, expedite rate, variance aging
- Add tests for schema validation on input CSVs
See LICENSE.