Skip to content

Commit 3593df7

Browse files
authored
Merge pull request #1 from agno-agi/refactor/project-name
refactor: change name to investment-team
2 parents 6a0248c + 8b867a2 commit 3593df7

24 files changed

Lines changed: 156 additions & 154 deletions

CLAUDE.md

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides context for Claude Code when working with this repository.
44

55
## Project Overview
66

7-
Agentic Investment Committee (AIC) — A multi-agent system built with Agno that simulates a professional investment committee deploying $10M into public equities. Demonstrates 5 multi-agent architectures, three-layer knowledge, and institutional learning.
7+
Agentic Investment Team — A multi-agent system built with Agno that simulates a professional investment team deploying $10M into public equities. Demonstrates 5 multi-agent architectures, three-layer knowledge, and institutional learning.
88

99
## Architecture
1010

@@ -17,7 +17,7 @@ AgentOS (app/main.py)
1717
│ ├── Risk Officer — downside scenarios, portfolio exposure (YFinance)
1818
│ ├── Knowledge Agent — research library (RAG) + memo archive (FileTools)
1919
│ ├── Memo Writer — synthesizes analysis into formal memos (FileTools)
20-
│ └── Committee Chair — final decisions, capital allocation (Opus 4.6)
20+
│ └── Committee Chair — final decisions, capital allocation (Gemini 3.1 Pro)
2121
2222
├── Teams (4 architectures)
2323
│ ├── Coordinate Team — Chair orchestrates analysts dynamically
@@ -37,14 +37,14 @@ AgentOS (app/main.py)
3737
```
3838

3939
All specialist agents use:
40-
- Claude Sonnet 4.6 model (`claude-sonnet-4-6`)
40+
- Gemini 3 Flash model (`gemini-3-flash-preview`)
4141
- PostgreSQL database (pgvector) for persistence
4242
- Committee context (Layer 1) in system prompt
4343
- Shared knowledge base (Layer 2) for RAG
4444
- Shared learnings (institutional learning)
4545

4646
Committee Chair and team leaders use:
47-
- Claude Opus 4.6 model (`claude-opus-4-6`)
47+
- Gemini 3.1 Pro model (`gemini-3.1-pro-preview`)
4848

4949
## Key Files
5050

@@ -60,7 +60,7 @@ Committee Chair and team leaders use:
6060
| `agents/risk_officer.py` | Risk Officer — YFinance |
6161
| `agents/knowledge_agent.py` | Knowledge Agent — RAG + FileTools |
6262
| `agents/memo_writer.py` | Memo Writer — FileTools (save) |
63-
| `agents/committee_chair.py` | Committee Chair — Opus 4.6, no tools |
63+
| `agents/committee_chair.py` | Committee Chair — Gemini 3.1 Pro, no tools |
6464
| `teams/coordinate_team.py` | Coordinate team (dynamic orchestration) |
6565
| `teams/route_team.py` | Route team (single dispatch) |
6666
| `teams/broadcast_team.py` | Broadcast team (parallel evaluation) |
@@ -98,17 +98,17 @@ All agents follow this structure:
9898

9999
```python
100100
from agno.agent import Agent
101-
from agno.models.anthropic import Claude
101+
from agno.models.google import Gemini
102102
from agno.learn import LearningMachine, LearnedKnowledgeConfig, LearningMode
103103

104104
from context import COMMITTEE_CONTEXT
105-
from agents.settings import committee_knowledge, committee_learnings
105+
from agents.settings import team_knowledge, team_learnings
106106
from db import get_postgres_db
107107

108108
agent_db = get_postgres_db()
109109

110110
instructions = f"""\
111-
You are the [Role] on a $10M investment committee.
111+
You are the [Role] on a $10M investment team.
112112
113113
## Committee Rules (ALWAYS FOLLOW)
114114
@@ -121,14 +121,14 @@ You are the [Role] on a $10M investment committee.
121121
my_agent = Agent(
122122
id="my-agent",
123123
name="My Agent",
124-
model=Claude(id="claude-sonnet-4-6"),
124+
model=Gemini(id="gemini-3-flash-preview"),
125125
db=agent_db,
126126
instructions=instructions,
127127
tools=[...],
128-
knowledge=committee_knowledge,
128+
knowledge=team_knowledge,
129129
search_knowledge=True,
130130
learning=LearningMachine(
131-
knowledge=committee_learnings,
131+
knowledge=team_learnings,
132132
learned_knowledge=LearnedKnowledgeConfig(
133133
mode=LearningMode.AGENTIC,
134134
namespace="global",
@@ -146,7 +146,7 @@ my_agent = Agent(
146146

147147
1. **Never duplicate knowledge instances** — always import from `agents.settings`
148148
2. **All instructions include `COMMITTEE_CONTEXT`** via f-string (Layer 1)
149-
3. **Opus for Chair/team leaders, Sonnet for specialists**
149+
3. **Gemini Pro for Chair/team leaders, Gemini Flash for specialists**
150150
4. **Memos = files (FileTools), Research = vectors (PgVector)** — never mix
151151
5. **`committee_chair` is NOT a member** of Coordinate/Broadcast/Task teams (the team `model=` acts as chair). It IS a member of Route team and the final Workflow step.
152152
6. **No learning config** on: Memo Writer, Committee Chair, Knowledge Agent, Route team
@@ -161,7 +161,7 @@ my_agent = Agent(
161161

162162
```python
163163
# Shared knowledge instances (import from agents.settings)
164-
from agents.settings import committee_knowledge, committee_learnings
164+
from agents.settings import team_knowledge, team_learnings
165165

166166
# Agent database (no contents_table needed)
167167
agent_db = get_postgres_db()
@@ -177,7 +177,7 @@ from db import db_url, get_postgres_db, create_knowledge
177177
from context import COMMITTEE_CONTEXT
178178

179179
# Shared settings
180-
from agents.settings import committee_knowledge, committee_learnings, MEMOS_DIR, EXA_MCP_URL
180+
from agents.settings import team_knowledge, team_learnings, MEMOS_DIR, EXA_MCP_URL
181181

182182
# Agents
183183
from agents import (
@@ -217,8 +217,7 @@ python -m app.load_knowledge --recreate # Drop and reload
217217
## Environment Variables
218218

219219
Required:
220-
- `ANTHROPIC_API_KEY` — for Claude models
221-
- `OPENAI_API_KEY` — for embeddings
220+
- `GOOGLE_API_KEY` — for Gemini models and embeddings
222221
- `EXA_API_KEY` — for Exa web search
223222

224223
Optional:
@@ -236,10 +235,10 @@ Optional:
236235
| What | Layer | Storage | Table/Location |
237236
|------|-------|---------|----------------|
238237
| Investment mandate, risk policy | Layer 1 | Filesystem → prompt | `context/*.md` |
239-
| Company research, sector analysis | Layer 2 | PgVector | `committee_knowledge` |
240-
| Research document contents | Layer 2 | PostgreSQL | `committee_knowledge_contents` |
238+
| Company research, sector analysis | Layer 2 | PgVector | `team_knowledge` |
239+
| Research document contents | Layer 2 | PostgreSQL | `team_knowledge_contents` |
241240
| Past investment memos | Layer 3 | Filesystem | `memos/*.md` |
242-
| Discovered patterns, corrections | Learning | PgVector | `committee_learnings` |
243-
| Learning contents | Learning | PostgreSQL | `committee_learnings_contents` |
241+
| Discovered patterns, corrections | Learning | PgVector | `team_learnings` |
242+
| Learning contents | Learning | PostgreSQL | `team_learnings_contents` |
244243
| Session history || PostgreSQL | Automatic (Agno) |
245244
| Agent memory || PostgreSQL | Automatic (Agno) |

README.md

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Agentic Investment Committee
1+
# Agentic Investment Team
22

3-
An AI investment committee built with [Agno](https://docs.agno.com) that demonstrates 5 multi-agent architectures working together to evaluate stocks, manage risk, and make portfolio decisions.
3+
An AI investment team built with [Agno](https://docs.agno.com) that demonstrates 5 multi-agent architectures working together to evaluate stocks, manage risk, and make portfolio decisions.
44

55
7 specialist agents collaborate through 4 team configurations and a deterministic workflow — all backed by a three-layer knowledge system and institutional learning.
66

@@ -15,7 +15,7 @@ AgentOS
1515
│ ├── Risk Officer ── YFinance + mandate enforcement
1616
│ ├── Knowledge Agent ── RAG search + memo file navigation
1717
│ ├── Memo Writer ── Writes investment memos to disk
18-
│ └── Committee Chair ── Final decision-maker (Opus 4.6)
18+
│ └── Committee Chair ── Final decision-maker (Gemini 3.1 Pro)
1919
2020
├── Teams (4)
2121
│ ├── Coordinate Team ── Dynamic multi-agent orchestration
@@ -40,13 +40,12 @@ AgentOS
4040
### 1. Clone and configure
4141

4242
```sh
43-
git clone https://github.com/agno-agi/investment-committee.git investment-committee
44-
cd investment-committee
43+
git clone https://github.com/agno-agi/investment-team.git investment-team
44+
cd investment-team
4545

4646
cp example.env .env
4747
# Edit .env and add your API keys
48-
# ANTHROPIC_API_KEY=sk-ant-***
49-
# OPENAI_API_KEY=sk-***
48+
# GOOGLE_API_KEY=***
5049
# EXA_API_KEY=*** # Optional -- Exa MCP is free (thank you!)
5150
```
5251

@@ -61,7 +60,7 @@ This starts PostgreSQL (with pgvector) and the API server.
6160
### 3. Load research into the knowledge base
6261

6362
```sh
64-
docker exec -it aic-api python -m app.load_knowledge
63+
docker exec -it investment-team-api python -m app.load_knowledge
6564
```
6665

6766
This loads company profiles and sector analyses into PgVector for RAG search. Only needs to run once — documents are skipped if they already exist.
@@ -110,13 +109,13 @@ What does our research say about semiconductors?
110109

111110
| Agent | Model | Tools | Purpose |
112111
|-------|-------|-------|---------|
113-
| Market Analyst | Claude Sonnet 4.6 | Exa MCP, YFinance | Macro environment, news, market conditions |
114-
| Financial Analyst | Claude Sonnet 4.6 | YFinance | Valuation, fundamentals, analyst estimates |
115-
| Technical Analyst | Claude Sonnet 4.6 | YFinance | Price action, indicators, support/resistance |
116-
| Risk Officer | Claude Sonnet 4.6 | YFinance | Position sizing, mandate compliance, risk limits |
117-
| Knowledge Agent | Claude Sonnet 4.6 | FileTools (read-only) | RAG over research library + memo file browsing |
118-
| Memo Writer | Claude Sonnet 4.6 | FileTools (read/write) | Drafts and saves standardized investment memos |
119-
| Committee Chair | Claude Opus 4.6 | None | Final BUY/HOLD/PASS decisions with conviction scores |
112+
| Market Analyst | Gemini 3 Flash | Exa MCP, YFinance | Macro environment, news, market conditions |
113+
| Financial Analyst | Gemini 3 Flash | YFinance | Valuation, fundamentals, analyst estimates |
114+
| Technical Analyst | Gemini 3 Flash | YFinance | Price action, indicators, support/resistance |
115+
| Risk Officer | Gemini 3 Flash | YFinance | Position sizing, mandate compliance, risk limits |
116+
| Knowledge Agent | Gemini 3 Flash | FileTools (read-only) | RAG over research library + memo file browsing |
117+
| Memo Writer | Gemini 3 Flash | FileTools (read/write) | Drafts and saves standardized investment memos |
118+
| Committee Chair | Gemini 3.1 Pro | None | Final BUY/HOLD/PASS decisions with conviction scores |
120119

121120
## Teams
122121

@@ -142,7 +141,7 @@ Each step's output feeds into the next, producing a complete investment memo wit
142141
## Project Structure
143142

144143
```
145-
investment-committee/
144+
investment-team/
146145
├── agents/ # 7 specialist agents
147146
│ ├── settings.py # Shared knowledge instances (import, never recreate)
148147
│ ├── market_analyst.py
@@ -200,12 +199,12 @@ railway run python -m app.load_knowledge
200199

201200
**View logs:**
202201
```sh
203-
railway logs --service investment-committee
202+
railway logs --service investment-team
204203
```
205204

206205
**Redeploy after changes:**
207206
```sh
208-
railway up --service investment-committee -d
207+
railway up --service investment-team -d
209208
```
210209

211210
**Open dashboard:**
@@ -224,7 +223,7 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
224223
source .venv/bin/activate
225224

226225
# Start PostgreSQL (required)
227-
docker compose up -d aic-db
226+
docker compose up -d investment-team-db
228227

229228
# Load research
230229
python -m app.load_knowledge
@@ -258,8 +257,7 @@ python -m app.load_knowledge --recreate # Drop and reload all
258257

259258
| Variable | Required | Default | Description |
260259
|----------|----------|---------|-------------|
261-
| `ANTHROPIC_API_KEY` | Yes || Claude models for all agents |
262-
| `OPENAI_API_KEY` | Yes || Embeddings (text-embedding-3-small) |
260+
| `GOOGLE_API_KEY` | Yes || Gemini models + embeddings |
263261
| `EXA_API_KEY` | Yes || Web search for Market Analyst |
264262
| `PARALLEL_API_KEY` | No || ParallelTools for Market Analyst |
265263
| `RUNTIME_ENV` | No | `prd` | Set to `dev` for auto-reload |

agents/committee_chair.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
---------------
44
55
Final decision-maker and capital allocator.
6-
Model: Opus 4.6. Tools: None.
6+
Model: Gemini 3.1 Pro. Tools: None.
77
"""
88

99
from agno.agent import Agent
1010
from agno.learn import LearnedKnowledgeConfig, LearningMachine, LearningMode
11-
from agno.models.anthropic import Claude
11+
from agno.models.google import Gemini
1212

13-
from agents.settings import committee_knowledge, committee_learnings
13+
from agents.settings import team_knowledge, team_learnings
1414
from context import COMMITTEE_CONTEXT
1515
from db import get_postgres_db
1616

1717
agent_db = get_postgres_db()
1818

1919
instructions = f"""\
20-
You are the Committee Chair of a $10M investment committee.
20+
You are the Committee Chair of a $10M investment team.
2121
2222
## Committee Rules (ALWAYS FOLLOW)
2323
@@ -56,13 +56,13 @@
5656
committee_chair = Agent(
5757
id="committee-chair",
5858
name="Committee Chair",
59-
model=Claude(id="claude-opus-4-6"),
59+
model=Gemini(id="gemini-3.1-pro-preview"),
6060
db=agent_db,
6161
instructions=instructions,
62-
knowledge=committee_knowledge,
62+
knowledge=team_knowledge,
6363
search_knowledge=True,
6464
learning=LearningMachine(
65-
knowledge=committee_learnings,
65+
knowledge=team_learnings,
6666
learned_knowledge=LearnedKnowledgeConfig(
6767
mode=LearningMode.AGENTIC,
6868
namespace="global",

agents/financial_analyst.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88

99
from agno.agent import Agent
1010
from agno.learn import LearnedKnowledgeConfig, LearningMachine, LearningMode
11-
from agno.models.anthropic import Claude
11+
from agno.models.google import Gemini
1212
from agno.tools.yfinance import YFinanceTools
1313

14-
from agents.settings import committee_knowledge, committee_learnings
14+
from agents.settings import team_knowledge, team_learnings
1515
from context import COMMITTEE_CONTEXT
1616
from db import get_postgres_db
1717

1818
agent_db = get_postgres_db()
1919

2020
instructions = f"""\
21-
You are the Financial Analyst on a $10M investment committee.
21+
You are the Financial Analyst on a $10M investment team.
2222
2323
## Committee Rules (ALWAYS FOLLOW)
2424
@@ -49,14 +49,14 @@
4949
financial_analyst = Agent(
5050
id="financial-analyst",
5151
name="Financial Analyst",
52-
model=Claude(id="claude-sonnet-4-6"),
52+
model=Gemini(id="gemini-3-flash-preview"),
5353
db=agent_db,
5454
instructions=instructions,
5555
tools=[YFinanceTools()],
56-
knowledge=committee_knowledge,
56+
knowledge=team_knowledge,
5757
search_knowledge=True,
5858
learning=LearningMachine(
59-
knowledge=committee_learnings,
59+
knowledge=team_learnings,
6060
learned_knowledge=LearnedKnowledgeConfig(
6161
mode=LearningMode.AGENTIC,
6262
namespace="global",

agents/knowledge_agent.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@
22
Knowledge Agent
33
---------------
44
5-
Committee librarian with two retrieval modes:
5+
Team librarian with two retrieval modes:
66
- Research Library (vector search / RAG) for company and sector research
77
- Memo Archive (file navigation) for past investment memos
88
"""
99

1010
from agno.agent import Agent
11-
from agno.models.anthropic import Claude
11+
from agno.models.google import Gemini
1212
from agno.tools.file import FileTools
1313

14-
from agents.settings import MEMOS_DIR, committee_knowledge
14+
from agents.settings import MEMOS_DIR, team_knowledge
1515
from context import COMMITTEE_CONTEXT
1616
from db import get_postgres_db
1717

1818
agent_db = get_postgres_db()
1919

2020
instructions = f"""\
21-
You are the Knowledge Agent on a $10M investment committee. You serve as the
22-
committee's librarian with two retrieval capabilities.
21+
You are the Knowledge Agent on a $10M investment team. You serve as the
22+
team's librarian with two retrieval capabilities.
2323
2424
## Committee Rules (ALWAYS FOLLOW)
2525
@@ -57,7 +57,7 @@
5757
knowledge_agent = Agent(
5858
id="knowledge-agent",
5959
name="Knowledge Agent",
60-
model=Claude(id="claude-sonnet-4-6"),
60+
model=Gemini(id="gemini-3-flash-preview"),
6161
db=agent_db,
6262
instructions=instructions,
6363
tools=[
@@ -70,7 +70,7 @@
7070
enable_delete_file=False,
7171
)
7272
],
73-
knowledge=committee_knowledge,
73+
knowledge=team_knowledge,
7474
search_knowledge=True,
7575
add_datetime_to_context=True,
7676
add_history_to_context=True,

0 commit comments

Comments
 (0)