← back to Contact Mailer Ideas
fix daily-batch cron: claude path under launchd PATH, plus LA-tz today compare
00cc511743a2ba7842e063c328b97e85b5a40147 · 2026-05-24 21:09:40 -0700 · SteveStudio2
- generate-daily.sh: pin CLAUDE_BIN=$HOME/.local/bin/claude (launchd PATH was
/usr/bin:/bin only → 'claude: command not found' silently killed the job
on 2026-05-13, 11 days of missing batches)
- com.steve.contact-mailer-daily.plist: re-created at 5:00 AM PT with explicit
PATH + HOME + CLAUDE_BIN env
- viewer renderBanner(): use Intl.DateTimeFormat en-CA/America/Los_Angeles
for 'today' compare (was UTC, hid today's batch every evening after 5pm PT)
- batches/2026-05-24.json: 20 fresh ideas, manually fired to backfill
Files touched
A batches/2026-05-24.jsonM generate-daily.shM viewer/server.js
Diff
commit 00cc511743a2ba7842e063c328b97e85b5a40147
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Sun May 24 21:09:40 2026 -0700
fix daily-batch cron: claude path under launchd PATH, plus LA-tz today compare
- generate-daily.sh: pin CLAUDE_BIN=$HOME/.local/bin/claude (launchd PATH was
/usr/bin:/bin only → 'claude: command not found' silently killed the job
on 2026-05-13, 11 days of missing batches)
- com.steve.contact-mailer-daily.plist: re-created at 5:00 AM PT with explicit
PATH + HOME + CLAUDE_BIN env
- viewer renderBanner(): use Intl.DateTimeFormat en-CA/America/Los_Angeles
for 'today' compare (was UTC, hid today's batch every evening after 5pm PT)
- batches/2026-05-24.json: 20 fresh ideas, manually fired to backfill
---
batches/2026-05-24.json | 450 ++++++++++++++++++++++++++++++++++++++++++++++++
generate-daily.sh | 12 +-
viewer/server.js | 5 +-
3 files changed, 465 insertions(+), 2 deletions(-)
diff --git a/batches/2026-05-24.json b/batches/2026-05-24.json
new file mode 100644
index 0000000..3767fa8
--- /dev/null
+++ b/batches/2026-05-24.json
@@ -0,0 +1,450 @@
+{
+ "batch": "contact-mailer-20260524",
+ "batch_date": "2026-05-24",
+ "vertical": "contact-mailer / email-marketing (Constant Contact-adjacent)",
+ "authority": "ideate-only",
+ "generated_at": "2026-05-24T21:07:19-07:00",
+ "generator": "claude-cli daily",
+ "ideas": [
+ {
+ "idx": 1,
+ "name": "UnsubscribeRefund",
+ "angle": "Refund the sender $0.01 every time a subscriber unsubscribes — burns budget on bad lists",
+ "target": "CFOs and growth leads at Series B SaaS who suspect their email lists are rotting",
+ "diff": "Inverts the incentive: list quality is enforced by a real P&L line, not a dashboard chart",
+ "headline": "Your Bad List, Refunded",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Survey 30 growth ops leads on whether finance would actually fund a self-penalty budget line"
+ },
+ {
+ "step": "MVP",
+ "what": "Stripe-backed escrow + SMTP relay that debits per unsub; $99/mo base + $0.005/send"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "r/EmailMarketing case study + Pavilion CFO slack channels"
+ }
+ ]
+ },
+ {
+ "idx": 2,
+ "name": "MailerLawyer",
+ "angle": "Every send routed through a state-by-state compliance attorney bot before it leaves the outbox",
+ "target": "Cannabis, crypto, supplement, and gambling brands operating in 50-state-patchwork legality",
+ "diff": "Pre-send legal review at machine speed — CAN-SPAM + state UDAP statutes + industry-specific (CCPA, Prop 65, FTC endorsement guides)",
+ "headline": "Pre-Send Legal, In Seconds",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Pull 50 violation notices from state AG sites, see if rules-engine would have caught each"
+ },
+ {
+ "step": "MVP",
+ "what": "Chrome extension over Mailchimp/Klaviyo; $299/mo + $19 per audited send"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Cold outreach to cannabis brand marketing leads via LeafLink directory"
+ }
+ ]
+ },
+ {
+ "idx": 3,
+ "name": "RuralRouteMail",
+ "angle": "Email + physical postcard hybrid targeting US rural ZIPs where direct mail still outperforms",
+ "target": "Farm equipment dealers, rural insurance brokers, small-town politicians",
+ "diff": "One campaign → email to digital-first half of list, USPS Every Door Direct Mail to rural other half, unified analytics",
+ "headline": "Where Mailchimp Can't Reach",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Test campaign for one John Deere dealer comparing email-only vs hybrid response rates"
+ },
+ {
+ "step": "MVP",
+ "what": "List uploader + EDDM API; $0.42 per postcard, $0.01 per email, no monthly"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Sponsor Farm Progress Show and Rural Mainstreet podcast"
+ }
+ ]
+ },
+ {
+ "idx": 4,
+ "name": "PaperTrailEsq",
+ "angle": "Court-admissible email send-receipts with timestamped notary-grade evidence packets",
+ "target": "Lawyers serving notices, landlords serving eviction warnings, debt collectors",
+ "diff": "Every send produces a Rule 902(13) self-authenticating PDF with cryptographic timestamp chain + SMTP DKIM proof",
+ "headline": "Email That Holds Up In Court",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Interview 10 landlord-tenant attorneys: would they pay $5/send for a forensic receipt"
+ },
+ {
+ "step": "MVP",
+ "what": "Send-via-our-relay + PDF generator + USPTO timestamp service; $99/mo + $5/send"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Sponsor state bar CLE webinars on electronic service of process"
+ }
+ ]
+ },
+ {
+ "idx": 5,
+ "name": "EmailMatins",
+ "angle": "Mailer that only sends during your subscriber's first coffee — measured per-recipient circadian timing",
+ "target": "Newsletter operators, paid Substacks, daily-digest brands",
+ "diff": "Predicts each individual's wake-time from past open patterns and lands in inbox 8 minutes before; not just timezone or 'best time'",
+ "headline": "Land With Their First Sip",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Replay one Beehiiv user's six months of opens and compute uplift if sends were per-person retimed"
+ },
+ {
+ "step": "MVP",
+ "what": "API + SMTP relay any ESP can route through; $0.0008/send"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Cold-DM top 200 paid newsletters with their personalized uplift projection"
+ }
+ ]
+ },
+ {
+ "idx": 6,
+ "name": "ChurchFloorPlan",
+ "angle": "Email + bulletin print + pulpit-screen slides from one composer, built for church communications staff",
+ "target": "Director of Communications at 500-2500 person Protestant churches",
+ "diff": "Designed around Sunday-bulletin workflow + lectionary calendar — not adapted from generic marketing software",
+ "headline": "One Composer. Three Sundays.",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Demo to 15 church comms directors via Church Communications Facebook group"
+ },
+ {
+ "step": "MVP",
+ "what": "Composer + email + InDesign-export bulletin + ProPresenter export; $149/mo per church"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Booth at NRB Convention and Outreach Conference"
+ }
+ ]
+ },
+ {
+ "idx": 7,
+ "name": "MailerWell",
+ "angle": "Mental-health-first email tool that caps your sends and shames over-mailing instead of upselling",
+ "target": "Indie creators and solopreneurs guilty about emailing 'too much'",
+ "diff": "Refuses to send more than 4 broadcasts/month per list; positions list-fatigue prevention as the product",
+ "headline": "The Mailer That Says No",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Twitter poll among indie creators: would you pay for software that limits you?"
+ },
+ {
+ "step": "MVP",
+ "what": "Send relay with hard send-cap + weekly 'inbox-health' report; $19/mo"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Sponsor Indie Hackers and 'Founder Friday' style podcasts"
+ }
+ ]
+ },
+ {
+ "idx": 8,
+ "name": "BurstSender",
+ "angle": "Single-day pay-per-send mailer — pay $80, blast 50k contacts, walk away, no account",
+ "target": "Event organizers, political volunteers, one-time crisis comms (school closure, HOA flood, gala invite)",
+ "diff": "No subscription, no warmup, no account dashboard — bring a CSV, pay Stripe, send. Built to be used once.",
+ "headline": "One Blast. No Account.",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Run Google Ads on 'send mass email one time' and measure landing-page conversion"
+ },
+ {
+ "step": "MVP",
+ "what": "Stripe checkout → CSV upload → SES relay; flat $80 per 50k or $0.002/send"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "SEO landing pages for every 'one-time mass email' long-tail query"
+ }
+ ]
+ },
+ {
+ "idx": 9,
+ "name": "DiasporaPost",
+ "angle": "Email tool for diaspora communities — multilingual, RTL, WhatsApp+email dual-channel",
+ "target": "Diaspora associations (Armenian, Filipino, Eritrean, Vietnamese) running event + fundraising lists",
+ "diff": "Native bidi text editor, transliteration, WhatsApp Business API parity, currency-aware fundraising widgets",
+ "headline": "Built For Communities Abroad",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Talk to 10 diaspora-org executive directors: do current ESPs break their workflows?"
+ },
+ {
+ "step": "MVP",
+ "what": "Composer + WhatsApp BSP integration + dual-send analytics; $59/mo per org"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Sponsor Diaspora Investment Forum; outreach via consulate cultural attachés"
+ }
+ ]
+ },
+ {
+ "idx": 10,
+ "name": "PledgeBack",
+ "angle": "Every email subscriber pledges $1/year just by subscribing; auto-bills annually, refundable on unsub",
+ "target": "Independent journalists, niche newsletter writers, podcasters wanting reader-funded baseline",
+ "diff": "Inverts the freemium model — subscription is *paid by default* with one-click refund, kills freeloader skew",
+ "headline": "Free To Read, $1 To Stay",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Pre-launch waitlist with $1 hold; measure deposit-conversion among 1k subscribers"
+ },
+ {
+ "step": "MVP",
+ "what": "Stripe pre-auth + email signup widget + auto-refund flow; 5% of pledges"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Pitch to Substack writers under 5k subs frustrated by paid-tier conversion"
+ }
+ ]
+ },
+ {
+ "idx": 11,
+ "name": "EnvelopeAR",
+ "angle": "Email images that, when scanned by phone camera, render an AR layer over the recipient's real room",
+ "target": "Furniture retailers, wallpaper/paint brands, plant nurseries, tattoo artists",
+ "diff": "First-class AR-in-email primitive — no app install, uses Apple Quick Look + Android Scene Viewer",
+ "headline": "See It In Your Room. From Email.",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Test 3 furniture brands' click-to-AR rate vs static product image"
+ },
+ {
+ "step": "MVP",
+ "what": "Hosted USDZ/GLB pipeline + email-image tag generator; $199/mo + $0.10 per AR scan"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Shopify App Store + Klaviyo partner directory"
+ }
+ ]
+ },
+ {
+ "idx": 12,
+ "name": "OfflineCadence",
+ "angle": "Email scheduler that adapts to your subscribers' offline events — local weather, school dismissal, game days",
+ "target": "Local retailers, restaurants, youth-sports leagues, school PTOs",
+ "diff": "Sends tied to *recipient's external world*, not sender's calendar — 'send to soccer-mom list 30 min after final whistle'",
+ "headline": "Mail When Their Day Allows",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Pilot with 5 youth sports leagues; measure open-rate uplift vs scheduled send"
+ },
+ {
+ "step": "MVP",
+ "what": "Trigger library (weather, school, sports API) + send relay; $79/mo per org"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "State athletic association partnerships + PTA Today magazine ads"
+ }
+ ]
+ },
+ {
+ "idx": 13,
+ "name": "DeadLineMail",
+ "angle": "Dead-man's-switch mailer for journalists, activists, dissidents — pre-loaded sends fire if you don't check in",
+ "target": "Investigative reporters, human-rights workers, whistleblowers, terminal patients with messages to leave",
+ "diff": "Cryptographic timed-release with multi-jurisdiction redundancy; designed for adversarial conditions, not marketing",
+ "headline": "If Something Happens To Me",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Interview CPJ and EFF: would they recommend it to at-risk reporters"
+ },
+ {
+ "step": "MVP",
+ "what": "GPG-encrypted vault + check-in interval + multi-region SMTP exit; $9/mo"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Partner with Freedom of the Press Foundation, sponsor SecureDrop conferences"
+ }
+ ]
+ },
+ {
+ "idx": 14,
+ "name": "DocketBlast",
+ "angle": "Auto-mailers triggered by new court filings — bankruptcy lawyer's list gets PDF the morning each new bk hits",
+ "target": "Bankruptcy, foreclosure-defense, personal-injury, eviction-defense attorneys with referral pipelines",
+ "diff": "PACER + state-court scrapers + drafted-mailer queue per attorney — turns dockets into outreach without manual review",
+ "headline": "Dockets Into Mailers, Daily",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Walk 10 bk attorneys through a sample daily docket-mailer; gauge willingness to pay"
+ },
+ {
+ "step": "MVP",
+ "what": "PACER ETL + county-court scrape + drafted-email queue; $399/mo per attorney"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "American Bankruptcy Institute conferences + state bar listservs"
+ }
+ ]
+ },
+ {
+ "idx": 15,
+ "name": "VoicebackList",
+ "angle": "Subscribers can reply to your mailer with a voice memo; you get a transcript + sentiment digest weekly",
+ "target": "Coaches, fitness creators, niche newsletter writers who want real reader feedback at scale",
+ "diff": "Surfaces voice-based reader response as a first-class signal; collapses 5,000 replies into a single 5-minute audio digest",
+ "headline": "Hear What Your Readers Say",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Pilot with 5 coaches who already invite email replies; measure voice-reply rate"
+ },
+ {
+ "step": "MVP",
+ "what": "Reply-to address + Whisper transcription + weekly sentiment digest; $49/mo"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Pitch on coaching podcasts (Pat Flynn, Amy Porterfield audience adjacent)"
+ }
+ ]
+ },
+ {
+ "idx": 16,
+ "name": "MailMutual",
+ "angle": "Cooperative mailing platform owned by sender-members; no investors, surplus rebated to senders annually",
+ "target": "Nonprofits, food co-ops, credit unions, activist orgs ideologically opposed to surveillance-capitalist ESPs",
+ "diff": "501(c)(12) co-op structure; member-elected board; explicitly *not* a SaaS — the antithesis of vendor lock-in",
+ "headline": "An ESP Owned By Senders",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Survey 30 nonprofit ops directors on willingness to switch for ideological reasons"
+ },
+ {
+ "step": "MVP",
+ "what": "Open-source platform + co-op legal entity + $500 membership share + $0.001/send"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "NTEN Nonprofit Tech Conference + USFWC co-op directory"
+ }
+ ]
+ },
+ {
+ "idx": 17,
+ "name": "InboxArchaeologist",
+ "angle": "Ingests your 10-year Gmail archive and surfaces high-affinity contacts you forgot — drafts re-warm mailers",
+ "target": "Solo consultants, fractional execs, indie agency owners trying to revive dormant networks",
+ "diff": "Not a CRM enrichment tool — it mines *your own past relationship signal* (reply latency, thread depth, last touch) to score reconnect targets",
+ "headline": "The Network You Already Have",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Run on 5 founders' inboxes; do they actually reconnect with the top-10 surfaced names"
+ },
+ {
+ "step": "MVP",
+ "what": "Gmail OAuth + scoring engine + drafted mailer generator; $39/mo"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Sponsor Justin Welsh's solopreneur newsletter + Modern Fractionals community"
+ }
+ ]
+ },
+ {
+ "idx": 18,
+ "name": "NewsletterAuction",
+ "angle": "Marketplace where readers bid for one sponsored insertion in a specific newsletter issue",
+ "target": "Indie newsletter operators with 5k-50k subs; sponsors who want surgical placement",
+ "diff": "Per-issue, per-newsletter, eBay-style — operator sets reserve, sponsors compete, cleared sponsor gets one slot",
+ "headline": "One Issue. One Sponsor. Highest Bidder.",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Run 10 manual auctions on Twitter for friendly newsletters; measure clearing price vs Passionfroot fixed rate"
+ },
+ {
+ "step": "MVP",
+ "what": "Auction engine + Stripe escrow + send-verification webhook; 10% of clearing price"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Recruit anchor newsletters from /r/newsletters and the Beehiiv top-100 leaderboard"
+ }
+ ]
+ },
+ {
+ "idx": 19,
+ "name": "PostBoxOps",
+ "angle": "On-call digest mailer for SREs — every incident, postmortem, and rotation handoff sent as a structured email thread",
+ "target": "Platform engineering teams at 50-500 person tech companies running PagerDuty + GitHub",
+ "diff": "Email-first incident comms with thread-as-incident-record; embeds runbooks, escalation timers, and ack buttons inline",
+ "headline": "On-Call Lives In Email",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Interview 10 SRE leads about pain with PagerDuty digest emails + Slack handoff loss"
+ },
+ {
+ "step": "MVP",
+ "what": "PagerDuty webhook + GitHub Actions + threaded mail relay; $20 per on-call engineer/mo"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "SREcon sponsorship + SRE Weekly newsletter feature"
+ }
+ ]
+ },
+ {
+ "idx": 20,
+ "name": "ColdStamp",
+ "angle": "Cold-email tool that prints + USPS-mails a physical 'I emailed you' stamped letter as second touch",
+ "target": "Enterprise SDRs targeting Fortune 500 execs whose email is screened by EAs",
+ "diff": "Bypasses inbox filters by following up the email with a postal letter; integrates with Outreach/Salesloft as a sequence step",
+ "headline": "When Their EA Filters You Out",
+ "action_items": [
+ {
+ "step": "VALIDATE",
+ "what": "Run side-by-side test for 3 enterprise sales teams; measure reply-rate uplift"
+ },
+ {
+ "step": "MVP",
+ "what": "Lob.com integration + Outreach plugin; $4 per letter + $99/mo per seat"
+ },
+ {
+ "step": "DISTRIBUTION",
+ "what": "Pavilion Enterprise Sales Slack + Outreach App Marketplace listing"
+ }
+ ]
+ }
+ ]
+}
diff --git a/generate-daily.sh b/generate-daily.sh
index c77461f..0e331dc 100755
--- a/generate-daily.sh
+++ b/generate-daily.sh
@@ -13,6 +13,16 @@ mkdir -p "$ROOT/batches" "$ROOT/logs"
# Per MEMORY: NEVER use Anthropic API key — strip both before claude CLI
unset ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN
+# 2026-05-13 incident: launchd PATH didn't include ~/.local/bin → `claude` not found
+# → 11 days of silent missing batches. Pin claude to absolute path and broaden PATH
+# so jq, python3, scp, ssh, rsync resolve under launchd's minimal env.
+CLAUDE_BIN="${CLAUDE_BIN:-$HOME/.local/bin/claude}"
+export PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:$PATH"
+if [ ! -x "$CLAUDE_BIN" ]; then
+ echo "$(date -Iseconds) FATAL: claude CLI not found at $CLAUDE_BIN" >> "$LOG"
+ exit 1
+fi
+
# Idempotent: skip if today's batch already exists
if [ -f "$OUT" ]; then
echo "$(date -Iseconds) batch ${DATE} already exists, skipping" >> "$LOG"
@@ -55,7 +65,7 @@ Return ONLY the JSON object. No prose."
echo "$(date -Iseconds) running claude generator for ${DATE}" >> "$LOG"
# Try claude CLI; capture stdout
-RAW="$(claude -p "$PROMPT" 2>>"$LOG" || true)"
+RAW="$("$CLAUDE_BIN" -p "$PROMPT" 2>>"$LOG" || true)"
# Extract JSON: prefer first {...} block; fall back to fenced code block if claude wrapped it
JSON=$(printf '%s' "$RAW" | python3 -c "
diff --git a/viewer/server.js b/viewer/server.js
index 2856a26..13afadb 100644
--- a/viewer/server.js
+++ b/viewer/server.js
@@ -400,7 +400,10 @@ async function loadBatches(){
}
function renderBanner(list){
const banner = document.getElementById('banner');
- const today = new Date().toISOString().slice(0,10);
+ // Batches are stamped with PT date (date +%Y-%m-%d on Mac2 in LA), so compare
+ // in LA time — using UTC would show "No batch yet" every evening after 5pm PT
+ // when UTC ticks over to the next day. (2026-05-24 fix.)
+ const today = new Intl.DateTimeFormat('en-CA',{timeZone:'America/Los_Angeles'}).format(new Date());
const todays = list.find(b => b.date === today);
// Compute next 5am PT
const now = new Date();
← d53ebe6 snapshot: 1 file(s) changed, +1 new
·
back to Contact Mailer Ideas
·
batches/2026-05-25.json: 20 ideas, first auto-fire after cro 6c79c78 →