---
title: 'Client reports: the starting-point report and the pitch report'
description: 'The two client-ready reports for agencies and consultants: the free starting-point report from setup data, and the pitch report a completed research run produces.'
slug: client-reports
group: workflows
order: 17
keywords:
  [
    client reports,
    starting point report,
    pitch report,
    seo opportunity report,
    agency,
    90-day content sequence,
    posting cadence,
  ]
related: [organizations-and-teams, data-backed-path, free-and-paid, your-first-project]
updated: '2026-10-26'
---

If you serve clients, VarynForge gives you two documents to hand them. The starting-point report, the Client Snapshot on the pricing page, is free and ready as soon as a project is set up. The pitch report comes from a completed research run and holds the full opportunity map. Both arrive as data and as markdown, so your agent can render them in your own template, under your own name.

## The starting-point report

`get_starting_point_report` takes a `projectId` and builds a client-facing document from what project setup already produced. It is free on every plan and needs no research run. It covers four things:

- **Positioning**: the niche and its market profile.
- **The site and its content inventory**: the pages VarynForge mapped from the site.
- **The competitor set**: the competitors curated at setup.
- **Early market signals**: the first rising topics the radar picked up.

The response carries `markdown`, a render ready to send, and the same data as structured fields for a custom layout. It also carries `lockedSections`, which names what a research run adds: the full opportunity map, the 90-day sequence and the competitor gap analysis. Those sections are named, not previewed or faked. Pull one per client on day one, before you have spent anything.

## The pitch report

`get_pitch_report_payload` takes the `runId` of a completed research run, from `get_research_status`. It is included with every run at no extra cost. A run that has not finished returns its `runStatus` and `report: null`. The payload holds:

| Section                    | What it contains                                                                                                           |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Niche and solution profile | Who the market is and what the client's site offers                                                                        |
| Competitor landscape       | The competitors the run found in real search results                                                                       |
| Opportunity map            | Gaps only, scored 0 to 100, each marked `net_new` or `partial` with how much the site already covers and its closest pages |
| Covered opportunities      | A separate defend-and-refresh list of topics the site already covers, never to be pitched as new work                      |
| 90-day content sequence    | Up to 12 weeks, planned articles first, then gap topics marked `type: topic`                                               |

Demand is sized in buckets (high, average, long-tail, no traffic), never as a searches-per-month number, by design. A topic in the sequence is a subject to develop, not an article title. Entries can carry notes, such as a near-duplicate or an already-published near-match; keep them visible when you render.

## Sizing the sequence

The 90-day sequence follows how often the client actually publishes, not how much content the run found. `set_posting_cadence` sets that rate on the project, from 1 to 14 articles a week; a new project starts at 2. A client who publishes twice a week gets a twice-a-week calendar.

```json
{ "projectId": "<project id>", "postsPerWeek": 3 }
```

`get_project` reads the value back as `postsPerWeek`. Set it before you pull the report.

## A stale asset profile

The payload reports when the site's profile was last synced. When `assetProfile.syncedBeforeRun` is true, the profile is older than the run. Your agent offers you the choice: run `resync_asset_profile` to re-read the site first, or render with the profile as it stands. Either way the report carries an "Asset profile last synced" date.

## The Report screen

The same two reports live on the Report screen of each project in the web app. With no completed run, it shows the starting-point report and a card listing what a research run adds. Once a run completes, it shows the SEO Opportunity Report from the latest run: market snapshot, the site, competitor landscape, where to win, what is already covered, the 90-day sequence, and a short methodology note. You can download either report as markdown, and the full report as a PDF too. When the profile predates the run, the download asks whether to re-sync first.

## Your name on it

The pitch payload's `renderGuide` lays out the full report structure with a slot for your branding. Render it in your own template, in Docs, Slides, Notion or a PDF, under your own name. VarynForge never asks to be credited: the reports and the articles drafted from them go out under your brand, and your agent never writes into a client's article that it was forged here.

## Where to go next

[Organizations and teams](/docs/organizations-and-teams) explains how to keep each client's projects and credits apart. [The data-backed path](/docs/data-backed-path) covers the research run the pitch report comes from.
