AI-powered financial literacy coach for the 1.4 billion unbanked adults in emerging markets
FinWise is a voice-first, multilingual Progressive Web App (PWA) that coaches users through essential financial concepts using AI. Built for emerging markets, it helps the unbanked population learn about banking, savings, loans, and protecting themselves from predatory lending.
1.4 billion adults globally lack access to formal banking systems. Without financial literacy:
- They fall prey to loan sharks charging 300%+ interest
- They can't safely save or build credit history
- They miss opportunities for microfinance and economic mobility
FinWise provides:
- AI Coach (Maya): Conversational learning powered by Claude AI
- Voice-First: Works for users with low literacy (Web Speech API + ElevenLabs TTS)
- 15 Languages: Localized for emerging markets (English, Hindi, Swahili, Yoruba, Bengali, and more)
- Offline-First: PWA architecture works without constant internet
- Practical Tools: Scam detector, loan calculator, institution finder
- Conversational learning with Maya, your financial coach
- Streaming responses using Claude Sonnet 4.6
- Context-aware guidance based on user profile
- Structured card responses (calculations, checklists, comparisons)
- 6 core modules: Banking Basics, Savings, Credit, Loans, Remittance, Scam Protection
- Interactive lessons with quizzes
- Progress tracking and achievement badges
- Adaptive content based on literacy level
- Dashboard: Track income, expenses, and savings goals
- Scam Detector: AI-powered analysis of suspicious loan offers
- Loan Calculator: APR calculation and fairness assessment
- Institution Finder: Verified microfinance institutions by region
- Remittance Comparison: Compare money transfer services
- Speech-to-text input (Web Speech API)
- Text-to-speech output (ElevenLabs multilingual)
- Works in 15 languages
- Install on mobile devices
- Offline-first with Service Worker
- IndexedDB sync queue for offline actions
- Responsive design with 44px tap targets
- Framework: Next.js 14 (App Router)
- Language: TypeScript (strict mode)
- Styling: Tailwind CSS
- State Management: Zustand + TanStack Query
- Internationalization: next-intl (15 languages)
- PWA: Custom Service Worker + Workbox
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth (Phone OTP)
- Row Level Security: Comprehensive RLS policies
- File Storage: Supabase Storage
- AI Model: Anthropic Claude (claude-sonnet-4-6)
- Speech-to-Text: Web Speech API
- Text-to-Speech: ElevenLabs (eleven_multilingual_v2)
- Unit Tests: Vitest + @testing-library/react
- E2E Tests: Playwright
- Linting: ESLint + TypeScript
- CI/CD: GitHub Actions
- Node.js 20+
- npm or yarn
- Supabase account (free tier)
- Anthropic API key
- ElevenLabs API key (optional, for TTS)
-
Clone the repository
git clone https://github.com/aaravjj2/finwise.git cd finwise -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Edit
.env.localwith your credentials:NEXT_PUBLIC_SUPABASE_URL: From Supabase DashboardNEXT_PUBLIC_SUPABASE_ANON_KEY: From Supabase DashboardANTHROPIC_API_KEY: From Anthropic ConsoleELEVENLABS_API_KEY: From ElevenLabs (optional)
-
Set up Supabase database
# Run migrations in your Supabase SQL editor # Copy contents from: # - supabase/migrations/001_initial_schema.sql # - supabase/migrations/002_rls_policies.sql # - supabase/seed/seed_modules.sql (seed data)
-
Run the development server
npm run dev
- Create a new project at supabase.com
- Go to SQL Editor
- Copy and run each migration file in order:
supabase/migrations/001_initial_schema.sqlsupabase/migrations/002_rls_policies.sqlsupabase/seed/seed_modules.sql
# Install Supabase CLI
npm install -g supabase
# Link to your project
supabase link --project-ref your-project-ref
# Run migrations
supabase db push
# Seed database
psql -h db.your-project.supabase.co -U postgres -d postgres -f supabase/seed/seed_modules.sqlfinwise/
โโโ app/ # Next.js App Router
โ โโโ [locale]/ # Internationalized routes
โ โ โโโ (auth)/ # Authentication pages
โ โ โโโ (dashboard)/ # Protected dashboard routes
โ โ โโโ layout.tsx # Locale layout with i18n
โ โโโ api/ # API routes
โ โ โโโ chat/ # Streaming chat endpoint
โ โ โโโ scam-analyze/ # AI scam detection
โ โ โโโ tts/ # Text-to-speech
โ โโโ globals.css # Global styles
โโโ components/ # React components
โ โโโ auth/ # Authentication UI
โ โโโ chat/ # Chat interface
โ โโโ dashboard/ # Dashboard widgets
โ โโโ layout/ # Layout components
โ โโโ learn/ # Learning modules
โ โโโ onboarding/ # Onboarding flow
โ โโโ resources/ # Resource cards
โโโ lib/ # Core libraries
โ โโโ ai/ # AI integration (Claude)
โ โโโ db/ # Supabase clients
โ โโโ voice/ # Voice (ElevenLabs)
โ โโโ offline/ # Offline sync queue
โ โโโ currency.ts # Currency utilities
โ โโโ loan-calculator.ts # Loan calculations
โโโ hooks/ # Custom React hooks
โโโ types/ # TypeScript types
โโโ messages/ # i18n translations
โโโ supabase/ # Database migrations
โ โโโ migrations/ # SQL migrations
โ โโโ seed/ # Seed data
โโโ tests/ # Test files
โ โโโ unit/ # Unit tests (Vitest)
โ โโโ e2e/ # E2E tests (Playwright)
โโโ public/ # Static assets
โ โโโ manifest.json # PWA manifest
โ โโโ sw.js # Service Worker
โโโ .github/ # GitHub config
โโโ workflows/ # CI/CD pipelines
# Run all unit tests
npm test
# Run with coverage
npm test -- --coverage
# Watch mode
npm test -- --watch# Install Playwright browsers
npx playwright install --with-deps
# Run E2E tests
npm run test:e2e
# Run with UI mode
npx playwright test --ui# ESLint
npm run lint
# TypeScript
npx tsc --noEmit
# Build verification
npm run buildCurrently supporting 5 languages (with 10 more in development):
- ๐ฌ๐ง English
- ๐ฎ๐ณ Hindi (เคนเคฟเคจเฅเคฆเฅ)
- ๐ฐ๐ช Swahili (Kiswahili)
- ๐ณ๐ฌ Yoruba (Yorรนbรก)
- ๐ง๐ฉ Bengali (เฆฌเฆพเฆเฆฒเฆพ)
Coming soon: Tagalog, Spanish, Portuguese, Hausa, Amharic, Zulu, Igbo, Tamil, Indonesian, Vietnamese
- โ Row Level Security (RLS) on all database tables
- โ Environment variables for secrets (never committed)
- โ Phone OTP authentication via Supabase
- โ HTTPS-only in production
- โ Content Security Policy headers
- โ API rate limiting (planned)
Please email security concerns to: [security email - TBD]
- โก First Load JS: ~87 kB
- ๐ฑ Lighthouse Score: 95+ (Performance, Accessibility, Best Practices, SEO)
- ๐ Offline-first: Full functionality without internet
- ๐ฏ Mobile-first: 44px+ tap targets for accessibility
- Click the button above
- Add environment variables
- Deploy!
# Build
npm run build
# Start production server
npm startSet these in your deployment platform:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYANTHROPIC_API_KEYELEVENLABS_API_KEY(optional)
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
npm test) - Commit with conventional commits (
git commit -m 'feat: add amazing feature') - Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - see LICENSE for details
This project targets 6 major hackathons:
- AI for Good: Claude + Next.js
- Supabase Launch Week: Database + Auth
- ElevenLabs Voice AI: Multilingual TTS
- Social Impact: Financial inclusion
- PWA Challenge: Offline-first
- Open Source: MIT licensed
- GitHub: @aaravjj2
- Project: github.com/aaravjj2/finwise
- Anthropic for Claude AI
- Supabase for backend infrastructure
- ElevenLabs for multilingual voice
- Vercel for hosting
- Next.js team for the amazing framework
Built with โค๏ธ for financial inclusion
Target Audience: 1.4 billion unbanked adults in emerging markets Mission: Democratize financial literacy through AI and voice technology