I used to volunteer at a dog shelter. Every weekend I saw people give their time and energy for nothing in return. Retired folks walked dogs that were not theirs. Kids spent their weekends mopping floors and refilling food bowls. They did it because they loved. They did it because they cared. And all they got was a stamp in a sheet of paper and no recognition.
In my two eyes I saw that they felt invisible.
That broke me. Because belonging is not about showing up. It is about being seen. And the very people who carried the weight of community on their backs were being treated like they did not matter.
That is why we built Selvi.
Selvi is not just a system. It is a voice that says every hour matters, every smile matters, every act of service matters. It takes those invisible stamps on a sheet and turns them into stories, milestones, and recognition. It makes sure that the ten year old who shows up to help at an event feels celebrated. It makes sure that the seventy year old planting gardens in the heat feels honored. Selvi makes sure no one walks away unseen.
- Recognition: Milestones, badges, and stories from activity logs
- Insight: Dashboards for branches, projects, and trends
- Care: Surfaces fatigue signals and engagement patterns
- Guidance: AI assistant that recommends roles and next steps
A multi-app workspace combining analytics dashboards, data APIs, and an AI assistant.
/1 # Staff Intelligence Dashboard (React + Vite + Tailwind)
src/components # Charts, tabs, and UI modules (Recharts, Framer Motion)
src/hooks # Data ingestion (CSV/XLSX) + processing hooks
/2 # Volunteer Hours API + Milestones (FastAPI), and a simple tracker UI
app/main.py # CSV analytics & milestone endpoints
volunteer-tracker/ # Lightweight celebratory tracker UI (React)
/3 # Volunteer PathFinder AI Assistant (FastAPI + ML)
main.py # AI chat, matching engine, analytics endpoints
start.py # Bootstraps deps/env and runs the app
/common # Dev orchestrator and lightweight portal shell
package.json # Runs all UIs/APIs together with concurrently
scripts/run_2_api.sh # Starts service in /2 on port 8080
scripts/run_3_api.sh # Starts service in /3 on port 8000
- React 19 + Vite 7: Fast dev server and modern tooling
- Tailwind CSS 3: Utility-first styling for consistent, responsive UI
- Recharts 3: Interactive visualizations (trend lines, breakdowns)
- Framer Motion 12: Micro-interactions and motion for feedback
- Lucide Icons: Clean, accessible iconography
- CSV/XLSX ingestion:
papaparse,xlsx,react-dropzonefor local files
- Pandas: Cleansing, normalization, and aggregations
- Milestone engine: Hours-based awards computed server-side
- Storyworlds: Keyword-driven project/tag mapping for meaningful grouping
- Derived KPIs: Engagement rate, avg hours per volunteer, category/branch shares
- FastAPI + Uvicorn: Two services
- Service 2 (Hours + Milestones): CSV-driven insights and recognition
- Service 3 (PathFinder AI): AI chat, ML matching, analytics
- Pydantic v2: Typed models for crisp request/response contracts
- scikit-learn + sentence-transformers (Service 3): Matching and embeddings
- Supabase (optional): Storing preferences, matches, analytics (Service 3)
- Concurrently: Orchestrate all apps in one command
- Node + Python: Polyglot setup to meet each need with the right tool
- Mode: meta-llama/llama-3.2-11b-instruct/fp-16
- OpenAI-compatible API integration via https://api.inference.net/v1/chat/completions
- Dataset-grounded responses combining AI inference with volunteer data context
- Fallback system for graceful degradation when API is unavailable
1/dashboard ingests CSV/XLSX locally in-browser for instant analytics2/API provides normalized aggregates, achievements, and detail lookups3/AI assistant provides chat, matching, and analytics; integrates optional persistence
--
- VolunteerMatters integrations
- Real-time triggers via webhooks/API for immediate milestone awards
- Two-way sync for status, credentials, and onboarding steps
- Automated recognition
- Badges, emails, and YMCA perks automatically issued at thresholds
- Printable certificates and shareable links for resumes/LinkedIn
- Wellbeing & retention
- Burnout risk indicators from cadence/variance in hours
- Nudge engine for healthy workload distribution across branches
- Personalized journeys
- Preference modeling + narrative summaries of impact over time
- Cross-opportunity recognition so nothing is missed
- Org-wide scale
- Multi-branch and multi-association rollout (beyond Cincinnati)
- Role-based access control, SSO, and audit trails
- Data governance & quality
- Data contracts with VolunteerMatters exports
- Ingestion pipeline to normalize tags and fix inconsistencies
- Store secrets in environment variables; avoid committing API keys
- PII such as emails is processed for recognition and matching; protect datasets at rest
- Enable HTTPS and proper CORS in production environments
--
Selvi exists to celebrate the people who carry community on their backs — from the ten-year-old helping at an event to the seventy-year-old planting gardens in the summer heat.