Inspiration
As a new investor myself, I often wondered what influenced the movement of stocks, and wanted something that understood my portfolio. I set out to build something that combined real data with plain English coaching, so I created walletwise, a financial dashboard that walks you through your own holdings and answers your questions on the spot.
What it does
- Portfolio Upload & AI Q&A: Drag & drop a CSV of
symbol, sharesto instantly see total value, gain/loss, asset allocation and today’s top performers. You then receive an AI generated investor personality, a AI portfolio overview, and a Q&A chatbot which answers any financial question in the context of you portfolio - Single-Stock View: Click any ticker (or enter one manually) to view a 30-day price chart, key fundamentals, and AI breakdown of what is influencing the stock's weekly movement as well as risk highlights.
How I built it
- Next.js 13 + TypeScript with the App Router for clean server/client separation.
- Tailwind CSS for a Wealthsimple-inspired theme and responsive cards.
- yahoo-finance2 to fetch price, summaryDetail and key statistics, plus 1-month historical candles.
- Perplexity Sonar API via a small
askSonar()wrapper—JSON prompts, error handling, and parsing answers & citations. - Recharts to render the pie-chart and line chart, and custom React components for upload, loading/error states and the Q&A box.
Challenges I ran into
- JSON parsing errors: used system prompts with very specific formatting requirements so I can properly parse Sonar's answer.
- Malformed CSV rows (extra commas or missing values): handled by trimming, type-checking and showing clear error messages.
- Yahoo-finance rate-limit notices: suppressed the one-time survey prompt and added retry logic.
- Dynamic API routes in Next.js: learned to
await paramsproperly and separate server vs. client code.
Accomplishments I’m proud of
- Shipping a full end-to-end real-world app in under two weeks.
- Seamlessly integrating live market data with AI reasoning in a robust, type-safe codebase.
- Crafting a clean, intuitive UI that novice investors can pick up in seconds.
- Built something genuinely useful and intuitive that I would use myself
What I learned
- The ins and outs of Next.js Server Components vs. Client Components.
- How to design and consume REST-style API routes in TypeScript.
- Prompt engineering and parsing for a production-grade AI integration.
- Debugging hydration errors, rate limits, and CSV edge cases.
What’s next for WalletWise
- User accounts & persistence (Supabase): save multiple portfolios and share read-only links.
- Real-time alerts: notifications when holdings move beyond custom thresholds.
- Technical indicators: moving-average crossover or RSI flags alongside AI insights.
- Multi-turn conversations: let users follow up without losing context.
- Gathering user feedback, polishing UX, and opening the repo for community contributions.
Built With
- nextjs
- node.js
- react
- sonar
- typescript
- yahoo-finance


Log in or sign up for Devpost to join the conversation.