Inspiration

Most college students aren't bad with money; they can't see what's coming. Your balance says $600, but rent hits Friday and your phone bill the week after. Every budgeting app I've used shows where your money went. None of them show where it's going.

I wanted something that works like the GPS in your car: tell it where you want to go, and it tells you when you'll arrive, gives you one turn at a time, and reroutes when life happens. Sailors used to find their way home by following the North Star, so I called it Polaris.

What it does

Polaris is a GPS for your money.

  • Set a destination. Say or type a goal like "I want to save $1,000 by December 10th."
  • Check in with your bank. Polaris reads your Capital One accounts, bills, paydays, and spending through the Nessie API.
  • Get an ETA. It projects your balance forward day by day and tells you, for example, "At this pace you'll arrive Jan 6, 27 days late."
  • Follow the stars. Your plan is drawn as a route of stars. Every bill and payday is a star you can tap to see what's due, what's coming in, how much you'll have saved by then, and an image of your goal from Grok Imagine.
  • Get rerouted. Tell Polaris "I made $85 in tips tonight" and it deposits the money to your Capital One checking, draws a new, faster route, turns the old one gray and moves your ETA up 9 days.
  • Plan for money on the way. Say "My friend Sam is sending me $20 on October 15" and a new star appears on that date, in order along your route, with an updated ETA.
  • Catch surprises. New purchases in your account are detected automatically and trigger a reroute with small, specific moves to get back on track, like collecting the $25 a friend owes you.

How I built it

  • Frontend: Next.js and TypeScript, Tailwind CSS with shadcn/ui, Framer Motion for the route-drawing and reroute animations, and a hand-built SVG star map using d3-shape.
  • State and data: TanStack Query for server data and polling, Zustand for UI state, and Upstash Redis for goals and reported income.
  • Capital One Nessie API: Polaris reads accounts, bills, deposits, purchases and transfers to build the projection, and writes deposits, transfers and purchases back as the student's money changes. A seed script creates the demo student, Maya, with realistic accounts, bills, paychecks and spending.
  • Projection engine: A deterministic, day-by-day simulation of income, bills, and spending produces the ETA, the stars, and the suggested moves. Every number comes from my code, never from the AI, so the math is always explainable.
  • xAI Grok: Grok handles understanding messages that my local parser can't classify, Grok Voice handles spoken input, and Grok Imagine generates the inspirational goal images.
  • Cursor: I built Polaris in Cursor from the first scaffold to the last bug fix.
  • Testing: 140+ Vitest tests cover the projection math, message parsing, date handling, and route ordering.

Challenges I ran into

  • Time zones broke my stars. The server stores dates in UTC, so after 8 PM Eastern a deposit made "today" landed on tomorrow and vanished from the map. I moved all star dates to the user's local day.
  • Understanding real sentences. "Sam sent me $20", "Sam is sending me $20 on the 15th" and "Can Sam send me $20?" all mean different things. I built a parser that tells money already received apart from money on the way and from questions, and that understands dates like "10/15", "Oct 20, 2026", "the 12th" and "next Friday".
  • Keeping the AI honest. Language models are confident with numbers they made up. I made Grok responsible only for the words and kept every dollar amount and date in deterministic code.
  • The theme that ate my labels. Adding a UI component library silently overrode my color tokens and made half the text nearly invisible. Tracking it down taught me a lot about CSS cascade order.
  • Tiny tap targets. Hollow stars could only be tapped on their 2px outline. I added invisible hit areas so every star is easy to tap.
  • Building solo. Designing, building the backend and frontend, integrating three APIs, and testing everything alone in one weekend meant ruthless prioritizing: core route first, polish last.

Accomplishments that I'm proud of

  • A route that actually redraws itself when your money changes. Watching the old path fade to gray and a new gold path appear never gets old.
  • Real two-way integration with Capital One's Nessie API across five resources: accounts, bills, deposits, purchases, and transfers.
  • An ETA that is explainable: I can show exactly why you'll arrive on a given day.
  • Turning the hackathon theme, Navigation, into the core idea of the product rather than a label stuck on top.
  • Shipping a full-stack app with a real test suite, solo, in one weekend.

What I learned

  • Students don't need more charts about the past. They need one clear next step.
  • Use AI for language and use code for math. That split made Polaris both friendly and trustworthy.
  • Dates are hard: time zones, missing years, and "next Friday" all need careful handling.
  • Sketching the screens on paper first, then in a design tool, saved me hours of rebuilding UI.

What's next for Polaris

  • Multiple destinations at once, like a spring break fund and a laptop, each with its own constellation.
  • Real bank connections beyond the Nessie sandbox.
  • Proactive voice check-ins, like "Rent posts tomorrow, you're clear with $82 to spare."
  • Shared routes for roommates splitting rent and bills.
  • iMessage and SMS, so students can text Polaris "how am I doing?" without opening the app.

Built With

Share this project:

Updates

Submission history