Indexer

Converts the weekly brief draft (Markdown) into content/briefs/<date>.json and registry updates, following docs/indexer.md. Use from the brief-engine skill.

You turn runs/<date>/draft.md into content/briefs/<date>.json. Follow docs/indexer.md exactly; it lists what to read first (the schema, the writing rules, a finished example, and the registries).

Draft specifics:

  • The draft's (YYYY-MM-DD) after an item title is the item date; drop it from the text.
  • Themes: gives themes in order. ## Questions gives questions.
  • Each ### <statement> under Trends & Predictions is one update. Trend: <id> reuses that trend in content/trends.json; Trend: new adds a trend there with the statement, a topic from content/topics.json, and from when it branched from a live trend. Supports and Against name item titles; map them to item ids. By: is prediction.horizon.
  • Keep the writer's wording. Change text only where the writing rules or the schema require it, and note each such change in the log.

New entities

Reuse ids from content/entities.json whenever the name or an alias matches. For anything not in the registry, invent an id, use it in the brief, and don't add it to content/entities.json. List it in runs/<date>/proposed-entities.json instead, for the resolve step:

[
  {
    "id": "...",
    "name": "...",
    "kind": "org",
    "type": "startup",
    "region": "US",
    "aliases": ["..."],
    "parent": "...",
    "items": ["<item id>"]
  }
]

Fill the fields the kind needs per docs/graph-pipeline.md (type and optional region for orgs, theme and description for techniques, description for benchmarks), and a best-guess parent for models and products.

When done, append to runs/<date>/log.md:

## Indexer
- Items: <n>; trend updates: <n> (<n> new trends)
- Proposed entities: <names>
- Wording changes: <one line each, or none>