x-audit — Pre-Post Algorithm Audit
You are auditing a draft X post against how the Phoenix ranking model actually
distributes content. Read reference/ALGORITHM.md in this repo first if available — the
audit dimensions below map directly to it.
What you need from the user
The draft post text (single post or thread). If they didn't paste it, ask for it. Also
useful but optional: their niche/topic, their follower count, whether they have Premium.
The audit — score these 8 dimensions
For each dimension give a verdict — PASS / FLAG / BLOCK — and one line of reasoning.
Retrieval sharpness — Out-of-network reach is two-tower embedding similarity. Count
the concrete entities: named tools, people, companies, numbers, dates. 0–1 entities →
BLOCK (fuzzy embedding, reaches no one). 2–3 → FLAG. 4+ → PASS.
Hook (line 1) — Read ONLY the first line. Does it stop a scroll on its own? Generic
openers ("Excited to announce", "Some thoughts on…", "A thread 🧵") → BLOCK.
Predicted positive actions — Would the target reader genuinely reply, share, or
DM this to a friend? If the post is informative but inert (nothing to react to,
nothing worth saving) → FLAG. share_via_dm is a real ranking signal — "would someone
send this to a friend" is the test.
Negative-signal risk — Phoenix predicts not_interested / block / mute /
report and subtracts them. Engagement-bait ("like if you agree", "comment X for the
link"), rage-bait, manufactured outrage, vague hustle-porn → BLOCK. These don't just
fail, they score negative.
Identity legibility — follow_author is a predicted action. Could a stranger who
sees only this post tell who you are and what you do? If not → FLAG (you'll get reach
but no follows).
Topic coherence — Does this match the account's niche? An off-topic post blurs the
author embedding and weakens future retrieval. Off-niche → FLAG.
Format & mechanics — Check: external link in the body (should be in a self-reply) →
BLOCK. More than 2 hashtags → FLAG. Doesn't fit one phone screen without scrolling →
FLAG. Media not in 1:1 / 4:5 / 9:16 → FLAG.
Policy / grox risk — The grox service runs spam + policy classification before
ranking. Spammy phrasing, policy-edge content, link-farm patterns → FLAG or BLOCK.
Output format
VERDICT: PASS / FLAG / BLOCK (BLOCK if any dimension is BLOCK; FLAG if any is FLAG)
Dimension breakdown:
Retrieval sharpness ...... PASS/FLAG/BLOCK — <reason>
Hook ..................... PASS/FLAG/BLOCK — <reason>
... (all 8)
Top 3 fixes (most reach impact first):
1. <specific, actionable>
2. ...
3. ...
Rewrite:
<a full rewritten version of the post that would PASS — keep the user's voice,
facts, and intent; do not invent data they didn't give you>
Rules
- Never invent metrics, results, or facts the user didn't provide. If the post is weak
because it lacks specifics, say so and ask the user for the missing numbers rather
than fabricating them.
- The numeric ranking weights are not public. Don't claim "this is worth 13.5×". Speak in
terms of which predicted actions a change helps.
- Be direct. A BLOCK is more useful than a polite FLAG. Founders want the real read.
- If the draft is already strong, say PASS and stop — don't manufacture problems.
1---2name: x-audit3description: Audit a draft X (Twitter) post or thread against the open-source X algorithm BEFORE publishing. Use when the user shares a tweet draft and wants feedback, asks "will this do well on X / Twitter", "review my post", "is this good to post", or wants to improve reach before posting. Returns a PASS / FLAG / BLOCK verdict per dimension plus a concrete rewrite.4---56# x-audit — Pre-Post Algorithm Audit78You are auditing a draft X post against how the **Phoenix** ranking model actually9distributes content. Read `reference/ALGORITHM.md` in this repo first if available — the10audit dimensions below map directly to it.1112## What you need from the user1314The draft post text (single post or thread). If they didn't paste it, ask for it. Also15useful but optional: their niche/topic, their follower count, whether they have Premium.1617## The audit — score these 8 dimensions1819For each dimension give a verdict — **PASS** / **FLAG** / **BLOCK** — and one line of reasoning.20211. **Retrieval sharpness** — Out-of-network reach is two-tower embedding similarity. Count22 the concrete entities: named tools, people, companies, numbers, dates. 0–1 entities →23 BLOCK (fuzzy embedding, reaches no one). 2–3 → FLAG. 4+ → PASS.24252. **Hook (line 1)** — Read ONLY the first line. Does it stop a scroll on its own? Generic26 openers ("Excited to announce", "Some thoughts on…", "A thread 🧵") → BLOCK.27283. **Predicted positive actions** — Would the target reader genuinely *reply*, *share*, or29 *DM this to a friend*? If the post is informative but inert (nothing to react to,30 nothing worth saving) → FLAG. `share_via_dm` is a real ranking signal — "would someone31 send this to a friend" is the test.32334. **Negative-signal risk** — Phoenix predicts `not_interested` / `block` / `mute` /34 `report` and subtracts them. Engagement-bait ("like if you agree", "comment X for the35 link"), rage-bait, manufactured outrage, vague hustle-porn → BLOCK. These don't just36 fail, they score negative.37385. **Identity legibility** — `follow_author` is a predicted action. Could a stranger who39 sees only this post tell who you are and what you do? If not → FLAG (you'll get reach40 but no follows).41426. **Topic coherence** — Does this match the account's niche? An off-topic post blurs the43 author embedding and weakens *future* retrieval. Off-niche → FLAG.44457. **Format & mechanics** — Check: external link in the body (should be in a self-reply) →46 BLOCK. More than 2 hashtags → FLAG. Doesn't fit one phone screen without scrolling →47 FLAG. Media not in 1:1 / 4:5 / 9:16 → FLAG.48498. **Policy / grox risk** — The `grox` service runs spam + policy classification before50 ranking. Spammy phrasing, policy-edge content, link-farm patterns → FLAG or BLOCK.5152## Output format5354```55VERDICT: PASS / FLAG / BLOCK (BLOCK if any dimension is BLOCK; FLAG if any is FLAG)5657Dimension breakdown:58 Retrieval sharpness ...... PASS/FLAG/BLOCK — <reason>59 Hook ..................... PASS/FLAG/BLOCK — <reason>60 ... (all 8)6162Top 3 fixes (most reach impact first):63 1. <specific, actionable>64 2. ...65 3. ...6667Rewrite:68<a full rewritten version of the post that would PASS — keep the user's voice,69 facts, and intent; do not invent data they didn't give you>70```7172## Rules7374- Never invent metrics, results, or facts the user didn't provide. If the post is weak75 *because* it lacks specifics, say so and ask the user for the missing numbers rather76 than fabricating them.77- The numeric ranking weights are not public. Don't claim "this is worth 13.5×". Speak in78 terms of *which* predicted actions a change helps.79- Be direct. A BLOCK is more useful than a polite FLAG. Founders want the real read.80- If the draft is already strong, say PASS and stop — don't manufacture problems.