Inspiration
Most people pay for far more subscriptions than they can name. Prices creep up, free trials quietly convert, and renewals show up on a bank statement before anyone notices. We wanted one place that shows what you really pay, warns you before it happens, and tells you what deserves a second look. [Add one personal line here: a charge you forgot, a trial that renewed, a price hike you missed.]
What it does
Subwise is an AI subscription intelligence platform.
- Import instead of typing. Upload a CSV statement or a receipt, and AI extracts the merchant, amount, currency and billing cycle. You review every item and confirm. Nothing the AI finds is saved without your approval.
- See the full picture. Monthly and yearly commitments, spend by category, and upcoming renewals. Totals are kept per currency, never added across currencies.
- Catch price hikes. Every price change is recorded as history, so Subwise can show what increased and what it costs per year.
- Ask your data. The AI analyst answers questions like "what should I review?" from your saved records, not from guesses.
- Subwise Plus. An optional paid plan through PayPal Sandbox. The backend creates and captures the order, and webhooks keep payment status in sync and activate the plan.
How we built it
- Backend: Python, FastAPI, SQLAlchemy and PostgreSQL, with a 28-table schema built around subscriptions, price history, imports and entitlements.
- Auth: bcrypt passwords, short-lived JWT access tokens, rotating refresh tokens with replay detection, account lockout and rate limiting.
- AI: model output is validated against strict schemas before it touches the database. The AI can only propose changes. A person approves them.
- PayPal: the server decides the price, verifies the capture with PayPal, and ignores repeated webhook deliveries, so a plan can't be activated twice.
- Testing: automated tests cover authentication, data isolation between users, price history and payment edge cases.
Challenges we ran into
- Deciding how far to trust AI. Our answer was to treat its output as a suggestion that a person confirms.
- Money across currencies. Adding USD, NGN and GBP into one number would be wrong, so we show totals per currency.
- Payments done safely: idempotent orders, verified captures and refunds that revoke access.
- Building a full product in a short window.
What we learned
Designing the data model first made every later feature easier. Treating AI as an analyst rather than a decision-maker makes the product more trustworthy.
What's next
Bank-statement connections, exchange-rate conversion, email reminders, and links to cancel each merchant. We deliberately don't cancel subscriptions for users, because Subwise tracks and advises and the user stays in control.
Built With
- alembic
- bcrypt
- fastapi
- jwt
- postgresql
- python
- sqlalchemy