Inspiration

Quality investment research takes hours, costs thousands in subscription fees, and stays locked behind institutional walls. Retail investors and students are left with surface-level takes or expensive paywalls. We asked ourselves: what if a team of specialist research analysts could collaborate on any finance question, instantly and for free? That idea became FinSight Agent.

What it does

FinSight Agent turns a single investor question into a structured, analyst-grade research report in seconds. A Planner Agent analyzes the user's intent, identifies relevant companies, and selects the best-fit specialist agents from a pool of nine, covering fundamentals, risk, news sentiment, peer comparison, technical analysis, market context, wealth strategy, income strategy, and financial education. These specialists run in parallel on live market data, and a Report Agent synthesizes everything into a coherent report with a clear investment verdict. Users can view the results interactively in the browser or download a professionally formatted PDF.

How we built it

The backend is a FastAPI application powered by Amazon Nova on AWS Bedrock. We use a two-tier model strategy: Amazon Nova Pro handles planning and report synthesis where strong reasoning matters, and Amazon Nova Lite powers the specialist agents for fast, cost-efficient inference. Specialists self-register via a decorator-based agent registry, making it trivial to add new capabilities. All specialist agents execute concurrently using Python's ThreadPoolExecutor. Live market data comes from Yahoo Finance and DuckDuckGo News. The PDF pipeline uses ReportLab to render deterministic, professional reports without any additional model calls. The frontend is a React app with a live orchestration pipeline visualization so users can see exactly which agents are working in real time.

Challenges we ran into

The biggest challenge was making the Planner Agent reliable. LLMs don't always return clean JSON, so we built a layered fallback system: LLM-based planning, then heuristic keyword-based planning, then safe defaults. The Report Agent has the same resilience. If JSON parsing fails, a deterministic fallback assembles the report from raw agent outputs. We also invested heavily in input guardrails to catch prompt injection, out-of-scope queries, and requests for regulated financial advice before any LLM call runs, which required balancing safety with not rejecting legitimate edge-case questions.

Accomplishments that we're proud of

FinSight Agent handles real financial questions with live data and produces reports that look like they came from a professional research desk. The multi-agent orchestration is not simulated. Specialists genuinely run in parallel, each contributing a focused perspective that the supervisor synthesizes. The system gracefully degrades when any component fails: if one agent errors out, the rest still deliver. And the entire architecture is clean enough that judges can read the codebase and understand the design in minutes.

What we learned

We learned that the hard part of multi-agent systems is not making agents talk. It is making them fail gracefully and stay coordinated. Prompt engineering for structured JSON output required far more defensive parsing than we expected. We also learned that the two-tier model approach (stronger model for orchestration, lighter model for parallel work) is a powerful pattern for balancing quality with speed and cost on Amazon Bedrock.

What's next for FinSight Agent

Next steps include adding real-time streaming so users see agent outputs as they arrive, integrating Amazon Nova 2 Sonic for a voice-based research assistant experience, expanding the specialist pool with a macro-economic agent and a portfolio optimization agent, and adding user portfolios so FinSight can deliver personalized research tied to the user's actual holdings.

Built With

  • amazon-bedrock
  • amazon-nova-lite
  • amazon-nova-pro
  • duckduckgo-search-api
  • fastapi
  • pydantic
  • python
  • react
  • reportlab-(pdf-generation)
  • vite
  • yfinance
Share this project:

Updates