Skip to content
← Processes

Draft the monthly investor update

Revenue, pipeline, the plan's own targets, and last month's commitments are pulled together into a draft with the numbers already in it.

Stripe→HubSpot→Google Sheets→Gmail
Starts
Monthly schedule
Steps
5
Checks and gates
0
A person decides
Never, runs alone

Trigger · Schedule

Monthly schedule

The run starts on the first working day of the month, once the previous month has closed in every system it reads.

Claude runs the rest autonomously

  1. 1

    AI adds up revenue actually collected.

    Stripe

    Stripe

    The closed month's new, lost and net recurring revenue comes from what was collected, with cancellations, downgrades and one-off revenue kept apart.

  2. 2

    AI sizes the pipeline, flags big deals.

    HubSpot

    HubSpot

    Deals opened, won, lost and still open by stage are counted, and any single deal large enough to move the total alone is called out.

  3. 3

    AI measures the gap to plan.

    Google Sheets

    Google Sheets

    Each of this month's targets sits beside its actual, in absolute and percentage terms, stated without editorialising.

  4. 4

    AI reports on last month's promises.

    Gmail

    Gmail

    Every commitment in the previous update is listed with what happened to it, taken from the sent email rather than from memory.

  5. 5

    AI drafts a fully sourced update.

    The draft comes in a set order, every figure carries its source, and anything unavailable shows as an explicit gap, never an estimate.

The monthly investor update takes two hours and about ten minutes of those are writing. The rest is opening the payments dashboard, exporting the pipeline, finding the plan spreadsheet, working out the variance, and scrolling back through sent mail trying to remember what was promised last time. It slips a week, then two, and the update that eventually goes out is thinner than the one intended.

Every input is already a system of record with an API. The numbers exist, the plan exists, and last month's promises are sitting in a sent email. Assembly is the whole cost, and assembly is not the part that needs a founder, which makes it the part of an investor update worth automating.

What you get

A monthly draft with every figure already filled in and sourced, the variance against plan calculated, and last month's promises listed with what happened to each.

What goes into the monthly investor update

The run starts on the first working day of the month, once the previous month has closed in every system it reads. It pulls from four places.

  • Revenue actually collected, from Stripe: new recurring revenue, recurring revenue lost (split into cancellations and downgrades, because they are different problems), the net movement and the closing figure. One-off revenue stays separate, since folding it into recurring overstates the thing investors track most closely. The currency and the exact date range are stated.
  • Pipeline, from HubSpot: deals opened, won and lost, open pipeline by stage, and the movement in the total. Any single deal large enough to move that total on its own is called out, so a pipeline jump that is really one deal reads as one deal.
  • The plan, from the month's targets in Google Sheets. Each target sits beside its actual, in absolute and percentage terms. A target missing from the plan is reported as missing, never inferred from the previous month.
  • Last month's promises, from the previous update in Gmail's sent mail: every hire, launch, target or milestone it committed to.

The draft then follows a fixed order: headline numbers, variance against plan, last month's commitments and their status, pipeline, then asks.

Why revenue comes from the payments system

Revenue comes from the payments system and only from the payments system. The CRM knows what was sold, which is a different number from what was collected. Failed payments, prorations, mid-month downgrades and refunds all live in the gap. Investors compare this figure month on month, so a source that quietly drifts from cash is the one error here that compounds instead of being corrected next time.

Variance against plan, stated without spin

Each variance is stated as a number. Where a cause is visible in the data, it gets one clause and no more: "Revenue 12% under plan; two enterprise renewals slipped into the following month" gives an investor something to work with, while "slightly behind but momentum is strong" gives them nothing to check. The draft puts no adjectives on its figures. The recipient can decide whether 12% is good.

Keeping an investor update honest month after month

Last month's commitments are regenerated from the previous email, which is what keeps an update honest over a year. For each one, the draft says what actually happened: done, slipped with a new date, or dropped with a reason. That section is the first to go missing in a bad month, not through dishonesty but because memory retrieves the promises that were kept. Reading them off the sent message means the list is the same list whether the month went well or badly.

Leaving explicit gaps instead of estimates matters more here than almost anywhere else. A missing figure is a visible prompt to go and find it. An estimated figure is indistinguishable from a real one on the page, and it becomes the baseline the next month is compared against, which is how a small convenience turns into a number nobody can reconcile two quarters later.

The result stays a draft, with every figure carrying its source and date range. The qualitative half, what the numbers mean and what comes next, is the part a founder should be writing, and it is left to them.

The prompt

The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.

# Draft the monthly investor update

You have access to a payments system, a CRM, a spreadsheet, and email.
Run this on **[the first working day of the month]**.


## 1. Add up revenue actually collected

From the payments system, for the closed month:

- New recurring revenue started.
- Recurring revenue lost, split into cancellations and downgrades,
  because they are different problems.
- Net movement, and the closing recurring revenue figure.
- One-off revenue separately. Folding it into recurring overstates the
  thing investors track most closely.

Use the payments system for revenue and never the CRM. A CRM records
what was sold; a payments system records what was collected, and the
gap between them is exactly the sort of thing an update should not be
wrong about.

State the currency and the exact date range used.

## 2. Size the pipeline, flag big deals

For the same period: deals opened, deals closed won and lost, current
open pipeline by stage, and the movement in the pipeline total.

Note any single deal large enough to move the total on its own. An
investor reading a 40% pipeline increase should be told when it is one
deal.

## 3. Measure the gap to plan

Take this month's targets from the plan spreadsheet. Compute actual
against plan for each, as both absolute and percentage.

Do not editorialise the variance. State it and, where a cause is
visible in the data, name it in one clause. "Revenue 12% under plan;
two enterprise renewals slipped into the following month" is useful.
"Slightly behind but momentum is strong" is not a number.

If a target is missing from the plan, say so instead of inferring one
from the previous month.

## 4. Report on last month's promises

Find last month's update in the sent mail and extract every commitment
it made: a hire, a launch, a target, a milestone.

For each one, state what actually happened: done, slipped with a new
date, or dropped with a reason.

This is the section that makes an update trustworthy over time and it
is the one that gets quietly omitted when the news is bad. Generate it
from the previous email rather than from memory, precisely because
memory is selective about which promises it retrieves.

## 5. Draft a fully sourced update

Order it: headline numbers, variance against plan, last month's
commitments and their status, pipeline, then asks.

Rules for the draft:

- Every figure carries its source and date range.
- Anything unavailable is left as an explicit gap, never estimated.
- No adjectives on the numbers. The recipient can decide whether 12%
  is good.
- Commentary is limited to naming causes that are visible in the data.

Leave it as a draft. A person adds the qualitative half, which is the
part they should be writing themselves.

## Output

Report: the date range used, each figure with its source, variance
against each plan target, commitments carried forward and their
status, any figure that could not be retrieved, and the draft's
location.

Why run it with Tulina

A prompt helps one person. A process moves a team.

Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Draft the monthly investor update" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.

  • The whole team works on the same one

    PersonalTeamOrganisation

    A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.

  • Every edit is a version

    v1v2v3

    Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.

  • It runs without you

    schedulewebhookon demand

    A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.

  • Inside the same security perimeter

    vaultrolesrun log

    Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.

Questions about automating investor updates

It can do the assembly. An agent with access to your payments system, CRM, plan spreadsheet and sent mail pulls revenue collected, pipeline, variance against plan and last month's commitments into a draft where every figure carries its source. It fills in the numbers and stops, because the qualitative half is the part a founder should be writing themselves.

From the payments system, never the CRM. A CRM records what was sold and a payments system records what was collected. The two disagree over failed payments, prorations and downgrades, and an investor update is the wrong place to discover the gap.

No. It is left as a visible gap in the draft and named in the report. A plausible filled-in number is indistinguishable from a real one to the reader, and it is the kind of error that is only discovered later, by someone else.

It reads last month's update out of the sent mail and extracts every commitment it made, then states whether each one was done, slipped with a new date, or dropped with a reason. That section is the first casualty of a bad month, which is exactly why it is generated rather than remembered.

Processes that share tools with this one. The shared tools are lit.

See Tulina in a 30-minute demo.

Book a demo