V4 → V5 Delta Report — Reddit RPA Prompts

Date: 2026-08-11 Prepared by: GLM 5.2 (this session) Verification: Programmatic section comparison + JSON field superset checks — all passed.

Files

FileV4 (baseline)V5 (new)Delta
System promptreddit-comment-system-prompt-v4-unified.md (832 lines, 49,219 B)reddit-comment-system-prompt-v5-unified.md (857 lines, 52,215 B)+25 lines
User promptreddit-comment-user-prompt-v4-unified.md (190 lines, 10,821 B)reddit-comment-user-prompt-v5-unified.md (231 lines, 12,757 B)+41 lines

V4 files were NOT modified (verified by comparison).


1. Breaking Changes: NONE

ContractStatusEvidence
Input JSON: existing 12 fields✅ All present in V5Field superset check: all v4 input fields ⊆ v5 fields
Output JSON (SAFE): existing 10 fields✅ All present in V5strategy_used is additive
Output JSON (SKIP): 4 fields✅ Byte-identicalSKIP JSON unchanged
Phase 1: Universal Ban Categories✅ IdenticalByte-for-byte match
Phase 1: Sensitive Categories✅ IdenticalByte-for-byte match
Phase 1: Decision Rules 1–7✅ IdenticalByte-for-byte match
Phase 2: Upvote Formula✅ IdenticalByte-for-byte match
Phase 2: Anti-AI Detection Guidance✅ IdenticalByte-for-byte match
All 49 per-subreddit templates✅ All presentGrep-verified all 49

2. What Changed in the System Prompt (4 changes)

S1. New “Thread Engagement Strategy” section (Phase 2)

Inserted before the Per-Subreddit Templates section. When top_comments is provided in the input, the AI classifies the #1 top comment and picks a strategy:

If top comment is…Strategystrategy_used
A joke / emotional one-linerDifferent angle with new infonew_angle
The obvious consensus takeContrarian (community must side with it)contrarian_take
A weak / partial takeQuote-rebuttal (quote + counter)quote_rebuttal
A long analytical essayShort punchy counter / missing data pointnew_angle
No top_comments providedPost-only generationpost_only

Rules: never repeat top comment phrasing; per-subreddit template wins on conflicts; top_comments must NOT override SKIP; anti-convergence (don’t use the same angle as existing comments).

S2. Anti-convergence rules (added to Universal Writing Rules)

3 new bullets:

  • Vary the opener — never start two comments the same way; don’t use the obvious opener the post suggests.
  • Don’t default to the first obvious anecdote — if the post mentions mango, don’t make every comment about mango.
  • Question endings: only when template says ✅ — treat “optional”/“⚠️” as usually no (fixes the 3/4 question rate observed in the similarity analysis).

S3. INPUT FORMAT — new top_comments field

Added field description after the 12 existing fields:

  • top_comments — array of top 2 comments by score, each with score (int) and body (full text). [] when < 2 comments.

S4. OUTPUT FORMAT — new strategy_used field

Added to SAFE JSON example + field explanations:

  • strategy_used — one of new_angle, contrarian_take, quote_rebuttal, post_only. SAFE responses only; not in SKIP.

3. What Changed in the User Prompt (3 changes)

U1. top_comments added to JSON schema + field description table

  • Added top_comments array to the schema example.
  • Added row to field descriptions table: ❌ No | array | Top 2 comments by score...

U2. New example input (ICP Subreddit with Top Comments)

  • r/sales example with top_comments populated (real scores from the analysis: 700 pts, 465 pts).
  • All 5 existing examples preserved.

U3. Version + reference updates

  • Header: V4 → V5, system prompt reference updated.
  • Backend steps: “V4 system prompt” → “V5 system prompt”, added strategy_used to logging step.
  • Data collection table: added strategy_used row.
  • Version history: new v5-unified row.
  • prompt_version constant: "v4-unified""v5-unified".

4. JSON Contract Summary (for devs)

Input (backend → AI)

v4v5Breaking?
Input fields1213 (+top_comments)No — additive
top_comments format[{"score": int, "body": string}, ...]
top_comments selectionTop 2 by score (not newest)
top_comments empty case[] when < 2 comments

Output (AI → backend)

v4v5Breaking?
SAFE fields1011 (+strategy_used)No — additive
strategy_used valuesnew_angle | contrarian_take | quote_rebuttal | post_only
SKIP fields44 (unchanged)No — identical

Backend work required

  1. Fetch top 2 comments by score for the post (alongside existing post fetch — the backend already fetches comment count).
  2. Inject as top_comments in the user message JSON: [{score: int, body: string}, ...]. Full comment text (not truncated). [] when < 2 comments.
  3. Log strategy_used in the metrics DB alongside existing fields.
  4. Update prompt_version constant from "v4-unified" to "v5-unified".

5. Evidence Base

FindingSource
Quote-rebuttal = 18% of top comments; r/Entrepreneur replies 58.8 vs 37.7analysis-report.md (1,748 comments, 25 ICP subs)
Our comments 8–115x more similar than natural; 3/4 end with questions vs 0/7post_1vkwaca_similarity_report.md (live fetch, r/CasualConversation)
Questions hurt in r/sales (−90%), r/startups (−40%), r/Entrepreneur (−35%)analysis-report.md Section 3.4

6. Verification Commands Used

# Section identity (5 sections, byte-identical)
section extraction + whitespace-normalized comparison → all identical
 
# Template presence
for sub in <49 subs>: grep -q "**r/$sub**" v5 → ALL 49 PRESENT
 
# JSON contract
v4 input fields ⊆ v5 input fields → True
v4 SAFE output fields ⊆ v5 SAFE output fields → True
SKIP JSON byte-identical → True

V4 files unchanged. V5 files at reddit-rpa-prompts/reddit-comment-system-prompt-v5-unified.md and reddit-rpa-prompts/reddit-comment-user-prompt-v5-unified.md.