News Brief — Design + Setup
✅ DECISIONS LOCKED 2026-06-11 (Worker 🐝, ratified-unless-vetoed by Sam). The open questions below are ANSWERED; sample shipped (
outputs/2026-06-11_14-10_briefing_jewish-news.html— Sam: "looks pretty cool"). The old Path A/B/C email-pipeline debate is SUPERSEDED by Path D — live web pull (how the sample was built; no NEWS_INPUT feeding needed).
LOCKED DEFINITION (v1 — refine after a week of reads)
| Decision | Call | Why |
|---|---|---|
| Pipeline | Path D — live web pull at generate time (WebSearch/RSS at fire time, AI-summarized, portal-published) | Proven by the 6/11 sample; zero manual feeding; NEWS_INPUT stays as an optional Sam-dictation lane |
| Sources | YWN · Matzav · 5TJT · Times of Israel · Hamodia + general wire only when a story crosses into Sam's lanes | Sam's actual reads; [SOURCE]-tagged per output-format rule |
| Sections | TL;DR one-liner → Israel/Klal Yisroel → Frum world (EY) → Close-to-home (Five Towns/Lakewood/Monsey/Rockland) → Markets one-line (VIX/SPY if >1% move) → Parsha thought → Music corner | Sample structure Sam liked + his geo memory + Jewish music standing topic |
| Cadence | Daily Mon–Fri, generated with the 7:30 Day-Ahead (one extra section/link, not a separate ping) + fuller Sunday edition (week roundup + week-ahead) | Sam 6/11: "maybe even daily, just wanna see if it works" — try daily for 2 weeks, drop to Sun-only if noise |
| Shabbos/Yom Tov | Skip Sat + Yom Tov (Hebcal-aware); Sunday edition covers what happened | Obvious |
| Sam's edition | Portal (gated), linked from the Telegram morning ping | Cadence v2 delivery rule |
| Shareable edition | PUBLIC fixed link, no logins — same brief minus markets/personal lanes, published to ONE stable URL that overwrites itself daily (news-today.html on public hookstreetservices.com or standalone; short-URL on top later). Siblings/extended family bookmark once. |
Sam 6/11: outside family, no accounts, self-overriding daily |
| Chanie/family copy | The public link IS the family copy (answers the old open question) | No extra build |
| Owner | Generation = the cloud morning-spine (Brain & Inbox lane); definition = this doc |
What's still open (Sam, whenever): which artists/feeds for the Music corner · any source to ADD/CUT after 2 weeks of reads · the short-URL name if wanted.
v2 REFINEMENTS (Sam voice note, 2026-06-12 Fri PM — locked into the definition)
| Refinement | Rule |
|---|---|
| Source blend | ALL outlets, not just Jewish ones: general wire/mainstream (AP/Reuters/ABC/etc.) AND the Jewish outlets (YWN · Matzav · 5TJT · ToI · Hamodia) — woven into ONE briefing. "Looking at everybody, unbiased." |
| No repeats | Dedup across sources AND across days — a story already covered yesterday appears only if it MOVED. "Don't give me the same stuff and repeating information." |
| Unbiased, not pushy | Synthesize across outlets; never adopt one outlet's framing wholesale. Maintain a growing exclusions list (topics Sam doesn't want pushed) — starts empty, grows from his feedback. |
| Geo layering (over time) | Add ZIP-code-level local layer per user_geographic_scope (11581/Five Towns · Monsey/Rockland · Lakewood · Israel) — incrementally, as wanted, not all at once. |
| Season-aware | Always Hebcal-aware: candles on Erev Shabbos, Yom Tov skips, seasonal context (summer travel, school calendar). "Keep all the seasons in mind." |
| PUBLIC family edition — SECURITY BY CONSTRUCTION | The family page is 100% static: zero JS fetches, zero API keys, zero links into gated surfaces, zero personal/financial/queue content. There is nothing on it to leak. Demo shipped: outputs/news-today.html (stable overwrite-daily name per the v1 lock). Currently on the GATED portal for style review — promoting it to a truly public URL (hookstreetservices.com path or standalone) is a separate hosting decision that requires the isolation review first (feedback_endpoint_auth_audit: probe every route, confirm the public surface shares NO auth context, no phantom leftovers). |
| Demo | outputs/news-today.html built 6/12 from that morning's live-pull briefing, minus markets + personal lanes. Sam to react on style. |
Sam's ask (original)
I wanna fire up a morning news brief. I want to be able to send myself a daily, weekly, monthly, every-other-day news. I wanna dictate what I see, when, and how it's seen. Make it real, useful.
What already exists in the workspace
v1 BOS has news plumbing (NEWS_INPUT tab)
- Tab:
NEWS_INPUT— created bybuildNewsInputSheet_()in v1 Code.js - Columns: Bucket · Headline · Summary · Source · Date · Action / Relevance
- How it gets read:
getTabularInput_(ctx.ss, CFG.sheets.newsInput) - How it appears in reports: rendered in
renderReport_as a NEWS section, controlled by togglesINCLUDE_NEWS_DAILY/WEEKLY/BIWEEKLY/MONTHLYin SETTINGS - Status: plumbing live, but NEWS_INPUT is currently empty because Sam hasn't been feeding it manually
Prior weekend-news briefings (one-shot HTML)
outputs/2026-04-19_15-56_briefing_weekend-news.html(v1)outputs/2026-04-19_16-19_briefing_weekend-news-v3.html(v3, final)- These were Claude-generated one-shots when Sam asked for them ad-hoc — NOT automated
The gap
Sam wants AUTOMATIC. Two missing pieces:
- Source ingestion — something needs to put fresh news INTO
NEWS_INPUTregularly - Dictate what to see — config-driven filters (geographic, topic, urgency)
Three paths forward (recommendation: Path B)
Path A — Manual: Sam types/dictates news into NEWS_INPUT
- Setup: zero (already works)
- How it fires: v1 reports include the NEWS section if INCLUDE_NEWS_* = YES
- Pros: total control over what shows up
- Cons: entirely manual; Sam will not stay disciplined; defeats the "automatic" goal
Path B — Email-to-BOS pipeline (RECOMMENDED) 🎯
Build a Voice-Intake-style channel for news:
- iPhone Wispr Flow dictates news takeaway into Gmail with subject
[NEWS-V1] - Gmail filter auto-labels these
Claude-Briefings/News - Apps Script trigger (similar to existing
PROCESS_QUICK_CAPTURE) reads labeled emails every 30 min, parses into rows, writes toNEWS_INPUT - v1 reports already render NEWS_INPUT — no other change needed
Setup effort: 1 focused session (~2 hrs). Same architecture as Voice Intake (per memory).
How Sam dictates "what / when / how":
- Bucket field in NEWS_INPUT — Markets / Real Estate / Geopolitical / Crypto / Local / Industry — set by subject prefix [NEWS-MKT], [NEWS-RE], etc.
- Action / Relevance field — Sam adds his own one-liner on why it matters
- INCLUDE_NEWS_* toggles — control which report cadence (DAILY/WEEKLY/MONTHLY) shows news
Path C — Web scraper / RSS ingestion
- Apps Script
UrlFetchApppulls RSS feeds (NYT, WSJ, market alerts, geographic-specific) - Filters by Sam-defined keyword list
- Auto-summarizes via Anthropic API (1 token cost per news item)
- Writes to NEWS_INPUT
Setup effort: 1–2 sessions (~3–4 hrs). More complex but truly autonomous.
Cons: spammy without strong filters, easy to over-include junk, expensive in API tokens at scale.
Recommended config for "what Sam wants to see"
Per user_geographic_scope.md memory:
Default geographic scope:
- ZIPs: 11581 / 11516 / 11210 / 11230 / 34747 / 33896 / Miami-Surfside
- Regions: Rockland / Monsey / Forshay / Pomona / Wesley Hills / Lido / Jerusalem / Beit Shemesh
- Topics: Jewish music
Default topical scope:
- Markets: SPY / QQQ / VIX moves >2% · sector rotation events · earnings beats/misses for held tickers
- Real estate: Disney STR market · Orlando · Long Island RE comps
- Hookstreet: anything that affects Eden / Mildred / Mom / Chanie's biz
Cadence design (per Sam's "daily / weekly / monthly / semi-weekly")
| Cadence | Day(s) | Source | What's in it |
|---|---|---|---|
| Daily | Mon-Fri 7 AM (skip Sat/Sun) | NEWS_INPUT entries since last fire | Top 5 takeaways, color-tagged by Bucket |
| Weekly | Sunday 8 AM | NEWS_INPUT entries last 7 days | Themes round-up + week-ahead preview |
| Bi-weekly | Every other Wed 7 AM | NEWS_INPUT entries last 14 days | Mid-stream check (only if INCLUDE_NEWS_BIWEEKLY = YES) |
| Monthly | 1st of month 9 AM | NEWS_INPUT entries last 30 days | Macro themes + stories that compounded |
All toggleable via SETTINGS. v1's INCLUDE_NEWS_* already exists.
What I recommend Sam do NEXT
Option 1 — Quick start (this week):
- Use Path A manually for 7 days. Type 1–2 news items into NEWS_INPUT each morning
- See what cadence + format actually fits your routine
- Then commit to Path B or C based on what hurt the most
Option 2 — Full build (next session):
- I build the Email-to-NEWS_INPUT pipeline (Path B) — same architecture as Voice Intake
- ~2 hrs, you tell me the bucket prefixes you want
- Test for a week, refine
Files for reference
HookStreet-Business-OS/sheets/src/Code.jsline ~1008 —buildNewsInputSheet_HookStreet-Business-OS/sheets/src/Code.js— INCLUDE_NEWS_* togglesoutputs/2026-04-19_*_weekend-news*.html— examples of past one-shot briefings- Voice-intake repo:
zee78900/hookstreet-voice-intake— architecture template
Open questions for Sam
- Path B (email pipeline) or Path C (RSS auto-pull)?
- Geographic + topical filters from
user_geographic_scope.mdmemory still current? - Daily 7 AM or different time?
- Saturday/Sunday inclusion or skip entirely?
- Wife's
chanietreitel@gmail.comget a copy? (per WIFE_TEST_MODE pattern)