NGO Turnover Analysis Tool
Transforming employee data into actionable insights
Designed for HR managers who've never written code. Trying to make it as easy as, upload Excel → receive analysis. Developed with love from someone who had to do it.
The Problem
Let T denote the set of all employees and T₀ ⊂ T denote those who have terminated. The turnover rate r = |T₀| / |T| × 100 is easily calculated. For nonprofits, r ∈ [40%, 65%] is typical.
But this scalar obscures the temporal distribution. When do people leave? Why? At what cost C?
The Tool
An interactive dashboard that transforms employee data into case-based tenure analysis. Categorizes terminations ∀e ∈ T₀ by tenure t into six windows (0-3 months → 5+ years), visualizes department flows via Sankey diagrams, calculates true turnover costs (C ≈ 0.8S where S = salary), and flags at-risk employees.
Ah, something went wrong, let us read the manul
Designed for HR managers who've never written code. Upload Excel → receive analysis.
How to Use
Option 1: Web Version (Immediate)
→ Launch the tool in your browser
→ Upload your Excel file (or use sample data)
→ Explore the six analysis tabs
→ Export insights for board reports
Privacy note: Web version processes data on Streamlit's servers (ephemeral, deleted after session). For confidential HR data containing PII, use local installation. Data implications: Uploaded data is processed on external servers. Safe for anonymized or sample data. Not recommended for files containing employee names, salaries, or termination reasons unless you trust the infrastructure.
Option 2: Local Installation (Maximum Privacy)
For sensitive organizational data, run on your own computer.
What is Python? A programming language. The medium through which the tool executes. Think of it as the interpreter between your data and the analysis—the necessary substrate for computation. Python is to data analysis what LaTeX is to mathematical typesetting: a precise language that transforms symbolic instructions into realized output.
- Install Python:
- Navigate to python.org/downloads
- Download latest version (currently 3.12+)
- During installation: ☑ "Add Python to PATH" (critical)
- Complete installation
- Verify: Open terminal/command prompt, type
python --version
- Download the tool:
- Visit GitHub repository
- Click green "Code" button → Download ZIP
- Extract to known location (e.g., Desktop/turnover-analysis)
- Install dependencies:
- Open terminal/command prompt
- Navigate:
cd Desktop/turnover-analysis - Install:
pip install -r requirements.txt - Wait ~2 minutes for completion
- Run:
- Execute:
streamlit run app.py - Browser opens automatically at localhost:8501
- All data remains on your machine
- Execute:
For Board Reports
The use case: Quarterly board meetings require turnover metrics. Traditional approach: manual Excel pivot tables, static charts, scalar summaries. Insufficient for governance.
With this tool:
- Upload your HRIS export (employee_id, hire_date, termination_date, department, role, salary)
- Generate in Overview tab: current r, trends, department comparisons
- Analyze in Case Analysis tab: which tenure windows show highest attrition (Case 1-2 suggests onboarding issues; Case 3+ suggests retention failures)
- Calculate in Cost Analysis tab: total C, forecasted annual impact, ROI of retention initiatives
- Identify in Risk Assessment tab: employees flagged for intervention
- Export charts (hover → camera icon) and data tables (download buttons)
Board members respond to actionable insights, not raw numbers. "35% turnover" is data. "48% of counselor turnover occurs in months 3-12, costing $180K annually" is information. Presenting findings: Board decks should include: (1) Overall r with sector benchmark comparison, (2) Department-level breakdown identifying problem areas, (3) Case distribution showing when employees leave, (4) Total cost C with budget implications, (5) Recommendations grounded in patterns (e.g., "Invest in 6-month check-ins for Case 2 intervention").
Turnover is not failure. Turnover is information. The question is: what does it tell you?