Curated insights, not raw logs. Updated periodically.
- Analytical, systems-oriented, values clarity over speed
- Running All7s Games mostly solo (one employee handles Amazon PPC)
- Main bottleneck: time and bandwidth
- Before any resource commitment → needs clear reason, small test, measurable result
| Date | Event |
|---|---|
| Jan 16 | Gianna's birthday |
| Feb 17 | Yamaris's birthday |
| Aug 1 | Ramon's birthday |
| Aug 21 | Julian's birthday |
| Nov 7 | Wedding anniversary |
Critical: Julian (son) is allergic to eggs, milk, and nuts.
- TACOS (Total ACOS): Total PPC Spend ÷ Total Revenue (all sales, organic + PPC). Target: ~10%. Measures advertising efficiency across entire product revenue, not just ad-attributed sales.
- Only brand being actively grown — all others are restock-only
- Audience: Women 50+, empty nesters, seeking social connection
- Core message: Friendship requires effort. Gathering creates meaning.
- Funnel: Social content → Free Canasta course (Kajabi) → Email list (Klaviyo) → Products
- Grow email list via free Canasta course
- Build consistent social presence
- Launch $60 premium Canasta set (Q4)
- Start building player community
- CANSET: $16K revenue, 592 units, TACOS 7.8%
- CAN2P: $6.2K revenue, 393 units, TACOS 5.4%
- SH2: $925 revenue, 59 units, TACOS 8.1% (restock-only)
- Both Canasta products ~92% organic sales
- CANSET: $26.99 → $19.99, 500 units committed
- Profit ~$5/unit at deal price (tight)
- Strategy: Pull back PPC on CANSET during deal week (badge does the work), shift budget to post-deal for BSR compounding
- Stock: ~2,586 total (786 FBA + 1,800 AWD)
- Prep needed: Email blast, social push, PPC Mother's Day keywords
- ClickUp:
86ewzht84
- ABC's "The View" featured CanastaSets.com on "View Your Deal" → All7s sales 2x+ normal
- Mechanism: Millions of women 50+ saw canasta on TV → searched Amazon → All7s is #1 with Amazon's Choice → bought ours
- Key learning: Competitor TV deals drive category-wide Amazon demand. Strong ranking = biggest beneficiary even from someone else's marketing spend
- CAN2PPLS — Plastic Canasta 2-Pack, $19.99, standalone listing, 500 units. COGS $3.71, profit ~$5.75/unit. Undercutting Copaq ($21.99).
- CAN6PPLS — Plastic Canasta 6-Pack, 200 units
- Scrapped: CAN2P250 (250th anniversary redesign) — thin margins ($3.33/unit), time-limited, $1K design cost ate 25-30% of total profit
- Ramon wants help with cashflow projections, reorder timing, cash conversion
- Data available: BQ orders, fees, PPC, settlements
- AI scoring app (photo → score)
- Local game table finder/community
- Mexican Train Dominoes — strongest near-term expansion (same demo, same game night groups, physical differentiation potential)
- Rummikub and Bunco also in the same audience tier
- Mahjong is 8-10x more searched than Canasta in the US — long-term expansion target after Canasta dominance
- Hand & Foot is ~half of Canasta search volume (variant, not competitor)
- Mahjong IG content world mirrors Canasta's target audience exactly (women 35-65, social gathering)
- No em dashes anywhere — Ramon is firm on this
- ALL client-facing content must run through humanizer before Ramon sees it (Mar 22 mandate). This includes: Klaviyo campaigns, customer service replies, social media posts, blog content, any external-facing writing. No exceptions.
- Humanizer tool:
node skills/operator-humanizer/scripts/humanize.js analyze -f <file> - Message chunking: Split responses over 800 characters into multiple messages (Slack crops)
- Coupon code: CANASTA10 (permanent)
- Store URL: Amazon storefront with attribution tag
- Sign-off: "Warmly, Ramon"
- Better Hand #1 performance: 48.68% open rate, 6.58% CTR — excellent baseline
- PS rotation: reply-only prompts (story/strategy/feedback). No links. Amazon CTA uses the 1 allowed link.
- Brand socials are "playall7s" (FB/IG/TT/YT) but dormant. Video content going to "Ramon Gonzalez" personal pages per agency advice.
- Stories about women who built connection on purpose
- Two pillars: Famous women (15 figures) + Ritual themes (15 topics)
- No selling — this is the community email
- Plain text HTML only (Georgia 20px, 1.5 line height, no images/logos)
- PS rotation: ALL reply-engagement questions, no links (socials are dormant, links hurt Primary inbox placement)
- Sender: "Ramon from All7s" hello@all7s.co
- Multi-phase workflow: Thu draft → Ramon review → revisions → publish blog + Klaviyo
- Evergreen flow (not campaigns) — each subscriber gets #1 first, then weekly
- Sent so far: #1 Julia Child (Mar 2), #2 Eva Gabor (Mar 8), #3 Betty White (Mar 16), #4 Lucille Ball (Mar 23), #5 Dolly Parton (Mar 30)
- Publisher script:
~/amazon-data/collectors/sunday_ritual_publisher.py(handles Shopify + Klaviyo + logging, no LLM needed) - Auto-trigger: Signal watcher cron checks every 2 min for dashboard selection, runs full pipeline
- No approval gate for content. Ramon selects topic from dashboard, blog publishes + Klaviyo campaign created automatically.
- Ramon schedules manually. Campaign is ready with send time pre-set, but not scheduled. Ramon reviews and clicks Schedule.
- Dashboard auto-trigger: Selecting a topic posts a message to #chloebot which triggers the full pipeline (no polling cron).
- Famous women policy: Only 5 per month. Must have natural connection to ritual/togetherness. No forced tie-ins.
- Use all7s.co/courses (NOT canastacourse.com) for all blog CTAs and links going forward
- Ramon mandate: if it CAN be hardcoded via .py, hardcode it.
- All emails rendered via
templates/render_email.pywith fixed template files - Templates lock in: Klaviyo tags (
{{ person.first_name|default:'friend' }}), greetings, sign-offs, coupon codes, URLs, P.S. rotation - LLM only supplies dynamic body content. No more regenerating structural elements.
- Applies to everything going forward, not just emails.
- Cron:
839cd01a— Sundays 9 PM EST, ClickUp:86ewzma6f - Script:
~/amazon-data/collectors/weekly_klaviyo_growth.py - Delivers to #mar_marketing: new subs, total list size, growth %, motivational quote
- Current stats (Mar 18): 207 subscribers, 22 new that week (11.9% growth)
- Plain text only. No HTML at all. (Updated March 4, 2026)
- Font size: 20px (Georgia serif, 1.5 line height) for all emails
- No Klaviyo templates, no images/logos/social icons
- No bold, no anchor-text links. Bare URLs only.
- Minimize links (1 content link + unsubscribe)
- Unsubscribe tag: Every email MUST include
{% unsubscribe %}as the last line (after P.S.). Don't rely on Klaviyo's auto-add (renders in HTML format, breaks plain text style). - Klaviyo personalization:
{{ person.first_name|default:'friend' }}
- Can't create flows via API (UI-only)
- Can't PATCH campaign-owned templates (create standalone + assign)
- CAN schedule campaigns via API but Ramon prefers to schedule manually. Set up everything (send time, template) but do NOT call
/api/campaign-send-jobs. Ramon clicks Schedule in Klaviyo after review. - Campaign name vs subject: Campaign name includes
#N(internal tracking). Email subject does NOT (customer-facing). Example: campaign "The Sunday Ritual #5: ..." → subject "The Sunday Ritual: ..."
- All emails landing in Gmail Promotions tab (both HTML and plain text)
- Sender reputation issue: all7s.co is new sending domain, ~70 recipients is too small for Gmail to differentiate
- Fix is time + engagement signals (opens, replies, manual moves to Primary). No quick fix.
- Task ID auto-recognition: Any string matching
86ewr*or86ewt*= ClickUp task ID → look up inclickup_config.json→task_to_cronto resolve cron job name + UUID. No prefix needed from Ramon. - All 40+ cron jobs tracked as tasks in ClickUp (list 901816342276)
- Integration script auto-posts comments and marks complete
- ClickUp is Ramon's source of truth for cron job status
- Cron Registry Self-Healing: Daily sync auto-re-enables disabled jobs (unless marked Retired/Intentionally Disabled), detects ClickUp overdue tasks (2+ days).
openclaw cron listonly shows enabled jobs — disabled ones still exist injobs.json.
- BigQuery dataset:
amazon_rawin projectlustrous-bounty-460801-b9(39+ tables) - Historical SQLite data migrated (159,423 rows across 5 tables). BQ is sole data store.
- SQLite fully retired (Mar 15): amazon.db is a frozen archive. No active script reads or writes. 8 scripts migrated from dual-write/SQLite reads to BQ-only.
- SQLite cleanup complete (Mar 23): 13 dead SQLite scripts archived to
~/amazon-data/archived_sqlite_scripts/. Monthly SEO cron updated to reference BQ. Zero active scripts or crons reference SQLite. Theamazon.dbfile (96MB) remains as inert archive — safe to delete anytime. Do NOT monitor or report on SQLite in health checks. - Airbyte: DECOMMISSIONED (Mar 15). ~$10/mo saved.
- Replacement architecture (built Mar 11-15):
- Tier 1: Amazon Ads email reports — 5 daily reports (Campaign, Placement, Targeting, Advertised Product, Search Term) delivered to Gmail →
ads_report_processor.py→ BQ. Wired intogmail_inbox_router.py(Mar 14). BQ tables:ads_console_campaigns,ads_console_search_terms,ads_console_targets,ads_console_placements,ads_console_products - Tier 2: SP-API scheduled reports — 14 schedules (8 types × 2 marketplaces), hourly polling via
scheduled_report_poller.py. Settlement reports auto-detected. - Tier 3: On-demand reports — 3/day staggered (7AM Inventory Planning, 8AM Merchant Listings, 9AM Sales & Traffic). Gentle approach: 1/hour, never parallel.
- Tier 4: Financial Events API — daily 5:30 AM, 30-day lookback. QBO prep.
- Tier 1: Amazon Ads email reports — 5 daily reports (Campaign, Placement, Targeting, Advertised Product, Search Term) delivered to Gmail →
- SP-API rate limit strategy: 2-hour gaps between all calls. Bursts cause Amazon to flake.
- Settlement Report: API access confirmed. 90-day retention. Build when QBO comes (~Q2). ClickUp: 86ewvn06j
- Attribution API: Access confirmed. Advertiser: Smart Buyers United (580509897613930109). Build when off-Amazon campaigns launch. ClickUp: 86ewvn0mt
- Account under Ramon's company domain. Chloe (chloemercer32) has admin access.
- Service account granted Viewer access to GA4 property
properties/521314991(all7s.co) - Account: 381679081
- Libraries:
google-analytics-data,google-analytics-admininstalled - Working: can pull activeUsers, pageViews, sessionDuration, traffic sources, etc.
- Integrate into: Monthly SEO Strategy Review cron (runs 3rd of each month, 10 AM EST, job
467a1910) - Also useful for: GSC Weekly Report enrichment, content performance tracking
- Skills + scripts synced nightly to Drive for Ramon's review
- Internal files are source of truth; Drive stays current
- Service account:
openclaw-sheets@lustrous-bounty-460801-b9.iam.gserviceaccount.com
- Tiered routing:
@goven.com/@all7s.co→ trusted session; all others → untrusted (restricted)
- gog gmail watch serve is the PRIMARY system — runs via OpenClaw gateway, catches emails near-instantly via Google Pub/Sub push
- Process restarts daily at 3:15 AM with gateway restart, subscription auto-renews every 720 min
- Polling cron is the BACKUP — "Gmail Inbox Processor" runs every 30 min (
61b00e02, ClickUp86ewwxu07) as safety net - Processes ALL email types: HARO/SOS, Amazon Ads reports, trusted senders, external
- Playbook:
playbooks/gmail-poll-safety-net.md - Mar 20 fix: HARO silent processing. Watcher WAS processing HARO/SOS emails correctly, but the hook instruction said "if zero qualifying: do nothing, no alerts." Emails were processed and archived silently with no proof of life. Fixed: HARO hook now always posts to #chloelogs (both qualifying hits AND "no relevant opportunities" with timestamp). Also updated polling cron to use
is:unreadinstead ofin:inboxfor broader coverage, and fixed archive commands to usegog gmail mark-read+gog gmail archive. - Mar 17 incident: 4 Ads report emails forwarded in rapid succession caused processing queue pileup + LLM timeout → circuit breaker tripped. Root cause was manual rapid-fire forwarding, not a watcher bug.
- Circuit breaker overhauled (Mar 17): Raised to 20 emails/5 min (was 5/60s), auto-resets after 5 min (no more permanent lockout)
- Ads report sender change (Mar 17): Amazon changed from
@amazon.comto@ads.amazon.com. Hook updated to match@*.amazon.comsubdomain. 18 stale reports backfilled (Mar 18-21). - Unified email routing (Mar 21):
shared_config/email_routes.json— single JSON for both JS watcher hook and Python poller. Adding new email routes is now 1 edit instead of 2. - LaunchAgent
ai.openclaw.tailscale-retrystill exists for Tailscale boot reliability - gog OAuth app on Google Production status (permanent tokens)
- TODO: File gog bug report on GitHub for the stale historyId issue
- Model lineup: Claude Opus 4.6 (main), OpenAI Codex 5.2 (fallback), Gemini Flash (heartbeat)
- Slack
textChunkLimitset to 800 chars (auto-chunks messages) blockStreaming: trueenabled (prevents message overwrites)- Gateway self-restart is broken. Auto-update cron killed the gateway twice (Mar 9-10). Replaced with external LaunchAgent
ai.openclaw.auto-update(3:15 AM) +ai.openclaw.gateway-watchdog(every 5 min). Never let gateway restart itself. openclaw cron run(manual trigger) does NOT work. Only schedule-based auto-fire works. For manual reruns, run underlying scripts directly.- Dual-process port conflict: If
openclaw gateway installruns while foreground gateway is active, creates port 18789 conflict. Always stop existing process first. - OpenClaw Update Check (
851a2dd4): Daily 2:28 PM, alerts #chloebot only when update exists. ClickUp:86ewwejxm. - Port reservations: 18789 (gateway), 18800 (browser), 18801 (review scraper)
- UPS installed (Mar 19, 2026) — protected against power hiccups
- SSH (Remote Login) is NOT enabled — enable for future remote troubleshooting
- NoMachine is the current remote access method
- Local IP:
192.168.68.200
- Ramon posts → Chloe creates ClickUp task in list 25307274 ("Ramon's Tasks")
- Links get researched/summarized; plain text saved as-is
- Reacts with 👀 to confirm
- Batch pricing API (
getItemOffersBatch) implemented: 341 individual calls → 18 batch calls - Runtime cut from ~11 min to ~3.5 min
- Disabled: Daily PPC Search Terms (email pipeline replaced it), Daily S&T 10AM (duplicate), SQP Retry on-demand (poller handles)
- Frozen archive BQ tables: ppc_search_terms, sales_daily, sales_daily_totals, search_query_performance
- Data collection map:
playbooks/data-collection-map.mdis source of truth - Ramon's rules: PPC data ONLY via email. SP-API: prefer scheduled + poller. On-demand only for unreachable reports (S&T lookback, Inventory Planning, Merchant Listings).
- SQP polling optimized: only Mon-Wed, stops once collected for the week
- SQP ClickUp rule: ALL SQP cron runs MUST comment/complete task
86ewr9282only. Hardcoded inclickup_config.json.
- Runaway/duplicate/wasteful crons: act immediately (disable), report after
- Default
wakeMode: "now"for scheduled jobs - Retry wrapper (
retry_wrapper.sh) for Amazon API jobs - Empty Gmail webhook notifications: fixed (gmail-security.js returns null for blank emails)
--no-deliverflag for jobs that handle their own ClickUp logging (prevents phantom "Message failed" errors from OpenClaw's announce layer)- Facebook scraper dud rate: ~1-in-15 runs produce no data (LLM fluke). Ramon says investigate only on back-to-back duds.
- SELF resolution (Mar 17):
cron_runner.shsupports--cron-id SELF— auto-resolves job UUID from cron list. All 41 jobs converted. Cron recreation no longer breaks ClickUp logging. - Model lineup (Mar 18): Opus (main session), Sonnet (all crons + email), Gemini Flash (heartbeat only). No Gemini for crons — Ramon's mandate.
slack_notify.py: Direct Slack posting using OpenClaw bot token. Zero LLM tokens. Scripts importfrom slack_notify import notify_chloebot.
- Uses DataForSEO Labs ETV (Estimated Traffic Value) to filter outlets
- ETV < 1,000 = skip (no row, no draft, silent)
- ETV >= 1,000 = proceed normally
- Exception: syndicated outlets (MSN, Yahoo) qualify regardless of own domain ETV
- Script:
~/amazon-data/collectors/pr_domain_checker.py - Cost: ~$0.01 per lookup
- ETV column added to sheet (column M)
-
Placements tab tracks successful placements (outlet + guide type + date)
-
Before drafting, check if same outlet + same seasonal group was placed in last 12 months
-
Seasonal groups: spring (spring/easter/mother's day), summer, fall, holiday, general
-
Same outlet + different season = OK (e.g. ConsumerQueen Spring → ConsumerQueen Holiday)
-
Script:
~/amazon-data/collectors/pr_placement_checker.py -
When row hits "Replied" → auto-log to Placements tab
-
Gmail webhook intercepts HARO/SOS emails via
gmail-security.jstransform -
Senders:
haro@helpareporter.com,peter@shankman.com,peter@sourceofsources.com -
Two lanes: Product Placement + Thought Leadership
-
Gift Bag Policy (Mar 16, 2026): Disregard all gift bag / bulk giveaway opportunities. Only pursue placements requiring 1 free set max.
-
Scoring threshold: >= 70 out of 100
-
Draft packages emailed to
ramon@goven.com(never contact reporters directly) -
Notifications in
#mar_marketing(C9T8MAM71) -
Silent when no qualifying hits
-
Link strategy by email number (updated Mar 20, 2026):
- Email 1: all7s.co ONLY (SEO backlink is the #1 PR benefit, all7s.co has zero DA, every editorial backlink builds foundation)
- Email 2+: Introduce Amazon link with social proof (1,600+ reviews, 4.7 stars). Amazon ASIN: B07KBB1WJS
- Rationale: PR rarely drives visible sales spikes. The real value is the backlink. Amazon social proof comes in as a credibility nudge on follow-ups.
pr_email_drafter.pyhandles this automatically
-
Vision: end Amazon dependency, build DTC, expand to Walmart/Target/B2B. Can't do Meta ads profitably at $26 AOV, but building SEO now for when $60 premium set launches.
-
Sheet:
1ekrQwL_OHI784GFm-E8KSPynNP4w4MyDYWKh3jELokc(Opportunities tab) -
Columns: Date, Source, Outlet, Summary, Reporter Name, Reporter Email, AI Score, AI Reasoning, Status, Last Action Date, Lane, Follow-up Due, ETV
-
Statuses: Draft 1 Ready → Sent 1 → Sent 2 → Sent 3 → Closed/Replied
-
BCC learning loop: Ramon BCCs chloemercer32@gmail.com when he sends a pitch → I study his edits, update pitch database, advance row status
-
Ramon's pitch style (locked in after 8+ observations):
- ~100-120 words, one-scroll length
- Opens with specific reference to reporter's article/segment
- Core message: 4-player game → weekly social commitment → real friendships
- Offers complimentary set for review
- Links to all7s.co product page (not Amazon)
- No product image attachments for cold outreach (text-only)
- Sign-off varies by warmth: "Warmly, Ramon" (cold) or "Best, Ramon" (established relationship)
- No em dashes, conversational but professional
- Follow-up strategy: Focuses on "demo potential" for TV (rotating trays are visual), emphasizes "recap" and "reconnecting with friends" angle. Ends with "Thanks for your time either way."
-
PR Wins (as of Mar 16):
- ConsumerQueen: 2 confirmed placements (Spring guide + Mother's Day guide, syndicated to MSN)
- MarketingSherpa: positive reply from Daniel Burstein (Senior Director, Content)
- Talker News / Vanessa Mangru-Kumar: positive reply to Ramon's pitch
-
Daily cron at 10 AM EST checks for 7-day follow-ups (job:
pr-followup-check) -
Playbooks:
playbooks/pr-opportunity-workflow.md+playbooks/pr-followup-check.md+playbooks/pr-outreach-workflow.md
- Outreach tab in PR sheet: proactive cold pitching to existing gift guide editors
- 26 guides tracked (NYT, Forbes, AARP, Good Housekeeping, CNET, WIRED, etc.)
- Pitch timing: 8 weeks before expected page update, 3 emails spaced 2 weeks
- Weekly cron: Mondays 9 AM EST, checks pitch windows and drafts emails
- Same rules: ETV >= 1,000, Placements cooldown, Blacklist, all7s.co primary link
- Old sheet (1kMvnhHTTzRIz4rbw3A8iiKd81Cqrp9kQXDj7D1kUAvI) retired
- Monthly cron (1st Monday 10 AM): searches DataForSEO SERP for new opportunities
- Rotates through 22 search queries, 5 per run, with seasonal awareness
- Qualification: ETV >= 1k, list format, updated within 2yr, contact findable
- No forced minimums. Alerts #chloebot only for high-value finds (ETV > 100k)
- ALL PR emails sent from ramon@all7s.co (brand recognition)
- Never from ramon@goven.com (editors don't know Goven)
- Learn from Ramon's rejections (Closed without sending)
- Opportunity Selection Feedback (Mar 13, 2026): Avoid "Thought Leadership" or "Product Placement" opportunities that are too far removed from the core product (games) or brand mission (social connection), even if the target audience matches. Skip niche interior design details (Regency-core kitchens, furniture materials, rug layering) or unrelated lifestyle roundups (skin care). Stick to opportunities where the board game or ritual tie-in is central and natural.
~/amazon-data/collectors/event_logger.py- central JSONL logger~/amazon-data/logs/events.jsonl- auto-rotates daily, 30-day retention~/amazon-data/collectors/morning_review.py- categorizes errors as transient vs needs-attention- Morning Self-Heal cron: daily 6 AM EST, reads logs, auto-fixes transient issues, escalates criticals
- CLI:
event_logger.py summary,event_logger.py show --level error --hours 12 - Instrumented scripts: email_util, dataforseo_api, clickup_integration (more to add over time)
- Critical finding (Mar 7): boardgamefun.com → all7s.co domain migration didn't transfer Google indexing. Most pages not indexed.
- Ramon manually requesting crawling in GSC (daily quota limits)
- Use
www.all7s.cofor all GSC lookups (canonical is www version) - 68 meta descriptions written and published across all 20 pages + 48 articles (Mar 7)
- Hand & Foot article published — targeting 22,900/mo keyword, ~2,500 words
- How-to-Play-Canasta hub page rebuilt — removed custom template, now editable via API, 12 internal links
- "4 player canasta" rising query (+3,400%) — added targeting to 6 articles
- H1 fixes applied to 10 pages with duplicate H1s
- GSC Weekly Report runs Mondays 9 AM
- DataForSEO set up with $0.50/day budget cap, $10 min balance floor
- Top target keywords: "canasta rules" (12,100/mo), "how to play canasta" (6,600/mo), "hand and foot card game" (22,900/mo)
- Monthly SEO Strategy Review cron: 3rd of every month at 10 AM (
467a1910, ClickUp86ewubz7g)
- Full working doc:
memory/ramons-socials.md(load when Ramon says "Ramon's socials" or discusses video/content strategy) - 4-pillar video strategy: Isolation/Ritual (10), Famous Women (5), The Table (10), Practical (5)
- Idea Bank in Google Sheet:
1l9VL3DCkz3MNe2kAGy6obqmEulvffmX1UdIGgVIx_YU(Idea Bank tab + Scripts Archive tab + Content Tracker tab) - Batch 1 (30 videos) posting daily March 6 – April 4, 2026 (alternating FP/PI pillars, started posting Mar 6)
- Batch 2 scripts: 30 new scripts across 4 pillars in Idea Bank tab, awaiting Ramon review
- Kallaway framework is the strategic foundation
- Email strategy is SEPARATE from video strategy (discussed separately)
daily_social_poster.py— reads Content Tracker → downloads video → posts to FB Reels + IG Reels + YouTube Shorts- Daily cron:
7f9e6155(replaced oldd991a7a5which was alert-only) - ClickUp task:
86ex0cmjn - Collaborator tagging at publish time (FB + IG)
- Auto-posts first comment on all 3 platforms
- Pinning limitation: Meta + YouTube APIs cannot pin comments (manual tap needed)
- Cover Time column (J) in Content Tracker: YT extracts frame, IG uses thumb_offset, FB auto-picks
- Moves yesterday's video to "Posted" folder, marks sheet rows with post URLs
- Alerts #chloebot with links + pinned comment text to paste
- Playbook:
playbooks/daily-video-post.md - Drive folders: To Post =
1ogCw4xV7u_PDlT2C9NxZL6xsrYXBaLbf, Posted =16X4cz-UYwEKg4uB_pcE26ZUVgpu3_tva - Content Tracker:
1l9VL3DCkz3MNe2kAGy6obqmEulvffmX1UdIGgVIx_YU(Content Tracker tab), 120 rows (4 platforms × 30 videos) - Platforms: TikTok, IG Reels, YT Shorts, FB Reels
- Pinned comment: single version for ALL platforms — "Comment START" (no more "DM me START" variant)
- Will switch pinned comment to "SUNDAY" for B2
- Description CTA: "comment START for..." line in all descriptions. No "follow @playall7s" (Ramon prefers emails over followers, tags all7s as collaborator instead)
- After Ramon says "done": update spreadsheet + move video from To Post → Posted in Drive
- IG/FB: ManyChat ($15/mo — cannot replace, Meta API can't cold-DM commenters)
- TikTok: TikTok's native automation (comment trigger → sends all7s.co/sunday link)
- YouTube:
comment_responder.py— scans last 10 videos for START/SUNDAY keywords, auto-replies (runs via heartbeat) - ClickUp:
86ex0czrc - ManyChat has separate Klaviyo API keys (don't share Chloe's keys)
- Will transition to "SUNDAY" keyword for B2+
- TikTok developer app submitted (Login Kit + Content Posting API) — pending 1-3 day approval. Once approved: add to daily_social_poster.py + comment_responder.py
- Pinned comments: Use for conversation starters, NOT CTA. Keep CTA in description only.
- Thumbnails (B2+): Agency to include 1-second title card frame at video start for cover selection.
- Hashtags: 3-5 specific. Avoid generic (#love, #inspo). Include 1 branded (#all7sgames).
- First engagement happened (Mar 9): "START" comment on TikTok + FB engagement on Batch 1 content.
- Canasta Cards Deluxe Game Set ($27): https://www.all7s.co/products/canasta-cards-deluxe-game-set
- Main Website: https://all7s.co
- Canasta Course: https://all7s.co/courses
- Strikethrough Pricing (STP) driven by Amazon's median price over rolling window
- CAN2P problem: Liquidation sales ($8.99-$9.99) from Dec-Jan polluted the median. Hold $12.99, check mid-April.
- CANSET works perfectly: Clean price history at $26.99, spike works instantly.
- Coupon trick: Coupon-clipped sales register at LIST price for STP calculations. Good for seeding high data points.
- 90-day STP refresh cycle: Every 90 days per SKU, spike price 25-35% above everyday for a few sales, drop back.
- SH2 (Scavenger Hunt): ✅ US CPC CLEARED. CA still flagged (TR177386939453254, due Mar 28). Cathy Tang at Intertek checking if existing test data (HKGH03327923) can serve as CA-specific submission.
- TH (Treasure Hunt):
⚠️ PENDING — needs measurable label artwork file + physical jewels for sharp point retest. Ramon sanding jewel tips instead of sourcing new from Alibaba. - RJ3P: Tests ALL PASSED, DV report pending issuance
- RJ: Lead test still failing (glass marbles) — see Rolling Jokers section
- Tracking labels required on BOTH product AND packaging: manufacturer name, location, production date, batch number
- Brother P-Touch PT-D220 purchased for on-demand date/batch codes
- Intertek contact: Cathy Tang — cathy.tang@intertek.com, +852 63210480 (WhatsApp)
- CANSET CA listing: Down ~17 days for CPC issue. Eurofins (Tracy) submitted TRF to US but not CA properly. Ramon paid $30 CA fee. Goalposts keep moving. TRF ID: TR177247284480757
- canastacourse.com on Kajabi (month 3 of 12 prepaid, expires ~Dec 2026)
- Migration target: Tevello (Shopify app) → all7s.co/courses (subfolder, full SEO benefit)
- Don't migrate until December. Redirect active: all7s.co/courses → canastacourse.com
- All new links use all7s.co/courses (not canastacourse.com)
- Account: yamaris@goven.com (NOT chloemercer32)
- TOTP secret stored in
~/amazon-data/.envasAMAZON_TOTP_SECRET(the LFR7... Amazon-generated one) - Full autonomous login capability confirmed: email → password → TOTP
- Ramon logged in manually to get past 2SV enrollment loop; browser now authenticated
- Auto-forward rule being set up: yamaris@goven.com → chloemercer32@gmail.com
- IDR portal (Inventory Defect & Reimbursement) replaces manual auditing for warehouse damage/lost claims
- Browser 2FA needed for IDR portal access — pending Ramon's help
review_server.pyon port 18801 — passive, waits for Chrome extension POSTs- Parent-family dedup across B07KBB1WJS + B0BR4FDDV8 + B0G1NRM21J (20 dupes cleaned)
variationfield added (e.g., "Edition: Classic Edition") — shows in negative review alerts- Chrome extension v1.1.0 pushed to Drive
- Weekly review scraper cron (
cc426556) is separate active scraping — runs on Sonnet model
files:read+files:writescopes added (Mar 6, 2026) — Chloe can now see images shared in Slack
- Channel: #fridgemoments (C0AKA6QRCVB)
- Rule: When in this channel, ONLY discuss Fridge Moments. No Amazon, no All7s, no main business.
- Custom photo fridge magnets, Shopify/Etsy only
- Domain: fridgemoments.com
- Budget: $1,000 total
- Phase 1: Inkjet → Phase 2: Sublimation (after 25 sales)
- Drive folder: 0ANkC691BDrRwUk9PVA
- Profit sheet: 1fIsb896d2md7EGmS0QXh78fOi7QkyjS81k4JPQzmTs4
- Facebook Developer App: "All7s Management" — 16 permissions secured
- Long-lived user token expires ~May 21, 2026 (TODO: set up refresh before expiry)
- Page tokens: Ramon Gonzalez (776238028909438) + All7s Games (226380401639141, 210 followers)
- Blocked permission:
pages_manage_engagement(needs App Review, not worth it now) - All credentials in
~/amazon-data/.env - FB Reels + IG Reels posting confirmed working end-to-end via API
- YouTube Data API v3 enabled in GCP project
- OAuth with
ramon@goven.com(owns @ramon44 channel) - Channel: Ramon E. Gonzalez (@ramon44), ID:
UCpz6NUgDWVN8jFQ3uvYYPxA— 15 videos, 8 subs - Token:
~/amazon-data/youtube_oauth_token.json(auto-refreshing) - Auth script:
~/amazon-data/collectors/youtube_auth.py - Shorts upload + custom thumbnail confirmed working
- Developer app submitted, pending approval (1-3 business days from Mar 21)
- Scopes:
user.info.basic,video.publish,video.upload - Redirect:
http://localhost:8080/callback/
- API key stored in
~/amazon-data/.envasFAIRE_API_KEY - 8 products listed (brand_id: b_unwtdcvhf5)
faire_inventory_sync.py— reads Inventory_Counts sheet, syncs US stock levels to Faire- Only counts US locations (AWD, Tactical, Miami, ShipDepot), cartons→units conversion
- Cron:
58f93082— Mondays 1 PM EST, ClickUp task86ewzmcc3 - Faire API quirk: inventory-levels endpoint returns 404 with brand-portal tokens — use product PATCH instead
- Ramon wants to eventually replace Scale Insights + PPC employee with Chloe
- Phase 1: Knowledge transfer — Ramon sharing Scale Insights course material and current rules/settings
- Phase 2: Shadow mode on Canasta campaigns — log every bid decision with reasoning, Ramon validates
- Existing campaign structure: auto discovery → catch-all exact → SKC graduation
- Chloe's unique value: semantic keyword reasoning, trend analysis, automated weekly feedback loops
- Data ready: daily PPC via
daily_ppc.py, search terms in BQ
- Triggered by finding stale "all ages" text in CA Rolling Jokers listings
- Old sheet:
1S3ITE-Isti_zmSLp45fiRK3pgZVSixv2GOOppj135-0(19 tabs, employee uses daily — DO NOT MODIFY) - New sheet:
1z7WGoXHJ-k2K72wUmp5VU81h37wKaKyqcf9F5cwy_2s(29 products, US+CA, change detection columns) - Architecture: BQ snapshot store (weekly) → change detection → compliance profiles per product → push via Sheets
- NOT building yet — planning phase only
- PPC Optimization — visibility/money on table daily
- Financial Reporting / QBO — cashflow, P&L clarity
- All7s Social — already in motion
- Influencer Management — force multiplier
- B2B Strategy — revenue diversification (Faire blocked until smaller cartons May-June)
- AI Video Creation — efficiency play
- Future / Apps — Q3+
- Stopped operations 12/31/2025
- FL DOR sent $50 late filing penalty (DR-330144)
- 2025 annual return already filed
- Action needed: Call FL DOR at 850-488-6800 to inactivate sales tax certificate
- Certificate: 23-8019210643-1, BP: 7016219, FEIN: 92-2631493
- ClickUp task:
86ex0dyw8
architecture/ARCHITECTURE.mdcreated — system inventory, port reservations, standards checklists~/amazon-data/shared_config/module — centralized alert channels, email routing, format standardsshared_config/email_routes.json— single JSON for both gog watcher (JS) and polling cron (Python)- Boy scout rule for migration: update each script when next touched
- all7s.com domain acquisition: Reached out to owner (disbanded CA heavy metal band) via Facebook as Chloe. Message viewed, awaiting response. Budget: under $1,000. Use Escrow.com if they respond.
- Postiz self-hosting: Deployed but effectively superseded by
daily_social_poster.pywhich posts directly via FB/IG/YouTube APIs. Postiz login:ramon@goven.com/PostizAll7s!at localhost:4007. May still be useful for batch scheduling but low priority. - Credential files in Downloads: Delete
bigquery_service_account_key.jsonandairbyte-seller-central-creds.rtf(meta.rtf already deleted) - Browser 2FA for IDR portal: Needed for FBA reimbursement IDR scraping (Part 1). Ramon will help soon.
- Facebook re-login needed: Session expired in OpenClaw browser, blocking Canasta scraper. Either manual login or store credentials for auto re-auth.
- Meta token refresh: Long-lived user token expires ~May 21, 2026 — set up refresh before then.
- GoPlay LLC: Call FL DOR (850-488-6800) to inactivate sales tax cert. ClickUp:
86ex0dyw8 - Travel Tales CA listings: 3 listings (TTITA, TTMEX, TTFRA) still have "all ages" text — needs fixing
- "If it CAN be hardcoded, it should. If it can't, then LLMs it is." — Ramon's directive
- Avoid hallucinations and inconsistencies above all
- LLM tokens are acceptable cost, but deterministic code is always preferred
- 20+ cron jobs converted from LLM-heavy → thin wrapper (cron_runner.sh)
- Gmail inbox processing: Python router (
gmail_inbox_router.py) handles deterministic routes, LLM only for HARO/SOS + BCC learning vine_order_processor.pyreplaced the LLM playbook that was corrupting sheet data- Reimbursement audit: fully hardcoded Python, LLM only for IDR browser scrape
- Cron timeout lesson: When converting crons, always match outer
timeoutSecondsto script's actual runtime + 60s buffer
- Cron:
f285d81f— 1st of every month at 10 AM EST - ClickUp:
86ewwg5wj - Reads all memory files from previous month, compiles narrative meeting notes, emails to ramon@goven.com
Old approach (Mar 14): Inventory Ledger analysis → generate case text → file manually. Found 2 major bugs:
- Not netting found/recovered entries against damage/lost entries (false positives)
- Counting disposition transfers as "lost" (CPC compliance removals appeared as losses)
- Impact: 16 cases ($1,058) → 5 real cases ($42.90) after bug fixes
New approach (Mar 15): Three-part Monday audit (Python, no LLM):
- Shipment discrepancies — SP-API Inbound Shipments, wait for CLOSED, verify via browser
- Sizing/fee changes — weekly baseline comparison (56 ASINs in Sizing_Baseline tab)
- Fee tier checks — compare Amazon's measured dimensions vs known specs
- Plus: IDR Portal scrape — separate small LLM cron (9:15 AM) for browser-only check
- Script:
monday_reimbursement_audit.py(self-contained: checks + Slack alerts + ClickUp logging)
- Amazon's IDR portal now auto-detects eligible claims. Ledger-based audits generate false positives Amazon already resolved.
- US (90 days): 316 defect units, 0 eligible, 279 resolved ($262.77 reimbursed)
- CA (90 days): 31 defect units, 0 eligible, 28 resolved (CA$8.16 reimbursed)
GET_FBA_FULFILLMENT_INVENTORY_ADJUSTMENTS_DATAreport type is DEPRECATED (blocked by Amazon)- SP-API
QuantityReceivedlags behind Amazon's actual reconciliation — browser is source of truth
- Amazon reason codes: Q = transferred to defective, M = misplaced, P = transfer to defective disposition, F = found
- Policy: reimbursements for inventory lost BEFORE customer order = manufacturing cost, not sales price
- Claim windows: Lost/damaged warehouse 60d, Customer returns 60-120d, Inbound 9mo, Fee overcharges 90d
- Broken 6-pack theory: CAN6P breaking → individual CAN2P scans. Check offsetting +/- across related SKUs.
- The cron's final announce message is the CTA: "Want to join our weekly letter about friendship and gathering? Comment START..."
- When Ramon replies "posted" or "done" in that thread → run post-posting steps (mark sheet rows, move file to Posted folder)
- Hiccup: I initially treated "posted" as casual chatter because I didn't recognize the CTA thread as a video post thread. Fixed in playbook.
794f8248— Weekly Reimbursement Reports (Sun 11PM) — ClickUp86ewy25ca(BQ data refresh)23c02425— Monday Reimbursement Audit (Mon 9AM) — ClickUp86ewy6f50(hardcoded Python)21f0dca5— IDR Browser Check (Mon 9:15AM) — small LLM job7a36e0cd— Weekly Reimbursement Monitor — DISABLED (superseded by Monday audit)
- Age reclassification: 8+ → 14+ submitted via Listings API on all 3 ASINs (US + CA). ACCEPTED.
- CPSC 16 CFR 1200.2: 13+ = general use product = NO CPC required
- Amazon appeal submitted with 14+ sticker photos, CPSC citations
- DV flags on child ASINs still showing (may need Amazon case to fully clear)
- RJ3P (cards-only): Intertek tests ALL PASSED, DV report ready to issue
- RJ (full game set): Lead test STILL FAILING (glass marbles). Intertek wants retest with compliant marbles.
- PMMA marble sourcing: $700 sample fee for 8 colors = unreasonable. ~$3.90/unit vs $0.90 glass = doesn't make sense at 20-30 units/month
- 1,500 units in stock = ~16 months to clear. Product is underwater, goal is recoup not growth.
- Chinese copycats destroyed pricing power. Plan: recoup via trickle sales + DTC upsell through Canasta list.
- Physical fix: "14+" sticker covers "8+ FAMILY" badge on box. FBA inventory (1,500 units) can't be restickered.
- Listing copy purged of all "8+", "kids", "families" → "Game Night", "Adults", "Gathering"
- CA descriptions still need fixing: 3 Travel Tales listings have "all ages" text (TTITA, TTMEX, TTFRA)
- Faire is primary B2B channel (net 60, free returns, discovery)
- Blocked until: New PO with smaller carton sizes (6 or 12-unit, ETA May-June 2026)
- Key targets: Barnes & Noble (distributor says "ideal"), Books-A-Million, indie retailers (Playmobil CC list)
- Walmart.com: Has account, full API available. Relaunch with PPC.
- Needs before execution: B2B landing pages, sell sheet PDF, Faire API key, Walmart API credentials
- Playbook:
playbooks/b2b-wholesale-strategy.md
- ASIN-based dedup to prevent duplicate listings
- Ramon's pricing rules: All clothing $16.99, shoes $29.99. Manual override via sheet column E.
- Skip no-op API calls (compare before calling)
- ALWAYS read back target row content BEFORE writing to verify it's the right opportunity
- Formula: data_index 0 = sheet row 2. data_index N = sheet row N+2.
- Bug hit twice: wrote to wrong row both times.
- Filter all advice through: "Does this help All7s, Canasta, community, or email growth?"
- PR Opportunities: Disregard topics with high degree of separation from All7s (e.g. generic travel gear/water bottles) even for "Thought Leadership". Focus on social connection, rituals, games, or brand growth.
- No multi-brand distractions
- No launch-more-products-for-growth mentality
- Structured plans > chaotic tactics