Inspiration
Most financial apps are built for people who already have financial stability. But what about the gig worker who has no employer benefits? The immigrant family navigating an ER bill in a second language? The credit-invisible household that gets charged more for everything - from car insurance to payday loans - simply because the system doesn't see them?
We call this the poverty tax: the measurable premium low-income families pay for being poor. If a family earning $30,000/year pays ~18% of their income in avoidable fees, penalties, and uninsured losses, that's $5,400/year gone - not from bad decisions, but from a lack of information and a lack of a safety net.
SafeCircle was born from a simple observation: these families already have a safety net. It's called their circle - family, friends, neighbors. We just needed to make it visible, organized, and intelligent.
What We Built
SafeCircle is a community-powered financial protection app with two modes:
🛡️ Normal Mode - Before Crisis Hits
- Risk X-Ray: An AI-powered questionnaire that scans a member's financial blind spots - missing insurance, unclaimed benefits, gig work coverage gaps - and returns plain-English recommendations via Claude.
- Group Dashboard: A shared view of the circle's collective risk, showing where the group is exposed as a whole.
- Emergency Pool: A community fund members contribute to and vote on releasing during crises.
- Benefits Finder: Surfaces unclaimed federal and Arizona state benefits (SNAP, EITC, LIHEAP, WIC, CHIP) based on household data.
- Poverty Tax Meter: Calculates the hidden annual cost of being unbanked or underinsured.
🚨 Crisis Mode - When It Actually Hits
A Financial 911 that activates when a user selects a crisis type (car accident, job loss, ER visit, death in family, home damage). It outputs a color-coded, time-sequenced triage plan with hard deadlines - because when you're in crisis, you don't need advice, you need a checklist.
How We Built It
We split ownership cleanly across four domains:
| Owner | Domain |
|---|---|
| Vedant | Supabase schema, Auth, Realtime emergency pool |
| Abhinav | FastAPI backend, Claude AI integration |
| Sumedh | Risk engine, crisis triage logic, benefits eligibility |
| Keyur | Next.js frontend, UI/UX, i18n (EN/ES) |
The stack: Next.js 14 + TypeScript on the frontend, FastAPI (Python) on the backend, Supabase for auth, database, and realtime subscriptions, and the Anthropic Claude API as our AI layer. Everything was coordinated through a shared API contract defined on day one.
For the risk scoring, we modeled financial vulnerability as a weighted composite:
$$ R_{total} = \sum_{i=1}^{n} w_i \cdot r_i $$
where $w_i$ are category weights (income stability, insurance coverage, housing, emergency savings, debt load) and $r_i$ is the normalized risk score per category - producing a final group risk score between 0 and 100.
Claude was prompted with structured financial profile data and instructed to return specific, jargon-free, empathetic output - not generic financial advice. We iterated on the prompt multiple times to get results that actually read like a trusted advisor, not a chatbot.
Challenges
1. Prompting for empathy, not legalese. Getting Claude to produce output that a first-generation immigrant or gig worker would trust - not feel talked down to - required significant prompt engineering. Generic prompts returned generic advice. We had to be explicit about tone, user context, and output format.
2. Real-time coordination across four codebases. With strict folder ownership and no cross-editing, we lived and died by our API contract. Any schema mismatch between the Supabase layer and the FastAPI models caused cascading failures. We caught most of these through early integration testing.
3. Making crisis mode feel urgent, not overwhelming. The triage timeline needed to feel like a 911 operator - calm, clear, and sequenced. Too much information at once defeats the purpose. We stripped it down to color-coded priority tiers (🔴 Now → 🟠 24hrs → 🟡 Week → 🟢 Month) so users know exactly what to do first.
4. Serving users who are mobile-only. Our target users don't have laptops. Every screen had to work at 375px. This constrained every design decision - from the dashboard layout to the crisis selector buttons - and made us much more intentional about what actually matters in the UI.
What We Learned
- Financial vulnerability is a systems problem, not a behavior problem. The people SafeCircle serves aren't making bad decisions - they're operating in a system with no margin for error.
- AI is most powerful when it reduces cognitive load at the worst possible moment. Crisis Mode isn't impressive because it's AI - it's impressive because it tells you exactly what to do when you can't think straight.
- A clean API contract on day one is worth more than any individual feature.
Built With
- anthropic-claude-api
- axios
- cfpb-public-data
- des/ahcccs
- fastapi
- federal-poverty-level-guidelines
- github
- i18next
- lucide-react
- next.js-14
- pydantic
- python-3.11
- react-i18next
- recharts
- shadcn/ui
- stripe
- supabase-(postgresql-+-auth-+-realtime)
- supabase-js-sdk
- supabase-python-sdk
- tailwind-css
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.