# Reports

Meeting Reports — a prep brief before each client meeting, and a post-meeting recap with the commitments that were agreed and a suggested follow-up email, minutes after it ends.

A **Report** is a stored page of analysis Salfio creates for you when something meaningful happens. Meetings produce two kinds: a **meeting-prep brief** before a scheduled client meeting starts, and a **post-meeting recap** minutes after its transcript is ready. Either way, every attendee from your team gets a notification carrying the full analysis and a link to the report page.

## Meeting-prep briefs

Shortly before a scheduled client meeting, Salfio can send you a **prep brief**: one short email (and inbox notification) with two sections — **Here's what matters**, the single thing to walk in knowing, and **Context**, a few sentences on what has actually been discussed with this client recently, with dates. Context reports; it does not interpret.

**Context is about substance, not correspondence** — what was said, what was committed to, what concerns were raised, what was decided. It does not tell you that a meeting was booked, an invitation accepted, or an email thread started: you were part of those. A scheduling detail appears only when it is the point in itself, such as a meeting moved twice or a proposal left unanswered.

The brief is deliberately short — it is a prompt to walk in prepared, not a substitute for the client's page.

**The brief only names people Salfio actually holds a name for.** A name comes from the calendar invitation, from a contact seen in your captured conversations, or from a member of your organization — never from an email address. When an attendee's name is not on record, the brief counts them instead of naming them ("Dimitri and one other"), and the attendee line at the top of the email leaves them out. A slightly vaguer sentence is deliberate: a guessed name would be indistinguishable from a real one. If someone you expect to see is missing, add their name to the calendar invitation, or it will appear on its own once Salfio captures a conversation carrying it.

For anything beyond those two sections, the email's **Ask Salfio about {client}** button opens that client's page with the assistant already open, scoped to them, and a prep question typed into the box. Press enter to send it, edit it first, or ask something else entirely — nothing is sent until you say so. Client names longer than 15 characters read "Ask Salfio about this meeting" instead, so the button stays on one line in every mail client.

Prep briefs come from your **connected calendar**: an upcoming meeting qualifies when its attendees match **exactly one client** and at least one attendee is a member of your Salfio organization. The calendar can be the Salfio notetaker's own sync or the standalone connection in **Settings → Account → Calendar** — so briefs work even when your organization records its meetings with Fireflies or Read.ai instead of the Salfio notetaker. Cancelled meetings never brief, a rescheduled meeting re-times automatically, and nothing is ever sent at or after the meeting's start time. A client with no history in Salfio yet produces no brief — there is nothing to say.

**No Context, no email.** If the Context section cannot be produced for a meeting — the client's recent history yields nothing substantive to report, or generation does not finish in time — Salfio sends nothing rather than a brief with one section in it. A short email that says little is worse than no email at all. The report is still created either way, so it remains readable on the client's page even when no brief was sent.

**Prep briefs are off until you enable them.** In **Settings → Notifications → Notification Types**, the **Meeting prep briefs** toggle turns them on, and the **Send time** control chooses how far before the meeting they arrive — 15 minutes to 24 hours, one hour by default. Use the card's **Test** button to generate a real brief from one of your own meetings and email it to yourself before switching the toggle on — see [Testing report emails](/docs/notifications#testing-report-emails).

## What triggers a recap

A recap is created when a **meeting** lands in Salfio (from any connected meeting source) and that meeting is assigned to **exactly one client**. Emails and chats never trigger reports — they only feed context. Meetings that match no client, or more than one, are skipped; assign the meeting to a single client to get recaps for it.

A meeting **nobody from the client side joined** also produces a recap, so a no-show stops being silence you have to notice yourself. Salfio decides this from who actually joined and spoke on the call, never from an empty transcript — a call where your client attended but nothing was transcribed is not a no-show and never gets one. When the evidence is unclear, no recap is produced.

## What's inside

- **Recap** — what was discussed, what was decided, where things stand. If AI generation is ever unavailable, the meeting's stored summary is used instead — a recap is never lost. For a no-show it is a plain factual account instead: who joined, for how long, and who never joined.
- **Commitments & next steps** — who owes what after the call. On the report page each commitment has a one-click **Track** button (see below).
- **Suggested recap email to your client** — a ready-to-copy draft of the follow-up email, written from what was discussed and agreed in the meeting. It never includes internal notes or concerns, and Salfio never sends it — you copy it, adjust it, and send it from your own mailbox. When you have a [tone of voice](/docs/profile#tone-of-voice) set, your draft is written in it: each attendee with a tone of voice set gets their own draft in their own voice — on the report page and in their recap email alike — while attendees without one keep the neutral draft. For a no-show the draft is a short note proposing to reschedule, never a recap of a meeting that did not happen.

## Who receives it

Meeting attendees who are members of your Salfio organization — matched by their meeting email address. Clients and other externals never receive briefs, recaps, or report access. The notification arrives in the in-app inbox and, unless email is off, by email immediately (briefs and recaps are time-sensitive and skip the daily summary — see [Notifications](/docs/notifications)). The **Meeting recaps** toggle under Settings → Notifications → Notification Types silences recaps entirely; prep briefs are opt-in via the **Meeting prep briefs** toggle.

## Tracking commitments

On the report page, **Track** turns a commitment into an open item on the client, visible to your whole team on the client's page under **Open items**. Mark it **Done** when delivered, or dismiss it if it's not relevant. Tracking the same commitment twice — even from two people at once — creates just one item.

## Related pages

- [Administrator Tools](./administrator-tools.md)
- [Agent Tools](./mcp-external-servers.md)
- [Assign a Slack channel to a client over the API](./guides-assign-slack-channel.md)
- [Authenticated health check](./api-reference-gethealth.md)
- [Authentication](./api-authentication.md)
- [Cards](./cards.md)
- [Changelog](./changelog.md)
- [Changelog](../changelog.md)
- [Connect a workspace](./getting-started-connect-workspace.md)
- [Connect an integration](./getting-started-connect-integration.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
