Inspiration
Forgotten subscriptions silently drain bank accounts through auto-renewals — what economists call "phantom financial drains". We wanted a smarter tool that treats subscription management as an optimization problem, alerting users before money leaves their wallets.
What it does
Subscription Saver is a web dashboard that tracks, scores, and prunes recurring subscriptions using:
- Centralized Analytics — monthly/yearly spend breakdown by category
- Predictive Alerts — renewal and free-trial expiry notifications before charges hit
- Utility Scoring Engine — flags low-value subscriptions via:
$$U_i = \frac{W_i \cdot F_i}{C_i}$$
where \(W_i\) = priority weight, \(F_i\) = monthly usage frequency, and \(C_i\) = cost. If \(U_i < \theta\), the subscription is flagged for cancellation.
How we built it
Built on a modern full-stack ecosystem (GitHub):
- Next.js (App Router) + React for SSR and navigation
- PostgreSQL via Supabase + Drizzle ORM for type-safe database access
- Supabase Auth for secure user sessions
- Tailwind CSS + shadcn/ui for UI; Recharts for dynamic spending charts
Challenges we ran into
- Recurring interval math — handling weekly, monthly, quarterly, and annual billing across leap years, variable month lengths, and time zones
- Balancing \(W_i\) vs \(F_i\) — a domain name may have low \(F_i\) but high \(W_i\); tuning the formula to avoid penalizing rare-but-vital services required multiple iterations
- Ecosystem version alignment — modern framework changes caused type mismatches in charting libraries, resolved with custom wrapper interfaces
Accomplishments that we're proud of
- Zero-lag performance via fast server-side actions and efficient state handling
- Glanceable UI — complex date math distilled into instant status badges
- Actionable math — \(U_i\) turns abstract spend into a clear keep-or-cancel decision
What we learned
- Better server/client data partitioning for secure and responsive applications
- Stronger multitenant data handling to keep user records isolated
- A simple formula like \(U_i = \frac{W_i \cdot F_i}{C_i}\) can make digital spending decisions much clearer
What's next for Subscription Saver
- Open Banking Scan — auto-detect subscriptions from bank statements
- Overlap Detection — flag redundant services across similar categories
- Cost Splitter — split shared family or group subscription costs cleanly
Built With
- javascript
- locus
- ml
- next.js
- node.js
- typescript
Log in or sign up for Devpost to join the conversation.