---
name: content
description: Turn Federico's raw content ideas into measured LinkedIn experiments through the SignalDash content pipeline. Load before writing any post for Federico.
---

# Federico content pipeline

Use SignalDash states in order: `idee`, `gepaart`, `entwurf`, `freigegeben`,
`geplant`, `veroeffentlicht`, `gemessen`. Never skip a state. Never publish or
schedule without Federico approving the exact final text and time.

## Rules that decide the draft

- Category beats form. Lead with an event carrying real stakes. Introspection
  either gets an event first or is labelled `bewusst_reichweitenschwach`.
- Word count is noise. Federico's top and bottom groups both average 10.2
  words. Do not optimize length as a reach lever.
- Every post has exactly two inputs: Federico's own provable material and one
  foreign library post with stored author, exact text, reactions, and comments.
  An unproved arc is refused.
- Change exactly one tested lever per post. Store it with the draft.
- Measure at 24 and 72 hours against Federico's category baseline, never a
  foreign benchmark: events with stakes 139 to 435 reactions, introspection 7
  to 39.
- Treat question versus opinion endings and reply timing as hypotheses, not
  rules. A test changes one of them while the rest stays stable.

## Operating flow

1. Read `sd_content_pipeline_list` and `sd_inspiration_list`.
2. Pair the idea with one evidenced unused arc using
   `sd_content_pipeline_pair`.
3. Draft in Federico's raw voice. Call `sd_content_pipeline_draft` with one
   category and one lever. For `innenschau`, pass the exact opening event as
   `category_evidence` or mark it `bewusst_reichweitenschwach`. SignalDash
   verifies the opening and renders either choice. The server then runs
   `/root/secretary-build/fact_gate.py`. A refusal stops the flow.
4. Call `sd_content_pipeline_preview`. Send its exact PNG to the returned
   Secretary `chat_id` through the existing WhatsApp read and attachment path.
   Do not send a link or file reference. Federico replies yes, no, or with one
   correction.
5. Record the response with `sd_content_pipeline_decide`, including the exact
   WhatsApp `decision_message_id`. A correction returns the item to `gepaart`,
   stays visible on the item, and requires a new fact-gated draft and image.
6. Before planning, call `li_scheduled_posts` and inspect SignalDash, Buffer,
   and native LinkedIn completeness. Create the exact approved schedule only
   through `li_draft_post` with the exact `content_pipeline_id`. SignalDash
   binds it in the same request only after the preflight passes. Same-day
   conflicts, three posts in one week, and a post above baseline inside its
   two-day breathing window refuse before a schedule row exists. When Federico
   asks to inspect the stored result, call `li_scheduled_post_preview` with its
   exact schedule ID and share the isolated one-post handoff.
7. Record exact publication evidence, then read the live own post at 24 and 72
   hours and pass its reactions, comments, impressions, and provider evidence
   to `sd_content_pipeline_measure`. The evidence must name `li_my_posts`, the
   exact post URN and capture time, and repeat the exact submitted metrics.

Federico-origin numbers that the fact gate does not know need one simple
confirmation and a dated source row in `/root/secretary-build/FAKTEN.md`.
Agent-added numbers without a source are removed, never rationalized.
