A hackathon demo app that helps users save money by analyzing bank transactions with AI and a Tinder-like swipe interface.
- 📤 Upload bank statement JSON files
- 🎯 Set multiple savings goals
- 🤖 AI-powered transaction analysis
- 👆 Swipe interface (left to save, right to keep)
- 🧠 Learning system that adapts to your preferences
- 💰 Real-time savings tracking toward goals
- Node.js 18+ or Bun
- OpenAI API key
- Install dependencies:
npm install
# or
bun install- Create a
.env.localfile in the root directory:
OPENAI_API_KEY=your_openai_api_key_here- Run the development server:
npm run dev
# or
bun dev-
Open http://localhost:3000 in your browser
-
Navigate to
/uploadto upload your bank statement and set goals
A sample bank statement JSON is available at public/demo-statement.json. You can use this for testing.
Your bank statement JSON should follow this format:
{
"transactions": [
{
"date": "2024-11-01",
"merchant": "Netflix",
"amount": 15.99,
"category": "Entertainment",
"description": "Monthly subscription"
}
]
}Or simply an array of transactions:
[
{
"date": "2024-11-01",
"merchant": "Netflix",
"amount": 15.99,
"category": "Entertainment",
"description": "Monthly subscription"
}
]- Upload: Upload your bank statement JSON file
- Goals: Set your savings goals (e.g., "Trip to Spain - $500")
- Analysis: AI analyzes your transactions and identifies savings opportunities
- Swipe: Swipe left (No) to cut expenses and save money, swipe right (Yes) to keep spending
- Learn: The system learns from your choices and prioritizes similar transactions
- Track: Watch your savings grow toward your goals in real-time
- Next.js 16 - React framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- Vercel AI SDK - AI integration with OpenAI
- React Hooks - State management
fin-flow/
├── app/
│ ├── api/analyze/ # AI analysis API route
│ ├── upload/ # Upload page
│ └── page.tsx # Main swipe interface
├── components/
│ ├── SwipeCard.tsx # Transaction card component
│ └── GoalTracker.tsx # Savings progress tracker
├── lib/
│ ├── ai-processor.ts # AI prompt building
│ ├── learning-engine.ts # Preference tracking
│ └── transaction-utils.ts # Transaction parsing
└── types/
└── index.ts # TypeScript types
The easiest way to deploy is using Vercel:
- Push your code to GitHub
- Import your repository on Vercel
- Add your
OPENAI_API_KEYas an environment variable - Deploy!
MIT