effiHR is an agentic HR performance intelligence project that combines dataset processing, multi-agent analysis, and a Streamlit dashboard.
The project workflow is:
- Build a unified HR dataset from source files.
- Run a CrewAI pipeline to generate performance bundles, insights, review drafts, and alerts.
- Explore results in an interactive dashboard.
- Multi-agent pipeline orchestration from
main.py - Tooling for HR data access, GitHub activity, and Slack notifications in
tools.py - Data unification script in
process_hr_data.py - Dashboard UI in
app.py - JSON artifacts written to
output/
app.py: Streamlit dashboardmain.py: Pipeline runnerconfig.py: Environment and runtime configurationtools.py: CrewAI tools (HRMS, GitHub, Slack, output persistence)process_hr_data.py: Buildsdata/unified_hr_data.jsonfrom files indataset/inspect_datasets.py: Quick dataset inspection helperdataset/: Source datasets (CSV/XLSX)data/: Unified data and optional raw copiesoutput/: Pipeline outputs and state files
- Python 3.11+
pip
- Create and activate a virtual environment:
python3 -m venv .venv
source .venv/bin/activate- Install dependencies (no lockfile/requirements file is currently committed):
pip install --upgrade pip
pip install crewai streamlit pandas plotly python-dotenv requests PyGithub openpyxl- Create a
.envfile in the project root:
NVIDIA_API_KEY=your_nvidia_api_key
GITHUB_TOKEN=
GITHUB_ORG=
SLACK_WEBHOOK_URL=Notes:
NVIDIA_API_KEYis required to run the main pipeline.GITHUB_TOKENandSLACK_WEBHOOK_URLare optional. If absent, the project falls back to mock GitHub data and skips Slack sends.
- Optional: inspect source datasets
python inspect_datasets.py- Build unified HR data
python process_hr_data.py- Run the pipeline
python main.py- Launch dashboard
streamlit run app.pyThe pipeline writes JSON artifacts to output/:
performance_bundles.json: Employee-level consolidated signalsinsight_reports.json: Scored analysis and trend insightsreview_drafts.json: AI-generated review drafts and rating rationalealerts.json: Alert objects for nudges, risks, and quality issuespipeline_state.json: Current/last run state metadatabenchmark_results.json: Benchmark timing snapshot (if produced in your run)
- Core settings live in
config.py. PIPELINE_MAX_EMPLOYEESlimits how many employees are processed in one run.- Performance score weights are validated to sum to 1.0.
- If you see
NVIDIA_API_KEY is not set, verify your.envfile exists and containsNVIDIA_API_KEY. - If dependencies fail to import, activate your virtual environment and reinstall the packages listed above.
- If output files look stale, rerun
python main.pyand refresh the dashboard.