[object Object]

← back to Ventura Corridor

iter 176: rewrite gen prompt — 6 positive headline patterns up front (verb-led/specific-noun/sensory/contrast/time-place/fragment), negative AVOID list now secondary; killed stale gen worker so watchdog respawns w/ new prompt

a52bd713ad57c8be90cdeb0c7f7b5b5bfe8cc8a0 · 2026-05-06 20:29:43 -0700 · SteveStudio2

Files touched

Diff

commit a52bd713ad57c8be90cdeb0c7f7b5b5bfe8cc8a0
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed May 6 20:29:43 2026 -0700

    iter 176: rewrite gen prompt — 6 positive headline patterns up front (verb-led/specific-noun/sensory/contrast/time-place/fragment), negative AVOID list now secondary; killed stale gen worker so watchdog respawns w/ new prompt
---
 src/jobs/generate_features.ts | 21 ++++++++++++---------
 src/server/index.ts           | 21 ++++++++++++---------
 2 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/src/jobs/generate_features.ts b/src/jobs/generate_features.ts
index 64b9272..e04ea84 100644
--- a/src/jobs/generate_features.ts
+++ b/src/jobs/generate_features.ts
@@ -20,11 +20,21 @@ const args = process.argv.slice(2);
 const SPECIFIC = (args.find(a => a.startsWith('--biz=')) || '').replace('--biz=', '');
 const COUNT = parseInt(args.find(a => /^\d+$/.test(a)) || '5', 10);
 
-const SYSTEM = `You are a corridor editor writing flattering, magazine-style ~100-word features for businesses on Ventura Boulevard in Sherman Oaks / Encino / Tarzana. Your tone is warm but never gushing — think Conde Nast Traveler shopping guide. You highlight what makes the business feel like part of the neighborhood.
+const SYSTEM = `You are a corridor editor writing flattering, magazine-style ~100-word features for businesses on Ventura Boulevard in Sherman Oaks / Encino / Tarzana. Your tone is warm but never gushing — think Conde Nast Traveler shopping guide.
+
+HEADLINE STYLE — pick ONE of these voice patterns each time, vary across features:
+  1. Verb-led: "Threading Stories Through Linen", "Sharpening Knives Since 1979"
+  2. Specific-noun-first: "The Corner Booth at Anh-Anh", "A Chair in the Window at Mark Morgan"
+  3. Sensory detail: "Brass Hardware, Shaved Ice", "Marble Counters and Espresso Steam"
+  4. Contrast: "Mid-Century Lobby, Cellphone Repair Inside", "Quiet Office, Loud Reputation"
+  5. Time + place: "After Hours at Khanh Nguyen", "Mornings on the 11200 Block"
+  6. Question or fragment: "Why the Line Forms at Anh-Anh's", "Twelve Stools, No Reservations"
+
+NEVER use any of these stale phrasings: "X in Y's Heart", "X Meets Y", "Where X Meets Y", "X Rooted in Y", "Precision Care", "Legal Precision", "Legal Expertise", "Steady Counsel", "Timeless Elegance", "Vibrant Hub". If you find yourself reaching for one of these, stop and try a different opening.
 
 Output a JSON object with EXACTLY these fields:
 {
-  "headline":   "6-10 word title",
+  "headline":   "6-10 word title in one of the 6 styles above",
   "subhead":    "12-18 word subtitle",
   "editorial":  "80-130 word feature paragraph",
   "pull_quote": "8-15 word callout",
@@ -35,13 +45,6 @@ Rules:
 - Never invent specific prices, opening dates, owner names, or claims you can't verify.
 - Lean on the address as a sense of place ("just east of Sepulveda" / "in the white-stone tower at 15821 Ventura").
 - Avoid superlatives ("the BEST"). Prefer concrete sensory details.
-- HEADLINE VARIETY: Do NOT use these overused templates:
-  • "X in Y's Heart" / "X in Y's Vibrant Heart" / "X in Y's Heartbeat"
-  • "X Meets Y" / "Where X Meets Y"
-  • "X Rooted in Y"
-  • "Precision Care in..." / "Legal Precision..." / "Legal Expertise..."
-  • "Steady Counsel" / "Timeless Elegance"
-  Find a fresher angle: a sensory detail, a verb-led opening, a contrast, a small specific noun.
 - Output ONLY the JSON. No preamble, no markdown fences.`;
 
 async function generate(biz: any, model: string): Promise<any> {
diff --git a/src/server/index.ts b/src/server/index.ts
index 9b7616f..f651eab 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -2644,11 +2644,21 @@ app.post('/api/magazine/:id/regen', express.json(), async (req, res) => {
     if (r.rowCount === 0) return res.status(404).json({ error: 'feature not found' });
     const biz = r.rows[0];
 
-    const SYSTEM = `You are a corridor editor writing flattering, magazine-style ~100-word features for businesses on Ventura Boulevard in Sherman Oaks / Encino / Tarzana. Your tone is warm but never gushing — think Conde Nast Traveler shopping guide. You highlight what makes the business feel like part of the neighborhood.
+    const SYSTEM = `You are a corridor editor writing flattering, magazine-style ~100-word features for businesses on Ventura Boulevard in Sherman Oaks / Encino / Tarzana. Your tone is warm but never gushing — think Conde Nast Traveler shopping guide.
+
+HEADLINE STYLE — pick ONE of these voice patterns each time, vary across features:
+  1. Verb-led: "Threading Stories Through Linen", "Sharpening Knives Since 1979"
+  2. Specific-noun-first: "The Corner Booth at Anh-Anh", "A Chair in the Window at Mark Morgan"
+  3. Sensory detail: "Brass Hardware, Shaved Ice", "Marble Counters and Espresso Steam"
+  4. Contrast: "Mid-Century Lobby, Cellphone Repair Inside", "Quiet Office, Loud Reputation"
+  5. Time + place: "After Hours at Khanh Nguyen", "Mornings on the 11200 Block"
+  6. Question or fragment: "Why the Line Forms at Anh-Anh's", "Twelve Stools, No Reservations"
+
+NEVER use any of these stale phrasings: "X in Y's Heart", "X Meets Y", "Where X Meets Y", "X Rooted in Y", "Precision Care", "Legal Precision", "Legal Expertise", "Steady Counsel", "Timeless Elegance", "Vibrant Hub". If you find yourself reaching for one of these, stop and try a different opening.
 
 Output a JSON object with EXACTLY these fields:
 {
-  "headline":   "6-10 word title",
+  "headline":   "6-10 word title in one of the 6 styles above",
   "subhead":    "12-18 word subtitle",
   "editorial":  "80-130 word feature paragraph",
   "pull_quote": "8-15 word callout",
@@ -2659,13 +2669,6 @@ Rules:
 - Never invent specific prices, opening dates, owner names, or claims you can't verify.
 - Lean on the address as a sense of place ("just east of Sepulveda" / "in the white-stone tower at 15821 Ventura").
 - Avoid superlatives ("the BEST"). Prefer concrete sensory details.
-- HEADLINE VARIETY: Do NOT use these overused templates:
-  • "X in Y's Heart" / "X in Y's Vibrant Heart" / "X in Y's Heartbeat"
-  • "X Meets Y" / "Where X Meets Y"
-  • "X Rooted in Y"
-  • "Precision Care in..." / "Legal Precision..." / "Legal Expertise..."
-  • "Steady Counsel" / "Timeless Elegance"
-  Find a fresher angle: a sensory detail, a verb-led opening, a contrast, a small specific noun.
 - Output ONLY the JSON. No preamble, no markdown fences.`;
     const userPrompt = `Business: ${biz.name}
 Address: ${biz.address || 'unknown'}, ${biz.city || ''} ${biz.zip || ''}

← 5d90ce1 iter 175: SESSION_LOG addendum — captures iters 171-175 + th  ·  back to Ventura Corridor  ·  iter 177: SESSION_LOG addendum 2 — prompt-rewrite win confir d607f2b →