← back to Commercialrealestate
Daily 6am top-10 report -> steve-office via George (launchd)
c09a42658f732d5d7f6506ba3f7820bc0ab25296 · 2026-06-21 18:07:31 -0700 · Steve
- scripts/run-morning-report.sh: re-rank (analyze.js) + build (morning-report.js) + email via George CLI
- deploy/com.steve.cre-morning-report.plist: launchd 6:00 America/Los_Angeles (loaded + verified send)
- recipient steve-office = steve@designerwallcoverings.com
Files touched
M data/ranked.jsonA deploy/com.steve.cre-morning-report.plistA scripts/run-morning-report.sh
Diff
commit c09a42658f732d5d7f6506ba3f7820bc0ab25296
Author: Steve <steve@designerwallcoverings.com>
Date: Sun Jun 21 18:07:31 2026 -0700
Daily 6am top-10 report -> steve-office via George (launchd)
- scripts/run-morning-report.sh: re-rank (analyze.js) + build (morning-report.js) + email via George CLI
- deploy/com.steve.cre-morning-report.plist: launchd 6:00 America/Los_Angeles (loaded + verified send)
- recipient steve-office = steve@designerwallcoverings.com
---
data/ranked.json | 2 +-
deploy/com.steve.cre-morning-report.plist | 26 ++++++++++++++++++++++++++
scripts/run-morning-report.sh | 20 ++++++++++++++++++++
3 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/data/ranked.json b/data/ranked.json
index ae405d1..9132657 100644
--- a/data/ranked.json
+++ b/data/ranked.json
@@ -21,7 +21,7 @@
"amortYears": 30,
"closingPct": 2.5
},
- "generated": "2026-06-21",
+ "generated": null,
"ranked": [
{
"id": "canby7304",
diff --git a/deploy/com.steve.cre-morning-report.plist b/deploy/com.steve.cre-morning-report.plist
new file mode 100644
index 0000000..87acdb3
--- /dev/null
+++ b/deploy/com.steve.cre-morning-report.plist
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>com.steve.cre-morning-report</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/bin/zsh</string>
+ <string>/Users/stevestudio2/Projects/commercialrealestate/scripts/run-morning-report.sh</string>
+ </array>
+ <key>StartCalendarInterval</key>
+ <dict>
+ <key>Hour</key>
+ <integer>6</integer>
+ <key>Minute</key>
+ <integer>0</integer>
+ </dict>
+ <key>RunAtLoad</key>
+ <false/>
+ <key>StandardOutPath</key>
+ <string>/tmp/cre-morning-report.out</string>
+ <key>StandardErrorPath</key>
+ <string>/tmp/cre-morning-report.err</string>
+</dict>
+</plist>
diff --git a/scripts/run-morning-report.sh b/scripts/run-morning-report.sh
new file mode 100755
index 0000000..667bd18
--- /dev/null
+++ b/scripts/run-morning-report.sh
@@ -0,0 +1,20 @@
+#!/bin/zsh
+# Daily SFV CRE Top-10 report -> emailed to steve-office (steve@designerwallcoverings.com) via George.
+# Wired to launchd com.steve.cre-morning-report (06:00 America/Los_Angeles).
+# Local + free: analyze.js re-ranks (Qwen local), morning-report.js builds the HTML; one George email out.
+export PATH="/usr/local/bin:/opt/homebrew/bin:$HOME/.npm-global/bin:$HOME/.claude/local:$PATH"
+cd "$HOME/Projects/commercialrealestate" || exit 1
+LOG=/tmp/cre-morning-report.log
+echo "===== run $(date) =====" >> "$LOG"
+
+/usr/local/bin/node scripts/analyze.js >> "$LOG" 2>&1
+REPORT_DATE="$(date +%Y-%m-%d)" /usr/local/bin/node scripts/morning-report.js > data/morning-report.html 2>> "$LOG"
+
+TODAY="$(date +%Y-%m-%d)"
+PROMPT="Read /Users/stevestudio2/Projects/commercialrealestate/data/morning-report.html and send its FULL contents as the HTML body of an email using the mcp__george__gmail_send tool with account 'steve-office' to steve@designerwallcoverings.com. Subject: 'SFV CRE - Top 10 Opportunities ($TODAY)'. Send the HTML exactly as-is; do not summarize, truncate, or modify it. Sending that one email is the ONLY action to take."
+
+"$HOME/.npm-global/bin/claude" -p "$PROMPT" \
+ --allowedTools "Read" "mcp__george__gmail_send" \
+ --dangerously-skip-permissions >> "$LOG" 2>&1
+
+echo "===== done $(date) =====" >> "$LOG"
← de42fa5 Add daily morning-report generator (top 10 SFV CRE opportuni
·
back to Commercialrealestate
·
Weekly Crexi refresh job + 38 new SFV listings (62 total) fc9d273 →