Skip to content

Commit 2dc29d8

Browse files
authored
Merge pull request #33 from DevDizzle/mcp/p5-report-tldr
Priority 5 (TF-05): Overnight Edge report leads with TL;DR + pool table
2 parents b74b661 + 0728137 commit 2dc29d8

1 file changed

Lines changed: 25 additions & 9 deletions

File tree

overnight-report-generator/main.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
# replaces the directional-calls table, bullish-only-by-construction handling
2323
# (bullish-share/z-score commentary forbidden), one pool-size number
2424
# (total_signals) only, no internal field/table names echoed into prose.
25-
PROMPT_VERSION = "report_v3_descriptive"
25+
# v4 (2026-07-07, TF-05) = TL;DR-first structure: a new 3-bullet "TL;DR"
26+
# section leads, "Pool Snapshot" moves to second position, prose sections
27+
# demoted below — reorder + summarize only, no new data surface.
28+
PROMPT_VERSION = "report_v4_tldr_first"
2629

2730
# Independent version label for the per-signal SEO call (writes seoMetadata onto
2831
# the public /signals/{ticker} pages). Deliberately ISOLATED from PROMPT_VERSION:
@@ -597,8 +600,28 @@ def generate_report_content(payload, report_date: str | None = None):
597600
- "headline": 2-3 sentence summary leading with the curated pool size
598601
(total_signals) + the dominant theme, then the macro/regime context. No
599602
bull/bear splits, no z-scores, no trade calls.
600-
- "content": full markdown body. REQUIRED sections in this order:
603+
- "content": full markdown body. STRUCTURE PRINCIPLE: a reader — human
604+
or agent — must get the day's takeaway in the first screen. Lead with the
605+
TL;DR and the pool table; the prose sections are supporting depth below.
606+
REQUIRED sections in this order:
601607
# {{title}} — Overnight Edge, {{report_date}}
608+
## TL;DR
609+
EXACTLY three bullets, one line each, no hedging:
610+
1. The curated pool size (total_signals) + the dominant catalyst theme.
611+
2. The regime read: risk_state + the single most load-bearing macro
612+
datum behind it (VIX level/trend or term structure).
613+
3. The one thing a returning reader most needs to know today: the most
614+
significant change_vs_yesterday, divergence, or sector rotation
615+
flag — whichever the data says matters most.
616+
No trade calls, no bullish-share stats, no new claims that the body
617+
does not also cover.
618+
## Pool Snapshot
619+
Render the per_candidate_calls list as a markdown table with columns
620+
Ticker | Flow Read | Basis. The Flow Read is a descriptive
621+
classification of what the flow shows (BULLISH / BEARISH / UNCLEAR),
622+
NOT a trade call; the Basis cites the load-bearing datum. Rows must
623+
match what you also output in the structured `per_candidate_calls`
624+
field.
602625
## Market Pulse
603626
The curated pool size (total_signals — cite this number and NO other
604627
count) + the dominant catalyst themes + one line of macro context. No
@@ -641,13 +664,6 @@ def generate_report_content(payload, report_date: str | None = None):
641664
Same structure for top_bearish. If top_bearish is empty, write a single
642665
line: "No bearish names — the curated pool is bullish-only by
643666
construction."
644-
## Pool Snapshot
645-
Render the per_candidate_calls list as a markdown table with columns
646-
Ticker | Flow Read | Basis. The Flow Read is a descriptive
647-
classification of what the flow shows (BULLISH / BEARISH / UNCLEAR),
648-
NOT a trade call; the Basis cites the load-bearing datum. Rows must
649-
match what you also output in the structured `per_candidate_calls`
650-
field.
651667
## Divergence Watch
652668
For each entry in `divergences`: ticker + flag list + 1-line
653669
interpretation. If `divergences` is empty, write a single line saying so.

0 commit comments

Comments
 (0)