-
-
Login - Secure Google SSO login with role-based access control and HIPAA-adjacent audit logging.
-
Welcome (Staff) — Staff view: Admin menu hidden, access restricted to client management only.
-
(Staff + Access Denied) — Real-time role enforcement: staff attempting to access admin pages is immediately blocked.
-
Welcome (Admin) — Admin view: full platform access including Security & Audit panel.
-
Clients (Admin) — Client management dashboard with multilingual filtering, pending follow-ups, and CSV export.
-
Client Profile — EHR-style client profile with document uploads, service history, and access logging.
-
Log Service + AI Follow-up — AI automatically detects follow-up actions from case notes and creates reminders.
-
Dashboard — Real-time operations dashboard with service trends and category breakdown.
-
Funder Report + AI Bot — One-click AI-generated quarterly funder report alongside the AI assistant answering client queries.
-
Calendar — Appointment scheduling with same-day and next-day reminder banners.
-
Photo Intake (Empty) — Photo-to-Intake: upload any paper form and AI extracts all fields instantly.
-
Spanish Form — Sample Spanish-language intake form used to demonstrate multilingual support.
-
Photo Intake (Result) — AI extracts and translates all fields from the Spanish form to English in seconds.
-
Admin (Alert) — Real-time anomaly detection: unusual access activity triggers immediate security alerts.
-
Admin (Configurable Fields) — Admins can add custom fields to client profiles without any code changes.
-
Welcome + AI Bot — AI Assistant answering natural language queries about client data in real time.
Inspiration
92% of nonprofits operate on budgets under $1M and rely on spreadsheets and paper forms. Enterprise solutions like Bonterra cost $50–150+/user/month — completely out of reach. We built SafeCase to solve this problem for 9+ OHack nonprofits including NMTSA, Chandler CARE Center, and ICM Food Bank, all of whom share the same core need: register clients, record services, and report outcomes.
What it does
SafeCase is a lightweight, AI-native case management platform for nonprofits:
- Photo-to-Intake: Snap a photo of a paper intake form — AI extracts all fields instantly in any language
- AI Follow-up Detection: Case notes automatically generate follow-up reminders so no client falls through the cracks
- AI Assistant Bot: Ask natural language questions like "Which clients have pending housing follow-ups?"
- Funder Report Generator: One-click quarterly narrative reports for grant applications
- Scheduling Calendar: Book and track client appointments with in-app reminders
- CSV Import/Export: Migrate from spreadsheets in seconds
- Audit Log: Real-time access monitoring with anomaly detection
- Document Uploads: Attach intake forms, waivers, and photos to client profiles
- Configurable Fields: Admins add custom fields without code changes
- Role-Based Access: Admin and Staff roles with full separation
- Mobile Responsive: Works seamlessly on phones and tablets for field workers
- Multilingual Support: Forms in any language are auto-translated to English on upload
How we built it
Frontend: Next.js 14 App Router with TypeScript, Tailwind CSS, and shadcn/ui components. Role-based layouts using Next.js middleware and client-side route guards.
Backend: Next.js API Routes handling all business logic — client CRUD, CSV import/export, AI orchestration, document uploads, and audit logging.
Database: Supabase (PostgreSQL) with 9 tables: clients, service_entries, follow_ups, appointments, audit_logs, alerts, user_roles, custom_field_definitions, custom_field_values. Row Level Security (RLS) for data protection.
Auth: Supabase Auth with Google SSO. Role assignment via user_roles table, enforced at both UI and API level using x-user-email headers.
AI: Anthropic Claude API powers all 4 AI features:
- Claude Vision (claude-sonnet) for Photo-to-Intake field extraction and multilingual translation
- Claude for AI Follow-up Detection from case notes
- Claude for AI Assistant Bot with real-time Supabase data context
- Claude for Funder Report narrative generation
Storage: Supabase Storage for client document uploads with signed URL access control.
Real-time: Supabase realtime subscriptions for live audit log updates and anomaly detection alerts.
Deployment: Vercel with environment variables for all API keys. CI/CD via GitHub push.
Challenges we ran into
- Vercel deployment returning 404 on all routes — resolved by changing the Framework Preset from "Other" to "Next.js" in Vercel's Build and Deployment settings
- Implementing real-time audit log with anomaly detection using Supabase realtime subscriptions
- Building Photo-to-Intake with Claude Vision that works across multiple languages and form layouts
- Designing a role-based access system that works both at the UI and API level
Accomplishments that we're proud of
- Full P0 + P1 + most P2 features shipped in 24 hours
- AI features that actually solve real nonprofit pain points — not AI for the sake of AI
- Clean, mobile-responsive UI that nonprofit staff can actually use without training
What we learned
- Claude Vision is remarkably good at extracting structured data from unstructured paper forms
- Supabase realtime makes building live dashboards surprisingly straightforward
- Nonprofit workflows are more nuanced than they appear — follow-ups and handoffs are where clients fall through the cracks
What's next for SafeCase
- Multi-tenant support for multiple nonprofits on one deployment
- Voice-to-case-notes using Web Speech API
- Semantic search across all case notes using pgvector
- Zapier integration for no-code workflow automation
Built With
- anthropic-claude-api
- next.js-14
- papa-parse
- postgresql
- recharts
- shadcn/ui
- supabase
- tailwind-css
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.