Inspiration
Over 60% of Americans live paycheck to paycheck, and banks generate over $12 billion annually in overdraft penalties. When we analyzed why people overdraft, we discovered a surprising truth: most overdrafts are not caused by chronic overspending, but by timing collisions.
A user might earn $2,500/month and spend $1,800/month—a healthy surplus on paper—yet still get hit with a $35 overdraft fee simply because an $1,100 rent check clears on a Thursday while their $1,200 paycheck doesn't land until Friday.
Traditional banking apps only display static, backward-looking balances. They force users to mentally balance pending debits, future payroll dates, and variable everyday expenses. We built Overcast to give everyday people proactive financial immunity: a predictive cash-flow digital twin that simulates thousands of future trajectories, diagnoses timing conflicts with game theory, and resolves cash crunches before they ever happen.
What it does
Overcast connects to live bank accounts and provides an end-to-end, 6-phase proactive financial workspace:
- Account & Account Intelligence: Ingests live checking, savings, and credit accounts via Plaid, performs an automated Subscription & Price Health Audit to detect price increases and subscription bloat, and tracks pending charges.
- Cash (Signal Decomposition): Decomposes raw transaction history into regular income rhythms (e.g., 14-day bi-weekly payroll) and scheduled fixed commitments, isolating unencumbered liquidity from pending holds.
- Forecast (30-Day Forward Trajectory): Projects daily continuous cash balances 30 days into the future. When a danger day is detected, it runs Shapley Game-Theoretic Attribution to prove exactly how much deficit is caused by bill-timing collisions (e.g., 28% Timing Collision) vs. baseline liquidity.
- Simulate (10,000-Path Monte Carlo & NLP AI): Runs a vectorized 10,000-scenario Monte Carlo stress test with P10, P50 (median), and P90 confidence intervals. Users can type natural language prompts into our Gemini Scenario Engine (e.g., "What if my car breaks down and costs $300 next week?") to test shocks in real time.
- Fix (2D Gradient Optimizer & Hardship Letter): Evaluates candidate interventions across timing adjustments, savings transfers, and spending trims to collapse overdraft risk from 100% down to 0%. It generates an automated Server-Locked Hardship Letter with cryptographically verified bank facts to negotiate bill extensions.
- Budget (Dynamic Reserve Waterfall): Dynamically allocates a safe weekly spending allowance ($27.13/week or $3.88/day) by first securing fixed bills and a volatility safety buffer.
How we built it
Overcast was built with a modern reactive full-stack architecture integrated with a high-performance Python analytics and machine learning engine:
Full Tech Stack
- Frontend: Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS, Framer Motion, Lucide Icons.
- Canvas Engine: Custom HTML5/Canvas rendering engine displaying real-time mathematical visualizations (Autocorrelation Spectrum, Superposition Waterline, Monte Carlo Fans, and Optimization Gradients).
- Backend & Storage: Python FastAPI, Uvicorn, Supabase (PostgreSQL with Row Level Security), Plaid API SDK, Jose (JWT auth).
- Machine Learning & Numerics: NumPy, Pandas, Scikit-Learn (
GradientBoostingClassifier, QuantileGradientBoostingRegressor), SciPy (Autocorrelation & Fast Fourier Transform). - AI & Language Modeling: Google Gemini 1.5 via structured JSON schema calling.
Machine Learning & Statistical Pipeline
- Two-Stage Hurdle Model for Asymmetric Discretionary Shocks:
- Occurrence Classifier: A
GradientBoostingClassifiermodels the daily binary probability of discretionary spend:P(Spend_t > 0 | X_t) = σ(F_clf(X_t)) - Quantile Regressors: Three
GradientBoostingRegressormodels trained on non-zero expenditures minimize the asymmetric pinball loss at quantiles α ∈ {0.10, 0.50, 0.90} to capture fat-tailed expense surges:L_α(y, ŷ) = max(α · (y - ŷ), (α - 1) · (y - ŷ))
- Occurrence Classifier: A
- Payday Distance Feature Engineering: Continuous cyclic temporal features tracking distance to the nearest payroll event to capture post-payday spending spikes:
d_pay(t) = min_k |t - t_pay,k| - Autocorrelation (ACF) Signal Decomposition: Extracts repeating payroll (14-day) and bill (30-day) periodicities from noisy transaction histories:
ρ(k) = Σ (x_t - x̄)(x_{t+k} - x̄) / Σ (x_t - x̄)² - Vectorized 10,000-Path Monte Carlo Simulation: Simulates N = 10,000 future cash trajectories with calibrated spending residuals and stochastic banking settlement shifts (±1 business day):
B_i(t) = B_0 + Σ [ Δ_deterministic(τ) + ε_i(τ) + δ_settle,i(τ) ] - Shapley Game-Theoretic Attribution: Evaluates all 2^N coalition subsets across bill timing, baseline liquidity, and variable spending to mathematically isolate marginal deficit drivers (e.g., 28% Timing Collision):
φ_i(v) = Σ_{S ⊆ N\{i\}} [ |S|!(|N| - |S| - 1)! / |N|! ] · [ v(S ∪ {i}) - v(S) ]
Challenges we ran into
- Banking Settlement Jitter & Pending Charge Reconciliation:
Banks frequently hold pending authorizations that reduce available balance while leaving posted balance untouched. We designed a clear reconciliation formula: Safe Balance = Bank Posted Balance − Pending Charges (
B_safe = B_posted - Gap_pending) and stochastically modeled settlement delays across simulated paths. - Preventing LLM Hallucinations in Financial Hardship Letters: Large Language Models tend to fabricate dollar amounts or settlement dates when drafting formal letters. We designed a Server-Locked Fact Architecture: exact account masks, bill amounts, and proposed due dates are computed and locked on the backend. The prompt injects these as immutable parameters, and output validators reject any draft that deviates from verified ground truth.
- Sub-100ms Monte Carlo Simulation at Scale: Running 10,000 multi-step stochastic simulations in Python can be slow if done in loops. We fully vectorized the simulation matrix using NumPy array broadcasting, reducing execution time from ~2.4 seconds to under 45 milliseconds.
Accomplishments that we're proud of
- Live Real-Time Engine Canvas: Built 5 custom canvas visualizations that visually narrate the internal math (Autocorrelation Spectrum, Multi-Stream Superposition, Monte Carlo Fans, and Optimization Surfaces).
- End-to-End Plaid & Sandbox Integration: Built a real-time data pipeline from OAuth bank linking to webhook synchronization and encrypted token persistence in Supabase.
- True Explainable AI: Instead of giving vague financial advice, Overcast gives users exact mathematical attribution (Shapley game theory) and actionable, fee-saving remedies.
What we learned
- Financial Behavior is Non-Gaussian: Everyday cash flow cannot be accurately modeled with standard bell curves; quantile regression and non-parametric conformal calibration are essential for capturing asymmetric real-world risk.
- Design is Critical for Financial Anxiety: Financial tools are often intimidating and overwhelming. Crafting a calm, editorial design system with step-by-step visual calculations helps users feel in control rather than anxious.
What's next for Overcast
- Automated Smart Buffer Sweeps: Automatically moving micro-buffers between connected checking and high-yield savings accounts based on the 30-day forecast.
- Direct B2B Creditor Integration: Sending the AI hardship negotiation requests directly to landlord and utility portals via automated billing APIs.
- Multi-Account Cross-Optimization: Optimizing credit card billing cycles and loan payoff dates across multiple bank accounts to completely eliminate cash flow crunches.
Built With
- fastapi
- gemini
- next.js
- numpy
- pandas
- plaid
- react
- scikit-learn
- supabase
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.