| Agent | Role | Tools |
|---|---|---|
| Committee Chair | Final decision-maker, capital allocator | none directly |
| Financial Analyst | Fundamental valuation, balance sheet, earnings | YFinanceTools |
| Market Analyst | Macro context, sector trends, breaking news | YFinanceTools, Exa MCP, optional ParallelTools |
| Technical Analyst | Price action, momentum indicators, entry/exit timing | YFinanceTools |
| Risk Officer | Downside scenarios, position sizing, mandate compliance | YFinanceTools |
| Knowledge Agent | Research RAG and memo archive navigation | FileTools (read-only) |
| Memo Writer | Synthesizes analyst inputs into formal memos | FileTools |
Why a team for this
The single-agent failure mode for investment analysis is bullish bias: one model talks itself into a thesis. A multi-agent committee structurally avoids this. The Risk Officer is required to argue against, the Technical Analyst is required to look at chart-level evidence, and the Chair has to weigh both. This is “agents as roles” rather than “agents as task fanout”. Each member has a distinct charter that the Chair must consider.Four team modes, one set of agents
The demo ships four distinct teams built from the same agent set. Each demonstrates a different multi-agent architecture:| Team | Mode | Right when | Try |
|---|---|---|---|
| Investment Coordinate | TeamMode.coordinate | Open-ended question that benefits from multi-analyst discussion | ”Should we invest $2M in NVIDIA?” |
| Investment Route | TeamMode.route | Single-specialist question that should land with exactly one agent | ”What’s AAPL’s P/E ratio?” (routes to Financial Analyst) |
| Investment Broadcast | TeamMode.broadcast | High-stakes decision where you want independent analyst opinions in parallel | ”Full committee review: evaluate Tesla for $2M.” |
| Investment Tasks | TeamMode.tasks | Multi-step task that needs decomposition and parallel work | ”Deploy $10M across the top 5 AI stocks, no position over 30%.” |
Three-layer knowledge
Every agent on the team draws from the same three-layer context:| Layer | What it holds | How it’s accessed |
|---|---|---|
| Static context | Fund mandate, risk policy, evaluation process | Injected into every agent’s system prompt |
| Research library | Company profiles, sector analyses | PgVector hybrid search (RAG) |
| Memo archive | Past investment memos and decisions | FileTools over the memos directory |
Shared learnings
Every agent writes to oneinvestment_learnings knowledge store with namespace="global":
- “Tech stocks with negative free cash flow get downgraded”
- “Avoid recommending positions during earnings week”
- “Risk Officer’s concerns weighted 1.5x for crypto exposure”
File output
The Memo Writer usesFileTools to produce a markdown memo per evaluation:
Mixing models
The demo runs every agent on the same default model (gpt-5.4 via OpenAIResponses). For real workloads, mixing models per role is a one-line change:
See it in action
Try one prompt against each team:teams/investment/. For a standalone version with Claude across the team and a deterministic 5-step pipeline workflow, see the investment-committee repo.