Inspiration
Most investing apps tell you what you want to hear. Your portfolio is "diversified." Your losses are "temporary." Your single share of PNB Housing Finance is a "strategic position."
I wanted to build something that tells you what your financial advisor is too polite to say. The idea was simple: what if you could upload your portfolio screenshot and get roasted by a Ruthless VC, Gordon Ramsay, or a Broke Uncle -- with actual insights buried in the burns?
What it does
Torched is an AI-powered portfolio roaster. Upload a screenshot of your Groww, Zerodha, or any brokerage holdings and Claude vision reads your positions, calculates your damage, and delivers a personalised roast based on your chosen persona, vibe, and intensity level.
Key features:
- Screenshot upload -- Claude vision reads any portfolio screenshot globally
- 5 roaster personas -- Ruthless VC, Broke Uncle, SEBI Officer, Gordon Ramsay, Wall Street Bro
- Full conversation -- ask follow-up questions, argue back, get deeper analysis
- 8 languages -- get roasted in English, Hindi, Hinglish, Spanish, French, German, Japanese, Arabic
- Roast Card -- download a shareable verdict card with your portfolio score
- 3 themes -- Terminal, Premium, Brutalist
- Configurable -- response length, portfolio type, risk appetite, experience level, intensity slider
How I built it
Frontend: React + Vite + Tailwind CSS + Framer Motion. Three fully themed UI modes with an Aurora canvas background that adapts per theme. Claude-style chat interface with session management, copy buttons, and a downloadable Roast Card generated with html2canvas.
Backend: FastAPI on Python. Each request receives the full conversation history plus optional base64-encoded image, builds a dynamic system prompt from user settings, and calls Claude Sonnet via the Anthropic API. No data stored -- stateless by design.
Infrastructure: Vercel for the frontend, Railway for the backend. Novus.ai for analytics.
AI: Claude vision for reading portfolio screenshots, Claude text for the roast generation. The system prompt encodes persona, vibe, language, intensity, portfolio type, experience level, and response length into a single coherent character that maintains consistency across follow-up turns.
Challenges I ran into
Dynamic theming with Tailwind -- Tailwind purges dynamic class strings at build time. I had to safelist critical classes and eventually move to inline styles for the Roast Card so html2canvas could render it correctly regardless of theme.
Conversation state -- React state updates are async, so passing activeSession.messages directly to the API returned stale data on the first message. Fixed by snapshotting the message array before the state update and passing it directly.
Novus integration -- Novus requires a real deployed frontend with JavaScript execution to track events. Had to deploy early to verify the install PR was actually firing events before submission.
Context for follow-ups -- making "what should I sell first?" work after a roast required sending the full conversation history on every API call, not just the latest message.
Accomplishments that I'm proud of
- Built and deployed a full-stack AI product in under 10 days solo
- Claude vision accurately reads portfolio screenshots from multiple brokers globally -- Groww, Zerodha, Robinhood, and others
- The roast quality is genuinely funny and surprisingly insightful, especially at intensity 8+
- Three fully distinct visual themes with a single theme object driving every UI element
- Responsive on mobile with a slide-out sidebar drawer
What I learned
- Prompt engineering for persona consistency is harder than it looks -- early versions broke character on follow-ups or randomly added emojis despite instructions
- Shipping a real product for strangers is a different discipline from building a demo -- error handling, mobile layout, and loading states matter as much as the AI quality
- The judging criteria "can a stranger use it right now" is a surprisingly useful design constraint -- it forces you to cut complexity and nail the first 10 seconds
What's next for Torched: Roast My Portfolio
- Persistent sessions -- save conversation history with Supabase so users can return to past roasts
- Portfolio import -- direct broker API integrations for Zerodha Kite and Robinhood
- Roast sharing -- public roast links so users can share their verdict with friends
- Leaderboard -- most cooked portfolios of the week
- PDF reports -- full detailed analysis exported as a branded PDF
- Voice roasts -- text-to-speech so Gordon Ramsay can scream at your ELSS allocation

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