Rentv Ad Engine

repo: ~/Projects/rentv-ad-engine · 40 commits · 0 in last 24h, 0 in last 7d ·

Search the build

40 commits indexed

  1. a5fc8be 2026-08-30 deploy-safety: exclude data/ from rsync (TK-10984)
  2. b8c7114 2026-08-30 add creds-in-URL fetch guard to gated pages (TK-10984)
  3. 9a979b6 2026-08-25 creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)
  4. 72e1963 2026-08-07 auto-data-snapshot: 2026-08-07T15:54:54 (1 data files) — package-lock.json
  5. fa2ec3f 2026-08-07 chore: refresh.sh deploy-guard (keep backup until push succeeds, rollback on rsync fail) + version bump (session close)
  6. 6782e69 2026-08-07 add refresh launchd plist
  7. 28ca24e 2026-08-07 scheduled auto-refresh: refresh.sh (deploy only on NEW episodes, extract-frames promo miner, atomic rollback, wobble-tolerant guard) + harvest preserves co-owned podcast manifest + launchd plist
  8. 8993674 2026-08-07 add Analytics as an in-page tab in the directory (iframe of charts.html, toolbar hidden on that view) — concurrent index.html editor confirmed done
  9. 14dc718 2026-08-07 analytics: ad-spend flow sankey (category->sponsor) + new-advertiser acquisition chart (per-episode + cumulative roster)
  10. e1a34a2 2026-08-07 5x: sweep logs + REPORT (favicon 404 fixed, clean twice)
  11. cabb3d4 2026-08-07 5x sweep 1: serve branded favicon route (fixes /favicon.ico 404 console error)
  12. 74b0fd7 2026-08-07 analytics: sponsor-tenure Gantt (first->last episode per client, dots per sponsored ep, teal=active / amber=lapsed) — churn + retention at a glance for ad-sales
  13. e0aef11 2026-08-07 analytics: guest<->sponsor network graph (zero-dep force-directed canvas — gold sponsor hubs sized by reach, teal guests, links = shared episodes)
  14. 9302761 2026-08-07 fix(deploy): HEALTH_URL 9789->9793 (app's real remote port; 9789 is ventura-claw-leads)
  15. 6985df0 2026-08-07 analytics: executive-summary KPI strip (clients/airings/episodes/top client/est. value/guests) + Print-Save-PDF with print stylesheet — hand-to-a-prospect one-pager
  16. c5ebed2 2026-08-07 TK-10343: scale ad-engine harvest to all 123 Vimeo videos (advertisers+guests+airings)
  17. 91e1534 2026-08-07 auto-data-snapshot: 2026-08-07T11:47:33 (14 data files) — data/advertisers.json data/emails.json data/guests.json data/soundcloud/adclips.json data/soundcloud/adclips/873500326-capitol-rivers-commercial.mp3
  18. 59cc977 2026-08-07 analytics: per-client airing-history CSV (one download per advertiser) + guest-location map (geo scatter) + sponsor-overlap matrix (shared-episode heatmap)
  19. 39e94f3 2026-08-07 analytics: add guest-topics word-frequency cloud + ad airing history table (search-all/sortable/column-toggle/CSV-export/reset, per-airing deep-links)
  20. d81a056 2026-08-07 analytics page: add per-client trend sparklines (rising/easing), estimated sponsorship value (transparent model + adjustable rate), and guest analytics (interview/panel/verified split + top companies)
  21. b873f8f 2026-08-07 add Client Analytics page (charts.html): animated liquid-fill share-of-voice gauges + clients-by-airings bars + category donut + airings-over-run timeline; linked from header (Steve-directed)
  22. 2ed2dbe 2026-08-07 auto-data-snapshot: 2026-08-07T11:14:36 (8 data files) — data/soundcloud/adclips.json data/soundcloud/adclips/873500326-capitol-rivers-commercial.mp3 data/soundcloud/adclips/873500326-redwood-mortgage.mp3 data/soundcloud/adclips/881852191-capitol-rivers-commercial.mp3 data/soundcloud/adclips/881852191-redwood-mortgage.mp3
  23. db15224 2026-08-07 wire as-aired ad timeline into dossier (per-airing ▶ deep-link + spoken copy) + add CRE Talk producer page (/Producers/View/618) source link to header (Steve-directed)
  24. 4864f38 2026-08-07 deep-frame build: PROVEN real-browser frame capture (postMessage on authorized rentvreview embed) + FINDING that CRE Talk has no on-screen sponsor slate (sponsors read over static title card). Deliver the real 'exact ad-slate timings' = adairings.json (179 precise as-aired ad spots w/ deep-links + spoken copy from VTT timing) + /api/adairings. UI wiring deferred (index.html held by concurrent soundcloud editor)
  25. 74ce7ce 2026-08-07 engagement emails: name the RIGHT RENTV property per sponsor (podcast vs CRE Talk vs both)
  26. ae55801 2026-08-07 LIVE: mounted at rentv.agentabrams.com/advertisers — Kamatera pm2 rentv-ad-engine :9793 (9789 was taken by ventura-claw-leads), nginx /advertisers block added to rentv vhost with auto-restore guard + backup; app-auth only. Verified 200/301/401 + rentv+ventura unaffected
  27. 290f01a 2026-08-07 regenerate engagement email drafts incl podcast sponsors (Capitol Rivers Commercial); DRAFT-ONLY
  28. 05adab8 2026-08-07 SoundCloud podcast source: harvest+transcribe rentvnews, extract sponsors, clip spoken ads, unify into advertisers.json + Podcasts viewer
  29. 87ad1ae 2026-08-07 make ad-engine mountable under a path prefix (BASE_PATH -> <base> injection + relative client paths); add nginx /advertisers proxy snippet — verified locally, standalone unaffected
  30. c3eae5f 2026-08-07 Full REview reconciliation: producer-page harvest maps 20/22 episodes (16 with official sponsors + real air dates); reconcile-review.py cross-verifies 7 advertisers vs RENTV official record + stamps 15 episode air dates; UI shows REview-verified badge + air dates
  31. 750f51f 2026-08-07 Integrate RENTV podcast (SoundCloud rentvnews) + The REview authoritative source: harvest-rentvreview.py maps 7 episodes with official sponsors/guest/date; dossier shows 'Verified via The REview' block; header podcast+REview links
  32. 6eeb40a 2026-08-07 Phase 2b: web-search address enrichment — 24/29 advertisers now have mailing addresses (16 Exa searches ~$0.16, Steve-approved); cleaned Rockefeller/Provident; deduped firm variants
  33. e9257f6 2026-08-07 Phase 2b: advertiser ADDRESS field via free website lookup (regex + local-LLM fallback) — deep in-video frames blocked by Vimeo DRM + addresses are read verbally not shown; UI shows address (maps link) + needs-web-search flag
  34. 8ae82f6 2026-08-07 Emails tab: batch-drafted client emails for all 29 advertisers (draft-only, never sends), editable + copy + regenerate, DRAFT banner; /api/emails endpoint + scripts/draft-emails.py
  35. a3bfc8b 2026-08-07 per-video DOSSIER flow: Vimeo embed + poster screenshot + in-episode ads + guests + AI synopsis + 'Generate email to client' (local Ollama drafter, /api/email); clean pm2 restart to clear stale code
  36. 0c8d277 2026-08-07 auto-data-snapshot: 2026-08-07T09:05:06 (12 data files) — data/frames/812981342.json data/frames/812982818.json data/frames/830276773.json data/frames/830279080.json data/frames/831673533.json
  37. 012f0c1 2026-08-07 gitignore .venv (local yt-dlp/curl_cffi toolchain)
  38. a441274 2026-08-07 Phase 2 (poster tier): local qwen2.5vl OCR of video title frames — on-screen texts+logos, self-contained thumbnails, poster-confirmed guest verification; UI shows posters + on-screen logos on Coverage/Guest cards
  39. 0c18e9b 2026-08-07 harden extraction: union-find advertiser dedup, email split, regex-site attach; guest hygiene (drop hallucinated/thin, add verified flag); emails + verified badge in UI
  40. 017da30 2026-08-07 initial scaffold: RENTV ad engine — harvest + extract pipeline + viewer

Authors

Agents used

  • none detected

Skills used

  • /soundcloud8
  • /adclips8
  • /frames6
  • /advertisers4
  • /guests2
  • /emails2
  • /favicon1
  • /airings1
  • /episodes1
  • /top1
  • /est1
  • /extract-frames1
  • /title-card1
  • /phone1
  • /pitch1
  • /sortable1
  • /column-toggle1
  • /reset1
  • /easing1
  • /panel1
  • /verified1
  • /adairings1
  • /transcripts1
  • /transcript1
  • /media1
  • /build-soundcloud1
  • /guest1
  • /date1
  • /draft-emails1
  • /thin1

Creative ideas + design notes

Commits with substantial prose (≥120 chars) — the rationale behind each move.

9a979b6 · 2026-08-25 · creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)
Fleet inoculation — opening this basic-auth app with credentials in the URL
poisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves
non-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c5ebed2 · 2026-08-07 · TK-10343: scale ad-engine harvest to all 123 Vimeo videos (advertisers+guests+airings)
- New scripts/extract-frames.py mines the 85 caption-less client PROMO videos'
  poster/title-card OCR (data/frames.json, local qwen2.5vl already run, $0) into
  advertiser records — company name, category, on-card website/phone/email/pitch.
- extract.py rebuild now folds in poster_ocr extractions; tags each merged
  advertiser source=transcript|mixed|poster_ocr + promo_only.
- build-adairings.py: promo_only advertisers get an exact whole-clip promo airing
  and are excluded from the fuzzy transcript scan (fixes Wilshire-Grand 153->2
  phantom over-match).
- Coverage: 123/123 canonical videos extracted (38 transcript + 85 poster-OCR).
  advertisers 30->92, guests 44, airings 179->269 across 94 videos. All $0 local.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
74ce7ce · 2026-08-07 · engagement emails: name the RIGHT RENTV property per sponsor (podcast vs CRE Talk vs both)
Podcast-only sponsors (e.g. Capitol Rivers Commercial) now reference RENTV's 'Weekly CRE News & Views' podcast; cross-source sponsors (Redwood Mortgage) reference both. Fixed in the batch drafter (draft-emails.py show_phrase from episode source) AND the live /api/email drafter (server.js infers from context). Regenerated all 30 drafts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
05adab8 · 2026-08-07 · SoundCloud podcast source: harvest+transcribe rentvnews, extract sponsors, clip spoken ads, unify into advertisers.json + Podcasts viewer
- 3 rentvnews episodes (Ep 9/10/11 'Weekly CRE News & Views') → audio (yt-dlp) + local faster-whisper transcripts ($0), timestamped segments
- piggybacks the UNMODIFIED extract.py (SC transcripts at data/transcripts/<id>.txt + manifest upsert) so podcast sponsors land in the unified advertisers.json → feeds the engagement-email drafter
- clip-ads.py: cuts the ACTUAL spoken-ad audio per advertiser via whisper timestamps (6 clips: Capitol Rivers Commercial + Redwood Mortgage ×3 eps); enriches advertisers.json with per-episode source + adclips + has_podcast; conservative fuzzy-merge fixes the Capitol/Capital whisper-variant split + sanitizes leaked categories
- viewer: Podcasts tab (episode audio, chapter-seek, spoken-ad players, transcript expander, one-click Draft engagement email) + /api/soundcloud,/api/adclips,/api/transcript,/media (Range audio)
- one-command pipeline: scripts/build-soundcloud.sh

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c3eae5f · 2026-08-07 · Full REview reconciliation: producer-page harvest maps 20/22 episodes (16 with official sponsors + real air dates); reconcile-review.py cross-verifies 7 advertisers vs RENTV official record + stamps 15 episode air dates; UI shows REview-verified badge + air dates
Transcript extraction agrees with RENTV official on all 7 recurring sponsors (Rockefeller/Provident exact); ours slightly higher (also catches panels + 4 unparsed episodes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
a441274 · 2026-08-07 · Phase 2 (poster tier): local qwen2.5vl OCR of video title frames — on-screen texts+logos, self-contained thumbnails, poster-confirmed guest verification; UI shows posters + on-screen logos on Coverage/Guest cards
Deep mid-video sponsor-slate frames remain blocked by Vimeo stream DRM (yt-dlp impersonation unavailable on this box); poster frames are the free on-screen asset. Next unblock = RENTV source MP4s or real-browser play-and-seek capture.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

File tree

548 files tracked. Click any to browse the source at HEAD.

Other build journals

← Rentv 826 Tracker  ·  all 4 projects  ·  Rentv Adintel →

Export

commits.csv · feed.atom · project.json · commits.json

rendered in 8ms