Monthly Investor Update
Recipe for a founder's AI agent to draft and send a structured monthly investor update via the I'mBoard API — no manual drafting in the UI.
This recipe lets a founder's AI agent automate the monthly investor update: collect the period's KPI changes, highlights, lowlights, and asks, then draft and send a structured update through I'mBoard — without anyone drafting in the UI.
It mirrors the Board Financial Update pattern and is designed to run on a monthly cadence (cron on the 1st, or on demand before a board cycle).
Machine-readable source
The agent-consumable JSON is served at /api/recipe/investor-update/ and listed in /api/recipe-index/index.json. The YAML below is the source of truth.
Who it's for
- A founder's AI agent (Claude, ChatGPT, Cursor) running on the founder's machine, triggered monthly.
- Developers wiring a "every month 1st, pull metrics, draft, send" automation pipeline.
- Power users who would rather run the flow from a terminal than the UI.
If you prefer to draft and send updates by hand, use the in-product Investor Update flow at app.imboard.ai instead — this recipe is for automation, not a replacement for the UI.
Status
Create/send endpoints pending #1360
Steps 1–4 below call real, shipping I'mBoard endpoints. The final create + send step depends on the Investor Update API (app issue #1360), which is not yet live. Until it ships, the recipe instructs the agent to prepare the structured payload and hand it to a human to review and send via the UI — it must not call a fabricated endpoint.
The recipe
name: investor-update
title: Monthly Investor Update
version: "1.0"
description: >
Collect recent KPI changes, headline events, and asks; draft and send a
structured monthly investor update via imboard. Designed for a founder's AI
agent that runs on a monthly cadence — no manual drafting in the UI.
trigger:
schedule: "monthly"
description: "Run on the 1st of each month, or on-demand before a board cycle"
inputs:
- name: period
type: string
description: "Reporting period in YYYY-MM format"
required: true
- name: arr_current
type: number
description: "Annual recurring revenue for the current period (USD)"
required: true
- name: arr_previous
type: number
description: "ARR for the prior period (USD) — used to compute the delta"
required: true
- name: cash_balance
type: number
description: "Current cash balance (USD)"
required: true
- name: runway_months
type: number
description: "Estimated runway in months"
required: true
- name: highlights
type: string[]
description: "3-5 bullet points of what's working this period"
required: true
- name: lowlights
type: string[]
description: "Challenges and misses this period"
required: true
- name: asks
type: string[]
description: "Specific asks for investors (intros, hiring, advice)"
required: false
- name: board_id
type: string
description: "Target imboard board ID — falls back to the user's primary board if omitted"
required: false
- name: recipients
type: object[]
description: "[{ name, email }] of investors — fetched from imboard if omitted"
required: false
steps:
- step: 1
action: "Collect KPI changes, highlights, and asks"
- step: 2
action: "Authenticate with imboard API"
api_call: "GET /api/v1/me"
- step: 3
action: "Resolve the target board"
api_call: "GET /api/v1/boards"
- step: 4
action: "Pull last period's metrics for delta context"
api_call: "GET /api/v1/boards/{board_id}/reports/{report_id}/dashboards?dashboardType=financial"
- step: 5
action: "Draft and send the investor update"
note: >
Blocked by #1360 — the investor-updates create/send endpoints do not exist
yet. Prepare the payload and notify the human until the API ships.The full recipe — including sources and the output schema — is available as JSON.
API calls used
| Step | Method & path | Status |
|---|---|---|
| Authenticate | GET /api/v1/me | ✅ Live |
| Resolve board | GET /api/v1/boards | ✅ Live |
| Delta context | GET /api/v1/boards/{board_id}/reports/{report_id}/dashboards | ✅ Live |
| Create + send update | POST /api/v1/boards/{board_id}/investor-updates (+ /send) | ⏳ Pending [#1360] |
All authenticated calls use a personal access token (imb_pat_...) — never embed real tokens in a recipe; reference an environment variable. See Authentication.
Example agent prompt
You are my investor-update agent. It's the 1st of the month.
1. Read the I'mBoard recipe at https://docs.imboard.ai/api/recipe/investor-update/.
2. Pull this period's metrics from my finance sheet:
- period: 2026-06
- arr_current, arr_previous, cash_balance, runway_months
- 3-5 highlights, the lowlights, and any investor asks
3. Authenticate with $IMBOARD_PAT (GET /api/v1/me), resolve my board
(GET /api/v1/boards), and pull last month's financial dashboard for context.
4. Compute the ARR delta and draft the update following the recipe's output schema.
5. The create/send endpoints are not live yet (#1360) — so output the finished
draft and the recipient list for me to review and send from app.imboard.ai.Related
- Recipes overview
- Authentication — issuing a personal access token
- In-product Investor Update flow at app.imboard.ai (for users who prefer the UI)