Got it—you want a Devpost project-page write-up, not an explanation for the judges. Here’s paste-ready copy that accurately describes the deployed project.
RiskRoom — Thesis Fracture Lab
About the project
Inspiration
Investors often hold several ETFs and assume they are diversified because they own different tickers. But those funds can contain many of the same companies. At the same time, an investment thesis can sound convincing without making clear what evidence would challenge it.
We built RiskRoom around a simple question: What would have to go wrong for this investment thesis to break—and how exposed is the portfolio if it does?
What it does
RiskRoom is an investment decision-support prototype that helps users examine a portfolio beneath its fund tickers and stress-test an investment thesis.
Users can:
- Explore estimated sector and company exposure beneath an illustrative ETF portfolio.
- Review three company-specific thesis signals based on Microsoft and NVIDIA data, with source labels and caveats.
- Apply a hypothetical sector decline and see its estimated portfolio impact.
- Work backward from a portfolio-loss limit to find the sector shock that could reach it.
- Compare a small library of predefined stress scenarios.
- Review historical risk measures, including volatility, drawdown, VaR, and CVaR.
- Read five rule-based committee perspectives: Bull, Bear, Macro, Risk Officer, and Red Team.
RiskRoom is for research and exploration. It does not provide buy or sell recommendations, execute trades, or guarantee outcomes.
How we built it
The frontend is built with Next.js, React, and TypeScript, with custom CSS for the interface. It is exported as a static site and hosted on Firebase Hosting.
The backend uses Python and FastAPI. It retrieves available data from Alpha Vantage and SEC EDGAR, performs the exposure and risk calculations in Python, and returns results to the frontend. Gemini supports selected backend language tasks, such as converting a scenario description into structured scenario data. It does not calculate the portfolio risk metrics. SQLite stores some committee and scenario run records.
The application distinguishes reported observations from illustrative portfolio weights and hypothetical stress assumptions. If a provider does not return usable data, some features use fallback data; users should check the source labels shown in the app.
Challenges we faced
One challenge was making fund overlap understandable. A portfolio can contain several ETF tickers while still depending heavily on a smaller set of underlying companies. We built a look-through view to make those exposures easier to examine.
Another challenge was keeping the numbers explainable. Stress results depend on assumptions, so we use explicit calculations and let users adjust shocks and loss limits. Generative AI is used for selected language tasks rather than for the core portfolio math.
We also had to make the app resilient to incomplete provider responses. Different data sources can be unavailable or return incomplete coverage, so the application needs to distinguish observed data from modeled or fallback content.
What we learned
We learned that a useful investment tool must explain where its numbers come from and what they do—and do not—mean. Historical risk measures describe a sample; scenario results depend on assumptions; and company metrics are only proxies for a broader thesis.
We also learned to keep financial calculations inspectable. AI can help interpret or structure language, but users should be able to trace quantitative results to the inputs and formulas behind them.
Limitations and next steps
The default portfolio is illustrative, and some holdings or market data may use fallback values when provider data is unavailable. The stress scenarios are hypothetical, not forecasts. The committee perspectives are rule-based rather than autonomous AI agents. RiskRoom is a prototype, not a brokerage or financial-advice service.
Next, we want to support user-entered portfolios, improve source and data-quality reporting, expand scenario customization, and connect persistent storage to the analysis workflow.
Built with
Next.js, React, TypeScript, Python, FastAPI, Alpha Vantage, SEC EDGAR, Google Gemini API, SQLite, Firebase Hosting, Render
Try it out
- Live app: https://riskroom-604c2.web.app
- Source code: https://github.com/nikhilpatil1104/RiskRoom
AI tools used
Google Gemini API. Gemini supports selected backend language tasks, including structuring user-described stress scenarios and generating hypothetical narrative prompts when live news is unavailable. Portfolio exposure, stress impacts, and historical risk metrics are calculated by application code.
Suggested tags
Finance, Investing, Risk Analysis, Portfolio Analysis, FinTech, React, Next.js, TypeScript, Python, FastAPI, Generative AI, Gemini, Firebase, Alpha Vantage, SEC EDGAR
Built With
- alpha-vantage
- fastapi
- firebase-hosting
- godaddy
- google-gemini-api
- next.js
- python
- react
- render
- sec-edgar
- snowflakeapi
- sqlite
- typescript

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