Investor updates from board materials are not a blank-page writing problem. They are a routing and evidence problem: which AI workflow can extract numbers from approved materials, draft a clear narrative, catch conflicts, and leave investor relations with a record they can defend before anything goes to investors.
Recommended Default Pattern
- Start with an approved source manifest, not a folder of background reading.
- Extract metrics into structured fields before asking for narrative prose.
- Draft from the extracted table, not from raw board materials alone.
- Run a synchronous conflict check before a human reviewer sees the draft.
- Route numbers, roadmap statements, legal language, and tone to named reviewers.
- Publish no sentence that lacks an approved source or explicit human approval.
An investor relations update usually starts with board slides, a finance export, operating metrics, customer notes, product milestones, and leadership commentary. A model can turn that pack into a draft, but the system has to prove where each number and claim came from. That requirement affects model choice, endpoint choice, batch design, caching, and the approval trail.
For public-company teams, the governance bar is higher. The SEC’s Regulation FD, effective October 23, 2000, matters when a public issuer, or a person acting on its behalf, selectively discloses material nonpublic information to covered market participants or securities holders where trading is reasonably foreseeable.[1] It does not automatically apply to every private-company investor update, and this article is operational workflow guidance rather than legal advice. The practical engineering habit is still useful: make the source, model output, reviewer, and final sent version easy to reconstruct.
Use Approved Source Material
Treat approved source material as an input contract, not as background reading. Each run should start with a source manifest that names the board deck, KPI export, CRM notes, finance table, product changelog, and leadership notes that are allowed for that draft. If a metric is not in the manifest, the model should label it as missing instead of filling the gap from memory.
The manifest should carry stable identifiers, file hashes, owner names, and approval status. A simple rule works: no investor-facing sentence should survive review unless it can be traced to at least one approved source and one human reviewer. That rule is more important than the model family you choose.
For metric extraction, use structured tool calls instead of free-form prose when the stack supports it. OpenAI and Anthropic both document patterns where the model requests a tool, the application executes it, and the result is returned to the model.[2][3] In an IR workflow, those tools should read approved tables from the manifest, not live systems that can change during drafting.
Separate source retrieval from narrative generation. One job should extract facts such as ARR, MRR, net burn, runway, headcount, churn, pipeline, product milestones, and open risks. A second job can draft the update from those extracted facts. That separation makes it easier to catch a model that writes a polished sentence from a weak or missing source.
Create A Structured Draft
The draft should make reviewers faster, not make them guess what the model did. Ask for sections that match the update format: executive summary, metric changes, customer and revenue notes, product progress, hiring, cash position, risks, decisions needed, and investor asks. Each section should carry a source map and a confidence label such as sourced, inferred from source, or needs approval.
Before hard-coding routes, compare candidate models in AI Models for pricing per million input and output tokens, context window sizes, modalities, and public benchmark fields, then run your own IR-specific evaluation on prior updates. Public benchmarks are useful filters, but they do not measure whether a model can preserve a runway calculation or avoid changing a board-approved risk statement.
Use batch endpoints when the work is large, repeatable, and not needed during a live review call. Use synchronous endpoints when legal, finance, or the CEO is actively editing the draft. The provider details that materially change an IR process are turnaround time, maximum input size, request count, quota separation, and whether output ordering can be assumed.[4][5][6][7][8][9]
For a 48-hour investor update, run this flow: keep extraction and first-pass drafting asynchronous, keep final narrative review synchronous, and block publication until the source map is complete. That gives engineering a clear routing rule and gives IR a clear stop condition.
- Step 1: Batch-extract facts from approved materials into a table with fields for metric name, value, period, source document, source location, and reviewer.
- Step 2: Batch-generate section drafts from the extracted table, with instructions to write
needs sourcewhen a claim is not supported. - Step 3: Run a synchronous conflict check against the source map before a reviewer sees the draft.
- Step 4: Let finance approve numbers, product approve roadmap statements, legal approve forward-looking language, and leadership approve tone.
- Step 5: Save the final sent version with the source manifest, prompt version, model family, endpoint mode, reviewer names, and approval time.
Prompt caching can matter when the same approved board pack is used across many sections, but it should not drive the control design. Treat caching as a cost optimization after source mapping, conflict checks, and approval records are already working.
Use A Source Map Schema
A practical source map does not need to be complicated. It needs to be strict enough that reviewers can reject unsupported claims quickly and specific enough that the final sent version can be reconstructed later.
| Field | What to store | Review rule |
|---|---|---|
| source_id | Stable file ID, file hash, owner, and approval time. | Reject the claim if the source is missing or unapproved. |
| claim_id | Sentence, bullet, or paragraph ID in the draft. | One final sentence may map to more than one source. |
| metric_value | Metric name, value, unit, period, and currency if relevant. | Finance approves numbers before narrative approval. |
| source_location | Slide number, table name, row, column, page, or note timestamp. | The reviewer should be able to click from claim to evidence. |
| support_level | Sourced, inferred from source, needs approval, or unsupported. | Unsupported claims cannot move to the final draft. |
| approval_record | Reviewer name, role, decision, timestamp, and comment. | A changed number or claim creates a new version. |
Match Audience And Tone
A monthly VC update, a quarterly board summary, a shareholder letter, and a fundraising data-room note should not share the same depth. The model can adapt structure, but the product owner should decide the audience before routing. If the reader is an existing seed investor, the update can be direct about burn, runway, customer concentration, and hiring risk. If the reader is a fundraising prospect, the same facts may need a tighter source trail and a narrower disclosure set.
Use model tiers by task, not by brand preference. A smaller drafting tier can format sourced bullets and normalize tone. A stronger reasoning tier, such as a Claude Opus or Sonnet tier, an OpenAI GPT family model, or a Google Gemini Pro tier, is a better fit for contradiction checks, unclear causal claims, and source-to-sentence review. For cloud-hosted teams, verify model IDs, supported APIs, regions, modalities, and quotas in the account where the workflow will actually run.
Tone rules should be explicit. Ban unsupported adjectives such as strong, accelerating, or efficient unless the metric table supports them. Replace sales momentum improved with a sourced statement such as qualified pipeline increased from the prior period, only if the pipeline source and period are approved. If the model cannot name the metric, source, and period, it should not write the claim.
Forward-looking statements need a separate review lane. Roadmap dates, hiring plans, fundraising timing, revenue expectations, and cash runway should be marked for leadership and legal review before they leave the drafting system. The model can flag those sentences, but it cannot decide whether they are appropriate to disclose.
Build An Approval Trail
The approval trail is the product feature that makes AI useful in investor relations. Store the prompt version, model family, provider, endpoint mode, source manifest hash, batch or request ID, draft timestamp, reviewer, approval decision, and final sent text. If a number changes after review, treat it as a new version, not an edit to the old record.
Do not depend on a provider batch output file as the system of record. The OpenAI Batch API docs state that output files are automatically deleted 30 days after a batch completes, and the Bedrock batch data docs state that output order is not guaranteed to match input order.[4][9] Your application should preserve its own mapping from source row to request ID to final sentence.
The simplest acceptance test is strict: a reviewer should be able to click any sentence in the draft and see the source document, source location, extracted value, model route, and approval status. If that path is missing, the sentence should be cut or sent back for sourcing.
AI can remove blank-page work from investor relations, but it should not remove friction from disclosure decisions. A good routing system sends bulk extraction and first drafts through batch, reserves synchronous calls for active review, and refuses to publish claims that do not have approved source material behind them.
What To Verify Before Sending
- Every number has a metric name, value, unit, period, and approved source location.
- Every causal claim has either a source-backed explanation or a reviewer note approving the inference.
- Every forward-looking statement has the right leadership, finance, or legal reviewer attached.
- Every investor ask matches the intended audience and disclosure set.
- No unsupported adjective survived from the model draft into the final version.
- The final sent text is saved with the source manifest, prompt version, model route, and approval record.
Sources
- SEC Regulation FD final rule and selective disclosure guidance: https://www.sec.gov/rules-regulations/2000/08/selective-disclosure-insider-trading
- OpenAI function calling guide: https://platform.openai.com/docs/guides/function-calling
- Anthropic tool use overview: https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/overview
- OpenAI Batch API documentation: https://platform.openai.com/docs/guides/batch
- Anthropic Message Batches API documentation: https://docs.anthropic.com/en/docs/build-with-claude/batch-processing
- Google Vertex AI batch inference for Gemini: https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/batch-prediction-gemini
- Azure OpenAI batch deployments: https://learn.microsoft.com/azure/ai-services/openai/how-to/batch
- Amazon Bedrock batch inference: https://docs.aws.amazon.com/bedrock/latest/userguide/batch-inference.html
- Amazon Bedrock batch inference data format: https://docs.aws.amazon.com/bedrock/latest/userguide/batch-inference-data.html