Skip to content

Brief

A brief sits above raw feed items and below a full wiki entry. Where a wiki entry is meant to compound across months, a brief is scoped to a moment. The question a brief answers: given the current wave of discourse around a theme, what does it mean for you, given what you already know?

Every brief has a title, a one-sentence summary, a short body, and two anchor sets. anchorWikiIds point to the wiki entries the brief draws on (the “what you already know” side). sourceFeedItemIds point to the feed items that supplied the fresh signal (the “what’s happening now” side).

draft, published, filed, or dismissed. Most briefs arrive published. You can file a brief to promote its insight back into the wiki or move it into Studio. Filing marks the brief itself as filed, records accepted-brief feedback for Sadie’s evolution loop, and, for wiki promotion, records promotedFrom: 'brief' on the resulting entry. Dismissing a brief marks it dismissed and feeds negative brief feedback into the next generation run.

Sadie runs the brief generator on a cadence you control. The compiler takes a snapshot of recent feed items, clusters them by theme, and for each cluster with sufficient signal generates a brief anchored to the relevant wiki entries.

Two tuning knobs that matter, both adjustable in Settings and both under the self-evolution layer’s control:

  • briefClusterMinSize is the minimum number of feed items that must be present before a cluster counts as a brief-worthy moment
  • briefMaxPerRefresh is the cap on briefs produced per compile run, so a busy news day does not flood Today

The prose register is shaped by the briefTone prompt slot in Settings.

Generated briefs must pass a quality gate before insertion. The gate requires the expected sections in order, valid source feed-item citations, visible cited voices, user/Soul grounding, supported wiki anchors, Candidate angles that carry both live-source language and user-memory language, non-template candidate angles, no credibility-leak phrasing, and at least one fresh feed item when a later brief overlaps an earlier accepted brief. If the real LLM path cannot produce an approved brief, Sadie leaves the refresh empty rather than saving formulaic fallback prose.

The next generation run also sees compact feedback from prior briefs. Filed briefs act as accepted taste evidence, user-edited briefs act as rewritten correction examples, user-dismissed or policy-blocked brief activity acts as negative evidence, and recent titles are used to avoid repeats. When a user dismisses a brief from Memory, they can attach a miss reason and optional note; that text is preserved in the feedback prompt so future runs learn the failure mode, not just the fact of dismissal.

On the brief detail page, Sadie shows a derived trust panel: live evidence, memory fit, structure, and feedback-loop state. It is not another generated explanation; it is built from the brief’s cited feed items, wiki anchors, required sections, and status.

Every brief passes through the policy engine before insertion. Title, summary, and body are linted independently. Rewrite policies apply substitutions in place. Warn policies are recorded silently. If any block policy fires on any of the three fields, the brief is suppressed entirely and a dismissed activity row is logged. No draft quietly slips past a rule you asked Sadie to keep.

Briefs do not replace or override wiki entries. They are synthesis artifacts. Useful right now, promotable when they reveal something durable, safely disposable otherwise.