Personal Finance Insights Platform
Full-stack engineer building a personal finance app with bank aggregation, spending alerts, and payment tracking using Plaid integration.
A fintech startup building personal finance management tools with bank account aggregation and intelligent spending insights
Project Overview
Built a personal finance management application that helps users understand and manage their spending through intelligent alerts and insights. The platform aggregates bank account data via Plaid and provides actionable notifications about large transactions, upcoming payments, and spending trends.
The Product
Spendfriend connects to users’ bank accounts and credit cards to provide:
- Spending Alerts: Notifications when large transactions occur
- Payment Tracking: Reminders for upcoming credit card payments
- Financial Insights: Analysis of spending patterns and trends
- Account Overview: Unified view of all connected accounts
Technical Architecture
Backend (Ruby on Rails)
RESTful API built on Rails 5.2 with comprehensive financial services:
- Database: PostgreSQL for transactional data
- Cache/Queue: Redis with Sidekiq for background jobs
- Authentication: Firebase Auth integration
- Bank Data: Plaid API for account aggregation
- Notifications: Twilio SMS and SendGrid email
- Security: Field-level encryption for sensitive data
- Scheduling: Whenever gem for cron job management
Frontend (React)
Modern React application with robust state management:
- State Management: Redux with Redux-Saga for side effects
- Data Normalization: Immutable.js with Normalizr and Reselect
- Styling: Tailwind CSS with styled-components
- Authentication: Firebase SDK
- Forms: Formik with Yup validation
- Bank Connection: react-plaid-link for account linking
Key Contributions
React Frontend Development
Built the React frontend with comprehensive state management (96 commits):
- Developed financial dashboard with Redux-Saga for complex async flows
- Implemented data normalization with Immutable.js, Normalizr, and Reselect
- Built responsive UI with Tailwind CSS and styled-components
- Integrated react-plaid-link for bank account linking flow
Rails Backend & Plaid Integration
Developed the Rails API with bank aggregation (68 commits):
- Integrated Plaid API for account aggregation and transaction data
- Implemented webhook processing for real-time transaction updates
- Built field-level encryption using attr_encrypted for sensitive financial data
- Set up Sidekiq background job processing for alerts and sync
Alerting & Insights Services
Built intelligent financial analysis services:
- Implemented large transaction detection (>$100 purchases)
- Created credit card payment due date tracking with 14-day advance warnings
- Built filtering logic to reduce noise from regular payment transactions
- Developed liability data fetching from Plaid for accurate due dates
Trends Analysis
Created comprehensive financial metrics tracking:
- Built income analysis for deposits to checking/savings
- Implemented spending analysis for credit card and account withdrawals
- Created account balance tracking and savings calculations over time
- Developed structured insights for dashboard display
Key Services
Alerts Service
Intelligent notification system detecting:
- Large transactions over $100
- Upcoming credit card payments (14-day advance warning)
- Filters out regular payment transactions to reduce noise
- Fetches liability data from Plaid for accurate due dates
Insights Service
Financial analysis providing:
- Historical analysis of large transactions (30-day window)
- Credit card due date warnings
- Transaction categorization
- Structured insights for dashboard display
Trends Service
Comprehensive financial metrics:
- Income analysis (deposits to checking/savings)
- Spending analysis (credit card and account withdrawals)
- Account balance tracking
- Savings calculations over time
Plaid Integration
Real-time bank data synchronization:
- Account connection and storage
- Transaction ingestion and updates
- Webhook processing for real-time updates
- Liability data extraction for credit accounts
Key Features
Account Aggregation
Connect and monitor multiple accounts:
- Checking and savings accounts
- Credit cards with balance and due date tracking
- Unified dashboard across all institutions
- Secure OAuth-based bank connections
Smart Alerting
Proactive notifications:
- Large purchase detection
- Payment due reminders
- Customizable alert thresholds
- Multi-channel delivery (SMS and email)
Financial Trends
Visualize financial health:
- Income vs. spending over time
- Savings rate tracking
- Credit utilization monitoring
- Historical comparison
Security
Bank-grade security measures:
- Firebase authentication with JWT validation
- Field-level encryption using attr_encrypted
- Secure Plaid token management
- No storage of bank credentials
Technologies Deep Dive
The technology choices balanced rapid development with financial security:
- Plaid provided bank-grade account aggregation without PCI compliance burden
- Firebase Auth enabled secure, scalable authentication with minimal setup
- Sidekiq handled background processing for alerts and notifications
- Redux-Saga managed complex async flows for financial data fetching
- attr_encrypted added field-level encryption for sensitive transaction data
Technologies
Key Highlights
- Built React frontend with Redux-Saga and Tailwind CSS for financial dashboard
- Developed Rails API with Plaid integration for bank account aggregation
- Implemented intelligent alerting for large transactions and upcoming payments
- Created trends analysis for income, spending, and savings tracking
- Integrated multi-channel notifications via Twilio SMS and SendGrid email