AI-Powered Institutional Memory for BC Nonprofits
When a coordinator leaves a nonprofit, their institutional knowledge leaves with them. Institutional Shadow captures that knowledge passively — from documents the org already produces — and makes it queryable through a plain-language chat interface.
Built for the SAP Hackathon: Strengthening BC's Nonprofit Workforce.
git clone <your-repo-url>
cd institutional-shadowpython3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windowspip install -r requirements.txtcp .env.example .env
# Edit .env — add your OpenAI API key at minimumpython verify_setup.pyAll checks should pass before proceeding.
python -m src.ingeststreamlit run app.pyOpens at http://localhost:8501
institutional-shadow/
├── app.py # Streamlit UI entry point
├── verify_setup.py # Pre-flight check script
├── requirements.txt
├── .env.example
├── src/
│ ├── __init__.py
│ ├── config.py # All configuration and prompts
│ ├── vectorstore.py # ChromaDB ↔ HANA factory
│ ├── ingest.py # Document ingestion pipeline
│ └── query.py # RAG chain + persona modes + cache
└── data/
└── seed/
├── emails/
├── meeting_notes/
├── grants/
└── handover_memos/
- Set
VECTOR_BACKEND=hanain.env - Fill in
HANA_HOST,HANA_PORT,HANA_USER,HANA_PASSWORD - Re-run
python -m src.ingestto populate HANA - Restart
streamlit run app.py
All seed documents use the format: YYYY-MM-DD_description.txt
The date prefix is extracted by the ingestion pipeline and used for knowledge-decay detection.