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

Share this project:

Updates