From 68ef15a8fa673ab4ea374bc1f79bfa3a64e2f25c Mon Sep 17 00:00:00 2001 From: Rene Fichtmueller Date: Tue, 31 Mar 2026 16:48:10 +0200 Subject: [PATCH] =?UTF-8?q?feat(blog):=20add=20Style=20B=20prose=20calibra?= =?UTF-8?q?tion=20=E2=80=94=2010/10=20narrative=20flow=20standard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CALIBRATION_GOLD_STANDARD now covers two validated styles: A (structured) and B (prose) - Style B: no headers, no bullets, 1-3 sentence paragraphs, reframe ending - STEP8_KILL_AI_TONE: prose conversion option for over-structured articles - STEP4_MASTER_DRAFT: explicit style choice instruction (A vs B based on angle) - Gold standard includes exact prose rhythm patterns from 10/10 human-reviewed article - Wrong patterns expanded: symmetric sections, checklist endings, transition clichés --- packages/api/src/llm/fo-blog-pipeline.ts | 80 +++++++++++++++++------- 1 file changed, 57 insertions(+), 23 deletions(-) diff --git a/packages/api/src/llm/fo-blog-pipeline.ts b/packages/api/src/llm/fo-blog-pipeline.ts index 9e1535b..9f8117a 100644 --- a/packages/api/src/llm/fo-blog-pipeline.ts +++ b/packages/api/src/llm/fo-blog-pipeline.ts @@ -199,7 +199,14 @@ STYLE: - Specific transceiver types (SR4, DR4, LR4, FR4, ZR) with REAL problems, not just specs - Real numbers (dBm, watts, $/port, €/Gbit, $/year power cost) -MINIMUM 2500 words. No placeholders. No TODO markers. Complete article. +STYLE CHOICE: +Two valid output formats — pick based on the outline's angle and audience: +- STYLE A (structured): Use headers, specific failure scenarios, bullet lists where needed. Best for troubleshooting guides, migration how-tos, deep dives. +- STYLE B (prose narrative): No headers after the title, no bullet points, pure flowing paragraphs (1-3 sentences each). Best for roundups, opinion pieces, "state of the technology" takes. The ending MUST be a single reframe sentence, not a list. + +Both styles are 10/10 valid. Choose the one that fits the angle selected in the outline. + +MINIMUM 2000 words. No placeholders. No TODO markers. Complete article. Outline: {{OUTLINE}} @@ -302,6 +309,8 @@ REMOVE: - Lists that all follow identical format - Perfect grammar everywhere — add occasional conversational shortcuts - Phrases like "it is important to note", "one should consider" +- Any section that ends with a tidy 4-item bullet list +- Perfectly symmetrical sections (same length = AI fingerprint) REPLACE WITH: - Natural, slightly imperfect flow @@ -310,6 +319,15 @@ REPLACE WITH: - Direct address ("You know this is true if...") - Specific instead of generic ("the Nexus 93180 in rack 14" not "your network switch") +PROSE STYLE OPTION (use when article currently feels too structured/sectioned): +If the article has many headers and bullet points and reads like a slide deck, consider +converting major sections to flowing prose paragraphs instead. +A validated 10/10 prose rhythm: + - 1-3 sentences per paragraph, then line break + - Short punchy sentences after a buildup: "It isn't.", "It usually does that at the worst possible time." + - No bullet points — everything as prose + - Ending is a one-liner reframe: "Because 400G itself isn't the risk. Your assumptions are." + The article should read like a human engineer wrote it during a long flight. Keep it clear and professional, but natural. @@ -488,37 +506,53 @@ export function buildFeedbackContext(feedback: Array<{ score: number; feedback_t // ═══════════════════════════════════════════════════════ export const CALIBRATION_GOLD_STANDARD = ` ---- GOLD STANDARD REFERENCE (10/10 — calibrate your output to this level) --- +--- GOLD STANDARD REFERENCE (10/10 — two validated styles) --- -KEY STRUCTURAL PATTERNS from a 10/10 article: +TWO VALID WRITING STYLES — choose based on topic complexity: -HOOK (correct): -"You're sitting in front of a quote for a few hundred 400G optics. Everything looks clean on paper. Bandwidth solved. Future-proof. Done. -That's usually the moment where things start going wrong." +━━━ STYLE A: STRUCTURED (sections, some bullets, headers) ━━━ +Use for: deep dives, migration guides, troubleshooting tutorials +Key patterns: + HOOK: "You're about to sign a PO for 200 optics. The vendor quote is on your desk. Before you sign — read this." + WHAT BREAKS: short scenario blocks — "Cause: wrong MPO polarity. Fix: flip the key on one end." + ENDING: "400G doesn't fail in design. It fails in production. Fast." + HIDDEN COSTS (raw): "That $350 optic turned into a multi-thousand-dollar problem because someone skipped the connector cleaning." + CABLING: "SR4 to DR4 migration is where budgets go to die. Wrong patch panels, wrong polarity, wrong assumptions." -WHAT BREAKS (correct — short, direct, no padding): -"Works in lab, fails in production -Classic. -Lab: single vendor, short patch, clean environment. -Production: mixed optics, different firmware, real distances. -Result: CRC errors, unstable links, weird flaps." +━━━ STYLE B: PROSE (no headers, no bullets, pure narrative flow) ━━━ +Use for: opinion pieces, roundups, market analysis, "state of the technology" articles +This style was 10/10 rated with this exact structure: -HIDDEN COSTS (correct — raw, not sanitized): -"That 'cheap' optic? Turns into a multi-thousand-euro problem because someone didn't clean a connector. At 400G, contamination isn't a quality issue. It's a service outage." + "You're sitting there, staring at a quote for a couple hundred 400G optics. Pricing looks decent, vendor says it's all production-ready, future-proof, industry standard — the usual story. + And to be fair: they're not wrong. + 400G works. It's stable. It's deployed everywhere. + But that's also exactly where people get burned — because they assume 'works' means 'easy'. + It's not." -CABLING REALITY (correct): -"SR4 to DR4 migration is where budgets go to die. Wrong patch panels, wrong polarity, wrong assumptions. You end up re-cabling things you thought were ready." + Key rhythm: very short paragraphs (1-3 sentences). Line breaks as breathing room. + No bullet points anywhere. No numbered sections. + Conversational asides that set up the next thought: "And that's usually the moment where deployments slow down." + Reframe at the end — not a summary, a shift in perspective: + "None of this means you shouldn't deploy it. Quite the opposite." + [builds to...] + "Because 400G itself isn't the risk. Your assumptions are." -ENDING (correct — hits and stops): -"400G is not risky because it's new. It's risky because people underestimate what actually changes. -If your design only works on paper, it will fail in production. And 400G fails fast." +STYLE B RHYTHM RULES: +- One thought per paragraph +- Never more than 3 sentences in a row without a break +- Short declarative sentences after a build-up: "It isn't.", "And it usually does that at the worst possible time." +- The ending is a one-liner that reframes everything: not a conclusion, a punch +- NEVER end Style B with a list or action items — just the thought that sticks -WRONG PATTERNS (do not produce these): +WRONG PATTERNS (both styles — never produce): ❌ "Thoroughly Test Your PoE Budget:" (PoE = wrong context, checklist = wrong format) -❌ "QSFP-DD DR4 (Direct Attach)" (DR4 ≠ Direct Attach) -❌ "DR4 and ZR both push boundaries..." (they serve completely different use cases) +❌ "QSFP-DD DR4 (Direct Attach)" (DR4 ≠ Direct Attach — DAC is Direct Attach Copper) +❌ "DR4 and ZR both push boundaries..." (completely different use cases, always separate) ❌ "Don't be swayed by shiny new toys" (marketing speak, not engineer voice) -❌ 4-item bullet recommendation at end (too clean, too AI) +❌ 4-item bullet recommendation at end of any article +❌ Ending with "consider your options carefully" or any variant of that +❌ Starting a new paragraph with "Furthermore", "Additionally", "It's worth noting" +❌ Perfectly symmetrical sections (every section same length = AI fingerprint) --- END GOLD STANDARD --- `;