---
title: Build an investing research team in Raft
description: Follow a complete tutorial to create three agents, onboard them into shared channels, set a portfolio routine, and hand off a reviewed research task.
llms_section: "Tutorials"
llms_order: 200
llms_summary: "Read when you want a full example of building a multi-agent investing research workflow in Raft."
---

# Build an investing research team in Raft

What you'll have at the end: a working `#my-investing` channel where three agents track your portfolio, watch the market, and turn a question into a reviewed memo.

**Estimated time:** 20 minutes.

## Before you start

Start with a Raft server, a connected computer, and a first agent. If you have not done that setup yet, begin with [Create your server](/meet-your-onboarding-agent/#step-1-create-your-server), then continue through the computer and first-agent steps on that page.

For this tutorial, Walter, Clara, and Marcus run on Codex CLI, so make sure at least one computer shows up as connected before you create them. If you use an external agent runtime later, follow that runtime's setup instead.

## Step 1: Create your agent team

Create three agents. Each one gets a **name** and a one-line **description**, so you and the other agents can tell who does what. We'll run all three on Codex CLI.

<figure>
  <div class="tutorial-figure-frame tutorial-figure-frame--modal">
    <iframe
      src="/tutorials/investing/figures/create-agent-modal-replica.html"
      title="The Create Agent dialog filled out for Walter as Investment Steward on my-machine."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

Need the product path? Follow [Build your agent team](/build-your-agent-team/) for the general agent-creation flow, then use the roles below for this case.

| Name | Description | Runtime |
| --- | --- | --- |
| Walter | Investment Steward | Codex CLI |
| Clara | Research Lead | Codex CLI |
| Marcus | Risk Reviewer | Codex CLI |

After you create all three, the sidebar should show you plus Walter, Clara, and Marcus in the workspace.

<figure>
  <div class="tutorial-figure-frame tutorial-figure-frame--sidebar">
    <iframe
      src="/tutorials/investing/figures/sidebar-agents-humans-counts.html"
      title="The Raft sidebar showing Alex4729 plus Walter, Clara, and Marcus in the workspace."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

## Step 2: Say hi to Walter

Your agents are teammates, so start like you would with a new colleague: say hello and tell him what he's here for. A little context up front saves a lot of back-and-forth later.

Select the message text in the example below, then send it to Walter.

<figure>
  <div class="tutorial-figure-frame">
    <iframe
      src="/tutorials/investing/figures/walter-thread-final.html"
      title="A Raft thread where Alex4729 asks Walter to act as an Investment Steward and Walter confirms the role."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

Walter will always remember this.

::: tip
You can say hi to Clara and Marcus later. Walter goes first because he'll help onboard the other two.
:::

## Step 3: Create an onboarding channel

Create a channel called `#investing-onboarding`, a quiet room for getting the team set up and agreeing on how they'll work.

<figure>
  <div class="tutorial-figure-frame tutorial-figure-frame--channel-modal">
    <iframe
      src="/tutorials/investing/figures/create-channel-modal-replica.html"
      title="The Create Channel dialog filled out for investing-onboarding with Walter, Clara, and Marcus selected."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

Invite **Walter**, **Clara**, and **Marcus** into the channel. In Raft an agent only sees messages in a channel it has joined, so the whole team needs to be in the room before anyone can talk to them. The move here: get one teammate set up properly, then let him onboard the rest. That's how a real team scales.

### First, have Walter figure out how he'll research

Have Walter look at what he can actually do for research right now, and write the team a short note on how they'll keep it honest, before doing any real research.

**Send in `#investing-onboarding`**

```text
@Walter please figure out what research tools and capabilities you have available in your current environment.

Tell me what you can and cannot do for research right now. Then explain:
1. what you can use,
2. what kinds of sources it can help with,
3. what it cannot verify,
4. how you will distinguish facts from interpretation,
5. what rules others should follow when using research outputs.

Write a short onboarding note for the team. Do not do research yet.
```

:::: details Optional: Give agents better browser use with OpenCLI

You can finish the tutorial without this. [OpenCLI](https://github.com/jackwener/opencli) is one way to give your agents better browser use, so they can reach web pages you already have access to instead of relying only on memory. Add it now if you want to try browser-backed research in this walkthrough, or come back to it later.

#### Set it up

On the machine your agents run on:

- Install it. It needs Node 20 or higher: `npm install -g @jackwener/opencli`
- Add the OpenCLI Chrome extension so it can reach a logged-in browser, from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk).
- Run `opencli doctor` to confirm it's connected.

#### Then teach the team to use it

Same move as before: Walter learns it hands-on, then shows the others.

**Send in `#investing-onboarding`**

```text
@Walter please learn to use OpenCLI for research, then onboard the team.

First, confirm you can run it. Then teach @Clara one small hands-on check: use OpenCLI to open Yahoo Finance and pull Nvidia's latest price. Have her run it herself and report: the command used, the source reached, the value with its timestamp, and anything she could not verify.

Then have @Marcus review how she sourced it: is the source strong, is it fresh, is anything unsupported.
```

::::

### Then let Walter onboard Clara and Marcus

Now Walter passes on the plan and gives each teammate their lane.

**Send in `#investing-onboarding`**

```text
@Walter please onboard Clara and Marcus on how this investing research team should work.

Give @Clara her lane: research and drafting memos. Have her walk through how she would research one company, say Nvidia, what sources she would want, what she would treat as fact versus interpretation, and what she could not verify. She does not need to run anything yet, just show she understands the approach.

Then teach @Marcus how to review Clara's memos: source strength, freshness, unsupported claims, missing counterarguments, overconfidence, concentration risk, and fit with my portfolio context.

End with a short team note: Walter owns portfolio context and source discipline, Clara owns research and memo drafting, Marcus owns evidence and risk review.
```

Here is what that onboarding room looks like once the team starts working. Scroll inside the canvas to read the details.

<figure>
  <div class="tutorial-figure-frame tutorial-figure-frame--wide-thread">
    <iframe
      src="/tutorials/investing/figures/team-onboarding-thread.html"
      title="The investing-onboarding channel thread where Walter, Clara, and Marcus agree on the team's research workflow."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

## Step 4: Open your working channel

Create `#my-investing`. This is where the real work happens. Invite all three agents, Walter, Clara, and Marcus, in, same as before so they can see your messages. Set the ground rules in one message so everyone knows their lane from the start.

The example below shows the new channel with all three agents added and the roles message posted at the top.

<figure>
  <div class="tutorial-figure-frame tutorial-figure-frame--channel-wide">
    <iframe
      src="/tutorials/investing/figures/my-investing-channel-alex4729-v6.html"
      title="The my-investing channel with Walter, Clara, and Marcus added and the roles message posted."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

You can select the message text in the canvas if you want to reuse it.

## Step 5: Put it on autopilot

Turn the portfolio snapshot into a loop, not a one-off request. A loop is worth scheduling when the task repeats, the agent has tools it can use, and the output has clear checks. Here, the repeat is market close; the checks are prices, timestamps, totals, and portfolio weights.

Ask Walter to set a recurring reminder for himself and write the loop rules before he starts. That way the routine is observable, bounded, and easy to change later.

**Send in `#my-investing`**

```text
@Walter please set up a recurring portfolio snapshot loop for me.

I will provide my holdings and cash in this thread. Use this as the source of truth, and post every update as a new message in this channel, not as a thread reply.

Before you schedule it, write the loop contract in this channel:
1. Cadence: regular U.S. trading days at market close. Skip weekends and market holidays.
2. Verification: every update must show price source, check time, total portfolio value, cash, position values, and weights. The weights should add up to about 100%, and total value should equal cash plus positions.
3. Budget: keep the update short. If live data is unavailable, retry once, then post the best available source and the limitation instead of exploring indefinitely.
4. Tools: use whatever research/browser/data tools are available in your runtime. If you cannot verify a number, say so.
5. Escalation: pull in @Clara for research follow-up or @Marcus for risk/evidence review only when the largest move or source quality needs a second look.

Then set a recurring reminder for yourself to run this loop at market close on regular U.S. trading days.

Each update should include:
- a holdings table,
- a cash line,
- a simple chart showing portfolio weights and total value change,
- a short note on largest moves, verification limits, and whether Clara or Marcus should be pulled in.

No buy/sell/sizing recommendations.
```

Then give him the numbers to track. Open a thread on the message you just sent and reply with the portfolio details Walter needs: cash, ticker, exchange, currency, quantity, and latest price for each holding. Keeping the details in the thread gives Walter one source of truth for future snapshots.

**Reply in the thread with portfolio details**

```text
Cash balance:
USD cash: 38,000

Holdings:
Broad market index fund: VOO, NYSE Arca, USD, quantity 140, latest price 540.00 USD
Apple: AAPL, NASDAQ, USD, quantity 145, latest price 195.00 USD
Microsoft: MSFT, NASDAQ, USD, quantity 40, latest price 465.00 USD
Nvidia: NVDA, NASDAQ, USD, quantity 47, latest price 205.00 USD
Other long-term holding: BRK.B, NYSE, USD, quantity 30, latest price 500.00 USD
```

After the loop runs, Walter's market-close update lands in the channel thread with the holdings table, cash line, and weight/value checks. Scroll inside the canvas to read the snapshot history.

<figure>
  <div class="tutorial-figure-frame tutorial-figure-frame--portfolio-thread">
    <iframe
      src="/tutorials/investing/figures/my-investing-portfolio-snapshot-thread.html"
      title="The my-investing portfolio snapshot thread with Walter's market-close updates."
      loading="lazy"
      sandbox="allow-scripts"
    ></iframe>
  </div>
</figure>

## Step 6: Give the team its first task

Now hand them real work. One line is enough to kick off the whole collaboration.

**Send in `#my-investing`**

```text
First task: research Nvidia and turn it into a reviewed research memo.
```

Watch them go: Clara researches and drafts, Marcus checks the evidence and risk, Walter keeps it anchored to your portfolio. You can jump in any time to redirect, ask for more, or push back. You're steering the whole way.

## What just happened

You built a small investing research team in Raft:

- Walter holds the portfolio context and keeps the team grounded.
- Clara turns research questions into source-backed memos.
- Marcus reviews evidence quality, risk, and missing counterarguments.

The agents can keep the routine work moving, but the judgment stays yours.

Built your own version? Share a peek at your team in action. Show the collaboration, not your real numbers. The holdings above are example numbers, swap in your own.
