Inspiration

I wanted to build something practical that helps people understand their money quickly. Most bank statements are hard to read, and even when people see charts, they still don’t know what to do next. I wanted to turn financial data into simple actions.

What it does

PennyPilot lets users upload a bank statement and get:

  • automatic transaction parsing and categorization
  • spending charts and summary
  • AI spending insights
  • a strategy simulator to reduce spending by category
  • personalized goal planning (ex: save for a camera lens or a trip)
  • AI recommendations for how much to cut and what habits to improve

How we built it

Frontend: Next.js, React, TypeScript, Tailwind, Recharts Backend: FastAPI, SQLAlchemy, Python parsing pipeline AI: Gemini for insights and strategy coaching Auth/Security: Auth0 + owner-based data isolation in the backend Added tests for core planning logic and access control

Challenges we ran into

We ran into several auth and integration issues while building PennyPilot, including switching from Clerk to Auth0 mid-project, route and environment variable misconfigurations, repeated 401 errors on uploads, token/session mismatches between frontend and backend, missing backend dependencies like jose that blocked server startup, and frontend dev-server cache/build instability; we resolved these step by step by tightening the authentication flow, fixing environment setup, adding a local development fallback, and improving error handling across the stack.

Accomplishments that we're proud of

We’re proud that we built PennyPilot as a complete end-to-end product. We added personalized financial planning features, improved the simulator so users can adjust reductions across all categories dynamically, and added privacy/security protections so data is owner-scoped. Most importantly, we kept iterating through many bugs and integration issues until the app worked reliably.

What we learned

We learned that auth integration can take much longer than expected, especially when switching providers during development. We also learned that strong environment/config management is essential, and that small UX details like chart readability, labels, and layout have a big impact on user trust and usability. On the AI side, output quality depends heavily on prompt design, and on the backend side, testing access control early saves significant debugging time later.

What's next for PennyPilot

Next, we want to improve statement parsing to support more bank formats, make AI recommendations more personalized, and add progress tracking so users can monitor goal completion over time. We may add a gamified feature that will make users more likely to accomplish their goals. We also plan to harden production authentication by removing local development fallbacks, then deploy on stable infrastructure with stronger monitoring and observability.

Built With

Share this project:

Updates