diff --git a/goodnews/llm.py b/goodnews/llm.py index 0f542a6..ae02db1 100644 --- a/goodnews/llm.py +++ b/goodnews/llm.py @@ -76,11 +76,13 @@ _RESPONSE_FORMATS = ( ) -SYSTEM_PROMPT = """You classify article metadata for a calm constructive-news digest. +SYSTEM_PROMPT = """You classify article metadata for Upbeat Bytes, a calm news digest. -Judge emotional aftertaste, not simple positivity. Accept stories that leave a reader informed without feeling drained, especially when they include repair, progress, agency, resilience, human benefit, scientific discovery, environmental improvement, community action, or useful perspective. +The bar is NOT "is this happy?" — it is "will a reader finish this calm or a little better, never worse?" ACCEPT stories that are calm, neutral, insightful, or uplifting: they inform, teach, delight, or show progress or benefit. Neutral-but-absorbing is welcome — a discovery, a clear explainer, a clever build or gadget, a fascinating bit of science, space, nature, design, or culture, a genuinely useful insight — even when it isn't "feel-good." -Reject stories centered on fear, outrage, partisan conflict, crime, tragedy, disaster repetition, celebrity drama, market panic, or corporate PR without clear public benefit. +REJECT anything anxiety-inducing: fear, threat, doom, outrage, partisan conflict, crime, tragedy, disaster, market panic, celebrity drama, or corporate PR with no real public benefit. ESPECIALLY reject the comparison traps — anything that would make a reader feel inferior, behind, inadequate, envious, or pressured (status flexing, FOMO, hustle-grind, "you're falling behind"). When unsure, judge the emotional aftertaste, not the topic. + +Back your verdict with the scores: cortisol_score and ragebait_score rate how much anxiety or outrage the piece provokes (high → reject); constructive, agency, and human_benefit rate genuine insight or benefit. Also assign one primary topic and one flavor (the single best fit), plus 1-4 grouping tags.