Inspiration

Most companies launch products based on gut feeling, static spreadsheets, and linear forecasts. They do not simulate reality — they assume it.

We asked: what if you could run hundreds of futures before making a single decision?

RiskRoom was born from that question. We wanted to build a system that transforms uncertainty into quantified, actionable intelligence — before consequences happen in the real market.


What it does

RiskRoom is a multi-agent strategic simulation engine for product launch decisions.

You describe your product and company. RiskRoom runs:

  • 500 Monte Carlo simulations modeling price elasticity, competitive pressure, regulatory risk, supply chain fragility, and market volatility
  • **9 specialized AI agents and one Human Approval node for executive validation
  • Geographic risk analysis across 4 target zones: Los Angeles, San Francisco Bay Area, San Diego, and Las Vegas
  • Human-in-the-Loop executive decision — a human reviews the full dashboard and makes the final Approve or Reject call
  • Auto-generated PDF report with the full analysis, risk factors, metrics, and mitigation plan — downloaded instantly in the browser

The output is a PROCEED / REJECT / REVIEW recommendation backed by data, not assumptions.


How we built it

Full-stack architecture:

Layer Technology
Frontend React 18 + Recharts + D3 + TopoJSON
Backend Python 3.11 + FastAPI + Uvicorn
Simulation NumPy Monte Carlo (500 iterations)
AI Orchestration Airia (9 nodes: 9 AI agents )
LLM Claude Sonnet 4.6 + Claude Haiku 4.5
Web Search Brave MCP (real-time market data)
PDF jsPDF (browser-side, instant download)
Map D3 + US Atlas TopoJSON

The 9 Airia agents:

              [Entrada / Input]
                     |
           [Human Approval Node]        <- HITL: pauses for email decision
                     |
          [Data Ingestion Agent]        <- Haiku 4.5
                     |
          [Orchestrator Agent]          <- Sonnet 4.6
                     |
     +---------------+---------------+
[Market Intel]  [Competitor]  [Regulatory]  <- Haiku 4.5 x3, run in parallel
     +---------------+---------------+
                     |
          [Pricing Optimizer]           <- Haiku 4.5
                     |
            [Risk Analyst]              <- Sonnet 4.6
                     |
     [Multi-channel Output Agent]       <- Haiku 4.5
                     |
              [Salida / Output]

What each node does:

1. Human Approval Node — not an AI agent, but the HITL checkpoint. Airia pauses the pipeline and sends an email notification to the executive. The decision (approve or reject) triggers the rest of the flow. In our app, the user can also decide directly from the dashboard.

2. Data Ingestion Agent (Claude Haiku 4.5) — receives the raw product description, company context, and Monte Carlo results. Structures and cleans the input so downstream agents receive consistent, well-formatted data regardless of how the user described their product.

3. Orchestrator Agent (Claude Sonnet 4.6) — the central brain of the pipeline. Analyzes the structured input, defines the scope of the analysis, and coordinates the parallel intelligence agents. Uses Sonnet 4.6 for its superior reasoning when breaking down complex market scenarios.

4. Market Intelligence Agent (Claude Haiku 4.5) — runs real-time web searches via Brave MCP to retrieve current market size, growth trends, consumer demand signals, and industry dynamics for the target geography. Returns structured findings the Risk Analyst can reason about.

5. Competitor Adversary Agent (Claude Haiku 4.5) — searches for competitor products, pricing, market share, and recent moves. Simulates how incumbents might react to the new product entry — price cuts, marketing pushes, or feature releases — and quantifies the threat level.

6. Regulatory Risk Agent (Claude Haiku 4.5) — identifies the legal and compliance landscape: certifications required, regulatory bodies involved, estimated approval timelines, and compliance costs. Flags any hard blockers that could delay or prevent launch.

7. Pricing Optimizer Agent (Claude Haiku 4.5) — analyzes competitor pricing, consumer willingness to pay, and the product's cost structure to recommend an optimal price range. Considers elasticity from the Monte Carlo inputs to model volume impact at different price points.

8. Risk Analyst Agent (Claude Sonnet 4.6) — the synthesis engine. Combines outputs from all parallel agents plus the full Monte Carlo results (500 simulations, probability of success, VaR, expected ROI) to produce the final structured JSON: recommendation, metrics, risk factors, scenarios, geographic analysis, and mitigation actions.

9. Multi-channel Output Agent (Claude Haiku 4.5) — formats the Risk Analyst output into the final JSON structure expected by the dashboard. Ensures all fields are present, values are within expected ranges, and the response is clean for parsing.

The Monte Carlo engine runs locally in ~50ms before the Airia call, feeding real simulation data into the agent pipeline as context — so the agents reason about actual financial outcomes, not abstract inputs.

Core simulation formulas:

The probability of success across \( N = 500 \) simulations:

$$P(\text{success}) = \frac{1}{N} \sum_{i=1}^{N} \mathbf{1}[\text{ROI}_i > 0]$$

Expected ROI weighted across simulations:

$$\mathbb{E}[\text{ROI}] = \frac{1}{N} \sum_{i=1}^{N} \frac{R_i - C_i}{C_i}$$

Value at Risk at the 5th percentile:

$$\text{VaR}{5\%} = \text{Percentile}_5\left({\text{Profit}_i}{i=1}^{N}\right)$$

Where each simulation samples from:

$$\text{Units}_i = \text{MarketSize} \times \text{Penetration}_i \times \text{RegFactor}_i$$

$$\text{Penetration}i \sim \text{Beta}(2, 20) \times \left(1 - \mathcal{N}(\mu{\text{competition}}, \sigma)\right)$$


Challenges we ran into

Airia async behavior The biggest technical challenge was the Airia API. asyncOutput: false sometimes returns an executionId instead of the actual result when Human Approval nodes are present in the pipeline. We debugged SSE streams, polling endpoints (401 on status GET), and authentication headers (X-API-KEY vs Authorization: Bearer) across multiple API versions before landing on the correct architecture.

Human-in-the-Loop pipeline design Designing a HITL flow where the dashboard shows the full analysis before the human decision — while Airia's Human Approval node runs in parallel for email notification — required multiple pipeline restructuring iterations in Airia.

Real-time data into probabilistic models Feeding live competitor pricing and regulatory data from web search into the Monte Carlo parameters required careful prompt engineering in the Risk Analyst agent, so the agents produce structured JSON that maps directly to simulation variables.

PDF generation without a server We first tried ReportLab on the backend, then Google Drive via Airia. Both failed in different ways. We landed on jsPDF in the browser — faster, more reliable, and fully independent of any backend or external service.


Accomplishments that we're proud of

  • Built a working end-to-end pipeline: product description to 8 AI agents to 500 simulations to dashboard to human decision to PDF — in under 90 seconds
  • Real data, not mocked: Airia agents use live web search for market intelligence on every run
  • Geographic risk analysis with an interactive US map colored by Airia's zone-level risk scores across 4 target regions
  • Professional PDF reports generated in the browser with full analysis, risk factors, mitigation actions, and Monte Carlo metrics
  • Solved all Airia integration challenges (SSE parsing, pipeline design, async vs sync behavior) and shipped a working product under hackathon time constraints

What we learned

  • Orchestration is harder than modeling — getting 8 agents to coordinate correctly, return structured JSON, and handle edge cases took more effort than the Monte Carlo engine itself
  • asyncOutput: false is not always synchronous — Airia's behavior varies by pipeline configuration, and debugging this without clear documentation was the hardest part of the build
  • Humans need context before deciding — the HITL works best when the full dashboard is visible before the decision point, not after
  • Browser-side PDF beats server PDF — no backend dependency, no file storage, instant download, works fully offline

What's next for RiskRoom

  • Live deployment: Railway for backend, Vercel for frontend — making the platform accessible beyond local development
  • Historical comparison: compare the current simulation against past analyses to track decision quality over time
  • Slack and Teams integration: auto-post the HITL decision summary and PDF link to team channels on every approval or rejection
  • Expanded simulation variables: supply chain lead times, FX risk, seasonal demand curves, and channel-specific conversion rates
  • Enterprise features: multi-user workspaces, role-based HITL approvals, and a full audit trail of every simulation and decision
  • Fine-tuned models: train on company-specific historical launch data to increase recommendation accuracy over time

Built With

Share this project:

Updates