No "case studies." No conceptual decks. Real URLs you can open right now.
Most AI consultants pitch what they could build. SideGuy ships every week. Here's a 7-day snapshot — every link below is live, in production, on the open web. Copy, share, screenshot, whatever.
Sip-and-ship morning. Pulled fresh GSC: 140 impressions in 24 hours (+40% from yesterday), 7-way SOC 2 page concentration tightened to 68%, and a smoking-gun verbatim AI-agent prompt in the impression log ("as a compliance officer at a mid_market_500_1000 company in netherlands, compare scytale vanta sprinto scrut drata secureframe thoropass on iso 27001 compliance audit support. you must provide a forced ranking from best to worst.") — proof-grade evidence the agent-traffic doctrine is lived reality, not theory. PJ corrected an AI miss in real-time (the system surfaced friend Justin Coté as a "warm follow-up candidate" — he's not a lead, he's a friend) → shipped connection_status classifier so the same miss can't happen twice. Landed the convergence-point positioning sentence: "I am legit the human in the loop between all these CPU systems" — investor + prospect + peer + operator vocabulary in 14 words. Doctrine compounding while the build dept stays human-led.
Reads existing degree markers in lead notes (1st-degree, 2nd-degree, friend, known) and surfaces them as structured fields. Every leads.json record now carries connection_status (friend / known / first_degree / second_degree / third_degree / unknown) + is_new_prospect (True only if 2nd, 3rd, or unknown). Today's network breakdown: 3 friends · 408 1st-degree · 43 2nd-degree · 5 3rd-degree · 397 unknown. Total NEW prospects = 445. Total existing relationships = 411. Validated: Justin Coté now flags connection_status=friend, is_new_prospect=False. The system will never recommend cold-pitching him again. Human correction encoded as data so the same miss can't happen twice.
Public AEO checker. Pastes any URL → fetches /robots.txt + /llms.txt + /llms-full.txt → scores 0-10 on AI search engine citation readiness. Checks for explicit named User-agent allow blocks for 20 AI crawlers (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended, bingbot, Meta-ExternalAgent, FacebookBot, DuckAssistBot, YouBot, Amazonbot, CCBot, cohere-ai, MistralAI-User). Operator-honest disclosure baked in (this is by SideGuy who sells the install pack). CTA → /install/aeo/. Self-amplifying SEO surface for "free AEO checker" / "llms.txt checker" / "AI crawler audit" long-tail queries.
PJ-coined sip-and-ship: "I am legit the human in the loop between all these CPU systems." Compresses prior week's positioning evolution (AI guidance → coordination layer → reselling excellence at speed → human layer to all the excellence on the internet) into 14 words using literal MLOps terminology. Lands on every audience simultaneously: AI/ML industry (HITL is technical term they know) · SMB operators (the human is the missing piece) · investors (names structural advantage) · peers like Rodrigo (names the lane). The convergence point of the 5-iteration positioning lineage. Test future framings against THIS sentence — does new framing add info or just rephrase?
Fresh GSC pull confirmed: 140 impressions vs 100 yesterday (+40% in 24 hours), 7-way SOC 2 page concentration tightened from 64% → 68% (compounding non-linearly), 138/140 desktop = 98.6% (agent-fingerprint sharper than yesterday), 75 unique queries (vs 52 — +44% query diversity), avg position improved from 20.84 → 18.63. Smoking gun: a verbatim AI-agent prompt in the impression log from Netherlands compliance officer use case. Proof-grade evidence the agent-traffic doctrine is lived reality. Saved as ammo for the next Rodrigo conversation when he writes back.
Started with the 4-cluster Layer-2 blueprint (compliance + CRM + AI operator + payments) + 12 vendor entity backfill + chip-in-case auto-DM/email pipeline. Mid-day: ship-day.sh automation + Prospeo B2B targeted tool (30% hit rate vs 0% unfiltered). Day: SEO swarm round 1 (16 GSC quick-win pages with AEO TL;DR + FAQ schema). Evening: SD news pipeline + 5 fresh SD-news SEO pages + library hub + geo classifier (77 NCSD coastal leads surfaced, 32 Prospeo-enriched) + WorkScope client v0.1 shipped greenfield. Late evening: SEO swarm round 2 (17 next-tier pages including the twilio 450-imp/0-CTR title rewrite) + round 3 (3 agent-citation 10-way magnets + AI-parsing optimization on existing 7-way SOC 2 + 3 high-intent human pages) + AEO Play 18 from Rodrigo Stockebrand's playbook (robots.txt explicit allowlist + llms.txt + llms-full.txt) + 3 install packs (Airbnb Recovery + HVAC Operator + AEO) + install hub + tools/aeo_audit.py + tools/keep-awake.sh. Sent peer-DM to Rodrigo with case-study data. 11+ doctrine memories saved including "Two trillion-dollar companies wired by SideGuy" + "Reselling excellence at speed" + "Human layer to all the excellence on the internet."
Productized 7-component install packs per vertical. Airbnb Recovery Pack ($4,500): smart pricing + occupancy audit + SEO landing + direct booking + AI guest FAQ + text intake + review recovery. HVAC Operator Pack ($4,500): missed-call text-back + quote comparison + financing + local SEO + dispatcher intake + emergency routing + Google Business. AEO Install Pack ($5,500-$12,500): productizes Rodrigo's 40-play AEO playbook into deployable infrastructure for B2B SaaS / content sites / e-commerce. Install hub at /install/ navigates the matrix with CollectionPage schema. 4 more packs named in roadmap (Realtor, Local AI, Compliance Operator, Outbound). The matrix is now tangible — clients react to real artifacts instead of spec docs.
Implemented Play 18 (The AI Crawler Allowlist) from Rodrigo Stockebrand's 40-play AEO playbook on SideGuy's own 5,000-page site within 24 hours of reading it. robots.txt now has explicit User-agent allow blocks for 20 AI crawlers (vs default wildcard). llms.txt curated index of canonical SideGuy URLs grouped by topic per llmstxt.org spec (8.2KB). llms-full.txt full markdown of most-cited content baked in for AI ingestion (11.3KB). Per Cloudflare 2025: brands moving from default-allow to explicit allow + llms.txt gained 48% more LLM-referred traffic in one quarter. SideGuy went from "implicitly allowed" to "deliberately welcoming AI" overnight. Lived case study now baked into the AEO Install Pack pitch.
Built per client brief: workflow intelligence + implementation + routing + operational visibility + clarity-before-cost. 9 sections: hero · problem · Layer-2 concept · workflow map · 6 use cases · trust-moat reality · 4 worksheets · 5-step vision · final CTA. Premium coastal/light aesthetic (Apple/Linear/Notion/Stripe). Self-contained HTML, inline CSS/JS, mobile-first. Doctrine-aligned: share button, Text PJ orb, schema markup. Per the dual-function v0.1 doctrine — the page is both a communication artifact (PJ + client iterate against it) AND a transferable blueprint (client absorbs it back into their stack when finalized). Real surface beats spec doc.
Built tools/sd_news_pipeline.py: pulls Google News RSS for 15 SD-region queries (Encinitas + Solana Beach + Carlsbad + La Jolla + Del Mar + Cardiff + etc) → trigger-keyword scoring (funding/launch/M&A/promotion/award/etc) → builds operator-honest /shareables/sd-news-*.html pages with NewsArticle schema → auto-rebuilt /shareables/sd-news.html library hub. Idempotent skip-logic. First run shipped 5 pages from real signal: Liquid Instruments $50M Series C · Del Mar Fairgrounds CEO appointment · SD Power Founders wave · GigaIO Hardtech 50 award · SD startup-funding read. Three-Rail Data Engine doctrine made executable.
Three parallel swarm waves (5-6 background agents each) operating on GSC quick-win pages. Round 1 (16 pages, pos 8-20): compliance hubs + Claude API troubleshooting + payment problems + dev problems + SD service hubs + prediction markets. Round 2 (17 pages, pos 21-40 + pos 5-10 zero-CTR): SD AI/automation + SD payments incl. stripe-fees pos 5/0 CTR title rewrite + SD trades + dev problems incl. twilio 450-imp page-1 unlock + SD AI lead-gen. Round 3 (7 pages): 3 agent-citation 10-way magnets (CRM + AI Operator Stack + Payments) + AI-parsing optimization on existing 7-way SOC 2 magnet + 3 high-intent human-search landing pages (process opt + LLM integration + Drata partner). Same playbook each: AEO TL;DR + FAQ schema + title/meta tighten + mesh density + verified timestamp + doctrine check. All canonical-www-clean.
Solana Beach First doctrine made executable. Every leads.json entry now carries geo_tier (ncsd_coastal / ncsd_inland / sd_metro / other) + geo_match. NCSD coastal pattern handles the reality that most NCSD operators set LinkedIn location to "San Diego" not specific town (strict-string Solana Beach filter would lose 70%+). First run surfaced 77 NCSD coastal leads, 32 of them already Prospeo-enriched. CLI tool tools/prospeo_geo_filter.py with --tier --status --enriched-only --limit flags for instant operator inspection. The infrastructure that turns "give me my Solana Beach first cold candidates" from a multi-step query into one command.
"Two trillion-dollar companies wired by SideGuy" (Anthropic + Google leverage in one sentence) · "Reselling excellence at speed" (verb positioning) · "Human layer to all the excellence on the internet — speed + usability, no decks, no meetings" (noun + verb + value prop) · "V0.1 = communication artifact + transferable blueprint" (dual-function client work) · "Worth you not talking to me again" pricing punchline · "Static HTML = AEO moat" (passes Rodrigo's Play 19 100% by default) · SideGuy origin story (started as transportation site, route verb never left, evolved to shipping intelligence) · SEO Swarm Playbook · SD News Pipeline doctrine · Prospeo capabilities + limits · "PJ's watching IS the input layer." 4-time positioning evolution converged on the human-layer framing in one day.
Read Rodrigo's 40-play AEO playbook → shipped Play 18 on own site within hours → packaged it as a $5.5-12.5K install pack → sent peer DM with the lived data. Hook: not asking for anything, just offering data-for-data. SideGuy has the case study his Fall 2026 O'Reilly book needs (5,000-page operator site + GSC export proving agent-traffic compounding). Peer-grade builders, not student-and-teacher. Awaiting reply.
Friday evening rush hour turned into a category-defining sprint. PJ named the Holding Broker doctrine ("SaaS vendors are holding brokers; SideGuy is Layer 2 meta-matchmaker — same StubHub mechanism, B2B SaaS edition"). Built the meta-thesis page articulating the frame publicly. Paired with the buyer-side flywheel doctrine ("Compliance buyers ARE custom buyers"). Replicated the Vanta cluster pattern with Drata warm-intro routing (anonymous "tickets without holding broker info" surprise — friend-at-Drata stays anonymous until first lead lands). Extended doctrine to category #2 with HIPAA 5-Way comparison. Built two industrial intelligence tools: Convergent Operator Hunter (scans 6,262-network for more Hunter Jensens) + DM Generator (auto-personalizes paste-ready DMs from prospect record). 100 fresh prospects loaded from network, 8 convergent operators routed with same-wedge hooks, Cross-Sell Intelligence widget added to dashboard Next Move cards (vendor fit + cross-sell + click-to-copy hook per prospect).
Category-defining thesis page articulating the Holding Broker doctrine publicly. PJ's exact line as the H1. 3-layer architecture diagram (Buyer → Holding Broker → SideGuy). Two flywheels explained side-by-side (vendor partner economics + buyer cross-sell convergence). Compound math table per acquired buyer ($0 → $500 referral → $5-20K cross-sell → $3-8K/mo retainer). 10-category extension table showing where the doctrine applies (auth · email · CRM · payments · analytics · vendor risk · privacy · trust centers · etc). Two CTA paths (buyer warm-intro · vendor Layer 2 partnership). FAQ schema (7 Qs) + Article schema. Becomes the philosophical anchor every existing SOC 2/compliance page on SideGuy points back to.
Replicates the SOC 2 7-way comparison pattern for HIPAA/healthcare buyers. Vanta + HIPAA add-on (gold #1) · Drata + HIPAA · Compliancy Group · Aptible · Accountable HQ. Pricing snapshot per vendor ($1.5K-$8K SMB / $15K-$30K HIPAA-only platform / $25K-$60K combined SOC 2 + HIPAA). Where each shines / where each breaks per vendor. 7-row persona match table. BAA-providing infrastructure layer section (AWS / Datadog / GCP / Twilio) with cross-link to existing Datadog BAA HIPAA guide. FAQ schema (7 Qs) + Article schema. 36 healthcare prospects in the new 100-prospect batch routed to this page on next refresh.
Friend-at-Drata routing page. PJ wanted to surprise her — anonymous "tickets without holding broker info" pattern. Buyer texts PJ → PJ qualifies fit → if Drata is right call, PJ texts contact direct → buyer gets Drata response in 24-48 hours with PJ's vouch. Drata-blue palette differentiates visually from Vanta-green. 5-step warm-intro flow. "When this is NOT the right move" honest moat section. FAQ schema (7 Qs). Cross-linked to Drata entity page + Vanta service partner page + 7-way comparison + Compliance hub. Added as 7th match card in /services/ hub with Drata-blue color.
Operationalized the "Compliance Buyers ARE Custom Buyers" doctrine in the dashboard UI. Every Next Move card now shows three new pieces of intelligence: 🏷 vendor fit (which holding broker this prospect should buy — Vanta default · Drata for engineering-led · Sprinto for SMB · Vanta+HIPAA for healthcare · etc) · 💡 cross-sell candidate (which custom SideGuy service they'd ALSO want — private AI · fractional CTO · custom shareables · CRE intro · etc) · ✏️ click-to-copy opening hook (1-sentence personalized opener pulled from prospect record + cluster + tags). Per-DM personalization time drops from ~60 sec to ~10 sec.
Permanent infrastructure that scans li-network.json for operators whose LinkedIn position field is congruent with SideGuy's existing wedges. 10 wedge groups + 13 high-signal exact-phrase matches (e.g., "fractional cto", "operator-honest", "without hiring"). First run surfaced 30 convergent operators excluding existing leads.csv — 1 HIGH-SIGNAL hit (Michael Giske · "Advisor and Interim / Fractional CTO - CPO" = direct convergence with /services/fractional-cto/). Re-runnable as network grows. Each surfaced match ships with a "we have the same wedge" DM template — highest-conversion outreach SideGuy has.
Reads leads.json, generates paste-ready PFOS-format DMs (1-sentence hook + page URL + sig) for top-N queued prospects. Mirrors dashboard's pjBuildOpeningHook templating with 10 hook variants prioritized by specificity. Special convergent-operator hook variant cites prospect's exact LinkedIn position ("you're not gonna believe this — your title literally says X"). Filters: --convergent-only · --filter "AI / ML" · --filter "Healthcare" · --has-email-only · --has-linkedin-only. Cuts blast time from 2 hours to 15 minutes for 30 personalized DMs.
Pulled top 100 high-fit prospects from 6,262-contact network (excluding existing leads.csv). Composite scoring: email present + decision-maker + local SD + recent connection + cluster match + high-value cluster bonus. Spread: 37 AI/ML/Data · 36 Healthcare · 8 Marketing · 6 SaaS/Tech · 6 Consulting · 3 Energy · 2 Other · 1 Education · 1 Crypto. Each row written with cluster→wedge→PAGE-SHIPPED mapping so dashboard auto-routes correctly. PLUS 8 convergent operators added separately with same-wedge angle (Michael Giske, Dylan Ackley, Vanessa Bourgeois, Peter Jung, Louis Smith, Brandon Bremer, Sergio Harashyn, Kayla Bane). Total leads: 537 → 645.
Two compounding fixes that together make the dashboard fully autonomous on prospect routing. (1) Dashboard JS now extracts "PAGE SHIPPED:
(1) Holding Broker Doctrine — PJ-coined: "Who in the hell is building a SOC 2 software aggregation service? SideGuy." SaaS vendors function as holding brokers; SideGuy is Layer 2 meta-matchmaker. Same StubHub mechanism, B2B SaaS edition. Extends to every multi-vendor category. (2) Compliance Buyers ARE Custom Buyers — buyer-side flywheel pairing the Holding Broker doctrine. Same Series A-C founder buying SOC 2 = same buyer for private AI · fractional CTO · custom shareables · CRE · SBA. One trust acquired = 4-5 cross-sell pathways = 10-50x LTV vs single referral fee. (3) Convergent Operator Hunting — industrialized Hunter Jensen find. Re-runnable weekly. Each surfaced operator ships with same-wedge hook.
PJ's "ive encrypted enough" graduation moment unlocked the architecture upgrade — built sideguy-leads-data Cloudflare Worker + dashboard JS swap that eliminates the encrypt-cycle ceremony for all data updates. From this moment forward, every leads.csv update goes live in ~60 seconds with zero password / zero encrypt. Then mined Vanta's May 2026 Value Deck for operator-honest ammo: shipped Vanta Service Partner cred page, dual-purpose acquirer page (3 named operators), Vanta entity deck-receipts upgrade, and the FIRST EDITION of "What Vanta Shipped" — a recurring monthly content engine. Surfaced Hunter Jensen convergence (same wedge, same words = market validation doctrine saved). Enriched 13 prospects + added 7 new ones across the LinkedIn intake rhythm.
Built and deployed the sideguy-leads-data Cloudflare Worker at leads-data.sideguysolutions.com — token-gated GET that fetches leads.json from S3 and serves to the encrypted dashboard JS. Patched dashboard/network.html pjLoadLeads() to fetch from the Worker with Bearer token instead of CSV file. Pre-graduation: every leads.csv edit cost a 15-min encrypt+ship ceremony. Post-graduation: python3 tools/export_leads_json.py --ship → 60-second turnaround, zero password. PJ explicitly named this his "graduation moment" after weeks of encrypt reps.
Operator-honest Vanta implementation page positioned as the SD Service Partner offering (application submitted to Vanta 2026-05-08). Includes the 5-phase engagement breakdown (scope/wire/trust/audit/monitor), receipts pulled directly from Vanta's deck (16K customers · 207 features · Dust 3-week SOC 2), 5-case "when SideGuy is the wrong choice" honest moat section, and FAQ schema for AEO. Added as 6th match card in /services/ hub. Service Partner program named explicitly in Vanta's official deck.
First operator-validated dual-purpose page — names THREE real acquirers in the same buyer-side wedge: Sarah Picha (construction & home services · lpt realty · NCSD), Jed Morris (GovCon · SVH Capital · "Buyer Beware" book May 2026), and Lamar Rutherford (Vistage Chair · M&A advisor · UCSD Rady). 9-step founder-honest read covering clean books / owner-replaceable ops / multiple ranges by category / customer concentration / team protection / holdback negotiation. FAQ schema + Article schema. Each named operator now has incentive to share with their network. New doctrine saved: "Dual-Purpose Page Compound."
First installment of an ongoing monthly recurring content engine. Vanta ships ~1 feature every 1.7 days; no buyer can keep up. Page provides per-stage operator-translation: which AI Agent features matter NOW for pre-Series-A, which to defer to Series A, which to skip until Series B+. Full 10-feature inventory (Policy Generator / Test Remediation / Trust Center Chatbot / Q Auto / Policy Change Summaries / Control Mapping / Policy Import / SLA Remediation / Evidence Evaluation / Policy Chatbot). FAQ schema + Article schema. URL pattern is repeatable for June / July / August editions.
Added "Vanta · by the numbers" dark sidecard with 9 stats lifted directly from Vanta's May 2026 Value Deck (16,000+ customers · $4.15B valuation · $504M raised · 207 features in 2025 · 96.2% support CSAT · 13 consecutive G2 wins). Replaced generic "real customer signal" paragraph with 3 concrete named customer wins (Dust SOC 2 Type II in 3 weeks · Cursor Fortune 100 unlock · Clay six-figures saved). Added honest tail-note that these are Vanta-curated case studies showing upper range, not median. Added back-link to the new Service Partner service page.
Across 4 LinkedIn intake batches PJ scrolled today: enriched Goran Cvetic (Spring EQ context), Alek Diachenko (Streamline Development email + capital markets wedge), JP Roach (Cresa Step-2 ready), Sarah Picha (acquirer wedge), Hunter Jensen (CONVERGENCE moment + 2024 thread surfaced + email from prior history), Anthony Correia, Nes Lopez, Ping Wang, Daniel Altenburg orbit-target reaffirmed. Plus added 7 new high-fit prospects: Alan Nelson CFP (Solana Beach Tier 1!) · Jed Morris (GovCon book launch May 2026) · Lamar Rutherford (Vistage) · Jennifer Barnes (237 mutuals — highest in network) · Nicko Trataris (2nd convergent operator after Hunter) · Alex Brown (Carlsbad DTC) · Michael Selepec (Eaze/Yammer alum). All landed in dashboard via the new Worker pipe.
(1) Hunter Jensen Convergence — same wedge + same words by independent SD operator = market validating the wedge, not coincidence. (2) Dual-Purpose Page Compound — building one page that names 2-3 real operators in the same buyer-side wedge converts each operator into co-distributor; 3-10x distribution leverage from the same build effort. (3) LinkedIn Paste Intake Rhythm — architecture upgrade unlocked daily intake rhythm (paste → enrich → live in dashboard); pre-grad weekly batches with encrypt friction, post-grad daily sip-and-ship motion.
Hot inbound from Alec on Node.js export-queue architecture became the day's flagship technical shareable (#82). Justice Erolin's CTO of the Year win became the operator-translation read (#81). SOC 2 7-way comparison (#83). Stablecoin payments guide (#84). Datadog BAA HIPAA guide (#85) — each chasing a specific GSC long-tail query. Bulk freshness on top 300 GSC pages. Dashboard email engine + outreach loop iterated through 15+ improvements. PJ blasted 15+ emails through the new rich-preview stack.
Targets the exact "datadog baa" GSC query (uncovered before today). 3-step BAA request process (right contact → scope confirmation → written enablement), service-by-service eligibility table (APM/Logs/RUM/Synthetic/regions), cost step-up reality ($15K Pro → $80-120K Enterprise+SDS+retention), 5 audit-failing anti-patterns, 8-question FAQ + FAQPage schema. Cross-linked from /hipaa-compliance-software.html + /soc2-compliance-software.html + SOC 2 7-way + operator-translation hub.
Targets "stablecoin payments guide" GSC query. 4-coin honest comparison (USDC / USDT / PYUSD / DAI). 3 use cases that actually matter for small business (international vendor pay, treasury yield, customer acceptance). 6-question decision tree. 5 anti-patterns (test transactions, wrong-chain sends, accounting timing, self-custody risk, tech-for-tech's-sake). 8-question FAQ + FAQPage schema. Cross-linked from FedNow pages + operator-translation hub.
Long-tail GSC win. Vanta · Drata · Secureframe · Sprinto · Scytale · Scrut · Thoropass — 7 honest vendor reads, side-by-side comparison table, 7-question decision tree (rank questions, not vendors). 8-question FAQ + FAQPage schema. Cross-linked from /compliance-automation-tools.html + /soc2-compliance-software.html.
Hot inbound from Alec became the day's flagship technical shareable. 3-layer architecture (BullMQ on Redis OR AWS-native SQS+Lambda) with full ~50-line working code skeleton, 5 anti-patterns + fixes (OOM stringify, OFFSET, in-process worker, HTTP body, no idempotency). Both stacks covered. 8-question FAQ + FAQPage schema. Operator-translation framing in the deeper section.
Reading awards as signal. BairesDev's CTO won Tech Exec of the Year — the panel didn't reward shipped capability, it rewarded translation (4,000-engineer LATAM network → client workflows operators can run on Tuesday morning). Page becomes the warm-touch artifact for direct outreach to Justice + adjacent BairesDev ICs.
News-context contrast fix (white on dark, gold accent). Click-to-fill on news items (auto-populates wedge + fires template + renders preview). 3-layer article-collision dedupe + broader prefix-strip + hyphenation-safe regex. 3-bucket split (🚀 Fresh + Email Ready / 📧 Needs Email / ⏳ Awaiting Reply). 24h sent-today filter. ✕ clear for now button (24h soft-hide via localStorage). Name-truncation fix. Conditional clear-button (only on queued). 🎯 Focus mode toggle (single-click hides all non-Fresh buckets). Live email preview pane. PAGE SHIPPED auto-fill. ⚡ page-shipped badge. Recently-shipped pills. 🏆 Award Win template. Auto-flip timestamp on every send.
Caught Phil Schaben (Compass Real Estate) being matched against Compass Pathways FDA news — false positive. Built EXCLUDE_PATTERNS dict with 16 known-collision orgs (Compass, Apple, Square, Tesla, Ford, Anthem, Delta, United, Oracle, Shell, Target, Chase, Visa, Discover, Amazon, Uber). Added is_disambiguation_false_positive() function — case-insensitive regex per company. 10/10 smoke tests pass. Easy extension as new collisions surface.
Site-wide LINK_MAP run after adding entries for the new shareables (Vanta/BullMQ/SQS/operator-translation/Stablecoin/Datadog BAA). Existing programmatic SEO mesh (HVAC / restaurants / solar / SD-local clusters) got 294 new internal connections. New shareables registered for future auto-mesh as more pages mention "BullMQ" / "USDC" / "Datadog BAA" by name.
Two-pass run on top-300-by-impressions: morning batch did top 200, afternoon extended to 300 + refreshed schema dateModified on the original 200. Each touched page gets a "Last reviewed: 2026-05-06" banner under H1, Article/FAQPage dateModified bumped to ISO today, then shipped to S3 + CloudFront invalidated in batches. Pure freshness signal, zero content rewrites.
PJ blasted 15+ touch-2 + signal-first emails through the dashboard's Worker pipeline. Subject + Hook + rich OG card + CTA button + LinkedIn-linked sig + micro-credibility footer all rendering clean. End-to-end validation of the realtime SEO + signal-first + page-as-payload loop. Recipients spanned BairesDev (Chris Haney) + AssetMark (David Studer) + Yield.xyz (Sebastian F.) + Compass Real Estate (Phil Schaben) + State of Delaware (Mirza Baig) + Vector.co (Sara) + many more.
(1) Better prioritization > more automation — PJ-validated kernel from rejecting a GPT command-center mass-build paste. The doctrine line: "the next unlock is not more automation; it's better prioritization." (2) Anti-enterprise-bloat positioning — PJ-named after seeing the SOC 2 + Stablecoin + Datadog BAA + Node.js pages all click. Every operator-grade SideGuy page should disagree with the vendor's preferred framing in favor of the operator's actual constraint. Not just tone — moat-grade positioning.
Hot inbound from Alec asking about scalable reporting/export queues in Node.js. Built the receipt: 3-layer architecture (BullMQ on Redis + native streams from a DB cursor → CSV → gzip → S3 multipart + presigned-URL delivery), full ~50-line working code skeleton, 5 anti-patterns with fixes (OOM stringify, OFFSET pagination at scale, in-process worker, HTTP body return, no idempotency). Operator-translation framing in the deeper section: capability is abundant, the wiring is the differentiation. PFOS in action — the page is the receipt, the DM is the wrapper.
Reading awards as signal. BairesDev's CTO won Tech Exec of the Year at the 2026 American Business Awards — the panel didn't reward shipped capability, it rewarded the translation layer (4,000-engineer LATAM network → client workflows operators can run on Tuesday morning). Same lane SideGuy operates in at small-team scale, just at different orbit. Page becomes the warm-touch artifact for direct outreach to Justice + adjacent BairesDev ICs.
Two-pass run on top-300-by-impressions: morning batch did top 200, afternoon batch extended to 300 + refreshed schema dateModified on the original 200. Each page touched gets a "Last reviewed: 2026-05-06" banner under H1, Article/FAQPage dateModified bumped to ISO today, then shipped to S3 + CloudFront invalidated in batches of 200. Pure freshness signal, zero content rewrites — keeps the top-ranking pages "alive" in Google's recency view without manual editing.
(1) 📧 Live email preview pane — collapsible panel that mirrors exactly what the Worker injects (rich OG card, "Read the page →" CTA button, LinkedIn-linked sig, micro-credibility footer). Auto-updates on every keystroke. Catches visual issues BEFORE send. (2) ⚡ page-shipped badge on Action Queue rows when notes contain `PAGE SHIPPED:` marker. (3) 🔥 Recently shipped pills — dynamic top-5 most-shipped pages above the static Common Pages row. (4) 🏆 Award Win template — congrats-led operator-translation hook for executive-tier news triggers. (5) 🎯 PAGE SHIPPED auto-fill — page URL field auto-loads from leads.csv marker when modal opens.
End-to-end validation of the realtime SEO + signal-first + page-as-payload loop: news_watcher.py surfaced Justice Erolin's CTO of the Year win → news-context banner appeared in Send modal for Chris (BairesDev colleague) → Signal-first template fired with operator-anchored wedge → Worker injected rich preview card + CTA + sig → email landed clean. Auto-flipped Chris to "sent" status when Worker confirmed. The first send that proved the entire stack works as one piece.
Library hub now indexes 8 entries across the operator-translation lane. New today: ⚙️ Backend Architecture (Node.js export queue) + 🏆 Executive Recognition (Justice Erolin read). Cross-link gravity working as designed — every new shareable in the lane goes both directions: pulls from the hub, pushes back to it.
Audit script (built that morning) surfaced 12,399 broken canonicals across 452,076 files. Same bug class that killed April 9-14 impressions, just at 80x scale. Fixed in 2 hours start to finish. Then kept compounding.
The find: built a 5-min canonical validator + pre-commit hook in the morning. First sitewide run flagged 12,399 broken canonicals — pages canonical-pointing to ghost dirs (/matrix/, /factory/, /scale-pages/, /ai-mode/) that never existed. The fix: self-canonical sweep (every page becomes its own truth) + 7 source generators patched at root cause + 12,378 files shipped to S3 + CloudFront wildcard invalidated + re-audit confirms 0 broken. The result: recovery clock — frozen for 4 weeks while broken canonicals lived — finally starts now. 24-72h for Google to re-trust, 1-2 weeks for impressions in GSC.
Updated yesterday's "Pan Went Viking" page with a top-of-fold May 5 update section (cyan/green recovery accent vs Viking forge red/gold). 4-cell stat grid (12,399 fixed · 7 generators patched · 12,378 shipped · 0 remaining), source-of-discovery story, and links to both git commits + the April 9 origin shareable. Becomes the LinkedIn post landing target.
A meta-receipt page for the universal phrase that underestimates engineering work. 8-entry Hall of Fame (button / typo / Stripe / SEO / AI / data / CRM / perf) each with the ask vs the actual reality. Today's canonical recovery is the live "Today's example." Includes the AI plot twist section (AI hears 'can you just' as green light + ships at industrial scale → human-in-the-loop is the moat) and closes with the 4 cases where SideGuy actually CAN just.
Full operator-pain story: assumed algorithm update / content rot / seasonality — all three wrong. Real cause: ~150 pages canonicaled to a 404 (April), then 12,399 more (today). 4-step audit recipe + recovery timeline + the actual code. Pre-commit guard + source-generator patches mean the same bug class can't kill twice.
Trend Radar #3 mirror (r/EntrepreneurRideAlong score 12). The 5 bugs every indie launch ships silently broken: canonicals that point to nothing · no og:image (grey link previews) · no human escape hatch · no internal link mesh · mobile says "it works" but doesn't. With real receipts from this morning's own fixes. Closes with: nobody owns the infra layer + 5-item launch checklist + Text PJ for an audit.
412 (yesterday) + 200 (morning) + 200 (mid-morning) = 812 pages. Each page now has full conversion stack: orb v2.1 (Text PJ in 1 tap) + bag-of-laughs banner + free-hook CTA. Combined with the morning's self-canonical fix, every defi'd page is now: indexed + recovery-clock-running + has a conversion path when warm traffic returns. Defi-brilliantator metaphor: like CLEAR ⚡ on a flat-line page. Beats writing new content 10x.
tools/triage_leads.py: cold-archive 14d-silent, dead-archive 30d-silent. 5 zombies archived (Bryan Keller, Alexa Warren, Nick Masry, Abby Stewart, Emma Salaya). Dashboard's main queue + follow-ups + check-back hide them; new "💀 Stale Archive" accordion at bottom holds them collapsed. tools/add_new_prospects.py: surfaced 34 untouched candidates from li-network.json — 4 local tier-1 (Justin Coté, Kevin Leap, Lesa Heebner, David Zito) + 30 national tier-2 across 6 clusters (SaaS / Marketing / Sales / Recruiting / RE / Finance). Each gets row in leads.csv + side-CRM .md with cluster context + first-touch wedge.
3 new memory entries: (1) project_canonical_bug_v2_at_scale.md — the 12,399 story + 7-generator patch + recovery doctrine. (2) feedback_og_image_required_on_shareables.md — every new shareable MUST include og:image + twitter:card before ship (caught by PJ as grey letterbox on can-you-just preview). (3) feedback_linkedin_post_rules.md updated — actual LinkedIn surface limit ~1,300 chars not 3,000 (validated 2026-05-05); default target 900-1,100 chars; always wc -c before delivery.
Same template, very different content. Each one took ~15 min start to ship.
Directors, founders, team leads at SD orgs. 5 wins worth building, what to skip, ROI math, $100 Get Unstuck card, anti-walled-garden Shareable section. Article + LocalBusiness + FAQ + Breadcrumb schema.
Agency owners + partners + managing directors. 5 agency-specific wins (proposal pages, AI reporting, RAG, sub-60s response, onboarding). Real ROI math for 15-person $4M shop.
Independent brokers, team leads, brokerage marketing. 5 broker wins, $100/24hr per-listing reads, what to skip in compliance/regulatory. Real listing-read examples linked.
$5M+ inventory tier — La Jolla, Rancho Santa Fe, Del Mar, Coronado, Solana Beach. 5 luxury wins (cinematic per-property micro-sites, private HNW buyer briefs, off-market deal-flow intel, international concierge automation, long-arc seller CRM). Cinematic typography (Playfair Display + gold/bronze/black). Article + LocalBusiness + FAQPage + Breadcrumb schema.
Clinics, med spas, longevity centers, dental, specialty groups. HIPAA-aware from day one. 5 healthcare wins (pre-visit intake → brief, no-show + dormant reactivation, post-visit care plan automation, patient education content engine, internal ops dashboards). Clinical teal palette. Article + LocalBusiness + FAQPage + Breadcrumb schema. Closes "coming next" promise on verticals.html.
Pick-your-lane index for the 4 vertical playbooks + "coming next" queue (healthcare, restaurants, construction, legal, fitness, education).
7 commits, all live on www. Every money-page now has full meta description + Open Graph stack + Twitter Card + JSON-LD schema. Before/after below.
Description: 126/126 (was missing on 28). Open Graph: 126/126 (og:type/title/description/url/image/site_name/locale). Twitter Card: 126/126 (summary_large_image). JSON-LD: 126/126 (LocalBusiness + Article + BreadcrumbList). 0 missing, 0 broken across all 4 layers. Shipped in 5 batches via background SEO agents.
Diagnosed root cause (apex sideguysolutions.com pointing to broken AWS Global Accelerator infra) → migrated DNS from GoDaddy to Cloudflare → set up Page Rule 301-redirecting every apex path to www path-preserved. Result: 19,800 dead Google index entries now resolving cleanly. GSC validate-fix triggered same day. Bucket should drop 19,800 → ~0 over 2-4 weeks. ~7,500 missed impressions / quarter recoverable on top-25 URLs alone. Total time start-to-validation: ~90 minutes.
Cold prospects landing on www now see "🧾 See Receipts" as a secondary CTA right next to "Listen to PJ" — proof surface available in one click instead of buried in nav.
Persistent prospect tracking (data/leads.csv + data/dms/<slug>.md per prospect with full DM draft + 3Q score + intent). LinkedIn Engine: doctrine + 5 templates (problem / story / breakdown / offer / proof) + new_post + log_post tools. Restart-resilient — survives any context reset.
Three parallel ship agents ran today: (1) internal_linker.py — 303 cross-cluster links injected across 99 money-pages (beach-towns, vertical pages, comparison-pages all interlinked; max 4 links/page, idempotent). (2) inject_problems_article_schema.py — 2,024 problem pages stamped with Article + Person (author=PJ) + Organization (publisher) schema added to existing @graph blocks (10 outliers without existing JSON-LD skipped; will be addressed in a follow-up). E-E-A-T signal at scale; rich-result eligibility; citation magnet for ChatGPT/Perplexity/Claude. (3) inject_aeo_tldr.py — 100% (126/126) money-page coverage with a clean <strong>TL;DR:</strong> block at top of <main> (problem + solution + outcome, ~50 words, data-aeo-summary marker for AEO crawlers). All scripts idempotent, fully reversible via git, deployed to S3 + CloudFront invalidated in batches.
Dashboard now defaults to a "📤 Send Now" filter chip pinned at top-left — surfaces every queued prospect with drafts ready to fire. Timing engine v2: 🆕 NEW badges (last 36hrs), check-back dates per prospect, 7 urgency states (🔥 RESPOND NOW · ⚡ today · 🔔 this week · ▶ ready · ⚠️ stale · ⏸ wait · 💀 dead). Live merge of manual side-CRM (45 prospects) + 90-blast queue. AES-256-GCM encrypted; live data fetched at runtime. Per-row inline DM preview modal pulls full side-CRM context + paste-ready DM block from encrypted bundle.
Day 2 of the swarm: (1) AEO TL;DR cards shipped to 2,032 problem pages — 100% coverage on /problems/ now (matches money-pages 100%). Total AEO citation-ready surface: 2,158 pages. (2) Fresh JSON-LD (Article + BreadcrumbList + Person + Org) injected into the 12 outlier problem pages without existing schema — full problem-page schema coverage now 2,043/2,043 (100%). (3) 4 new GSC-driven money-pages live from real demand data (AI Storage Solutions, Electric Panel Upgrade SD, Emergency HVAC SD, Enterprise Software Consulting). (4) Flex-shareable doctrine: every meaningful LinkedIn post now links to a custom shareable URL with topic-specific OG image. Adobe-Semrush news-take got its own 1200×630 cinematic OG card. (5) Reusable OG image generator (tools/generate_og_image.py) — fixed grey-bar issue on 67 shareables. (6) Smart-techified embed/link-back widget injected into 16 custom shareables (personalization via ?to=Name URL param, click tracking via localStorage, 3 copy-paste assets per widget). (7) 2 new vertical money-pages (anti-bloat software builds + N. County RE tech help). (8) /about/pj-zonis.html E-E-A-T author hub. (9) Payment + backlink CLI loggers (tools/log-payment.sh, tools/log-backlink.sh).
Real prospect feedback came in: "messaging too abstract, hard to understand who it's for, conversion depends too much on direct contact, no case studies or proof of results." Response was 4 surgical additions (no rewrite of the existing 10K-line homepage): (1) plain-English subhead under hero ("tech, AI, and decisions you don't know how to handle. Single operator in Encinitas. $100/hr or per-shareable."). (2) "Who SideGuy helps" 4-card audience segmenter (Realtor / SMB / Operator / Stuck on a decision) — each card links to its actual vertical money-page. (3) "How it works" 3-step scaffold (text PJ → free sanity check → ship in 3-7 days vs 6-week SaaS sales cycle). (4) "Real wins · Real names" NAMED proof block — Bob Visotcky reply, Bill Gerber omg-optical custom shareable, Robert Brown UW shareable, Cardiff $2.8M listing read, 19,800 GSC recovery, 153-shareable browse-all card. From client comment to live homepage: ~60 minutes. Fully additive, fully git-reversible.
Flex-shareable doctrine in action: news-take ("Adobe bought Semrush — that's not an SEO story") shipped as a custom 1200×630 cinematic OG card + Article-schema page + LinkedIn post. v2 OG image upgrade: tighter typographic hierarchy, eyebrow rule, divider line between headline + subhead, byline ("PJ Zonis · Operator · San Diego") above brand mark, gradient bottom accent. The whole pipeline (insight captured → branded shareable → OG image → LinkedIn copy → live + trackable) now reusable for every future news-take. Mount Rushmore "five faces" heading polished too — was off-white blending into dark gradient bg, now gold with glow.
Lesson learned the hard way: 3+ unreplied touches on the same prospect burns goodwill. Diagnosed and tagged 4 prospects as STOP PATTERN (Bill Gerber: 2 unreplied in 3 days; Gary Robinson: 2 unreplied; Emma Lefkowitz: 3 unreplied since 2024-10; Fred Grier: original pattern). Dashboard upgrade (plaintext source, ready for next encrypt cycle): auto-detects "stop pattern" / "3 unreplied" / "don't re-touch" markers in prospect notes and renders a red gradient pill on the row name. Plus a "⚡ Recent Activity" panel at top of Side CRM showing last 5 most-recently-touched prospects with relative time. Operator-grade situational awareness instead of memory-based re-touching.
Premium curated index of the actual tools that build the modern internet (Claude Code · Cursor · ChatGPT · GitHub · AWS · Cloudflare · GoDaddy · LinkedIn · GSC) with PJ-vetted "use when / skip when / PJ's take" notes per tool. First walkable path live: "Ship a real website (under $50/mo, no agency)" — 7-step sequence tied to specific tools with real receipts. Folds operator-atlas + routing-engine + tool-marketplace concepts into one coherent product per the premium-internet-help-desk frame. Cinematic OG, full schema, JSON data layer for adding more paths later.
Public curated index of all 153 shareables shipped to date, organized into 7 categories (news-takes, case-studies, real-estate, north-county, tools-reviews, music-events, local-biz, linkedin, operator-plays). CollectionPage + ItemList + BreadcrumbList schema for hub-cluster authority. "Be Featured" editorial-bar CTA (NOT pay-to-play marketplace) is the natural-backlink mechanism: real work earns a permanent URL on www.sideguysolutions.com + an embed widget the client can paste on their own site, creating a transparent, disclosed, editorially-earned link loop both ways. Defensible vs every gray-hat backlink scheme.
Built the batch-outreach factory: filter PJ's 6,262-contact network for SD locals (222) → rank by decision-maker × recency × email × score → exclude already-in-CRM (46) → top 100 enriched with cluster→wedge mapping + tracked landing URL templates + paste-ready DMs. v3 DMs: 2-3 deterministic variants per wedge (no two prospects in same cluster get identical opener), honest "sweeping my SD network" framing instead of pretending bespoke research, position+company woven in, "connected_phrase" turns days_ago into natural English ("a few months ago"). Operator switcher on dashboard — sig/phone/?from= URL slug all swap live; per-operator localStorage tracking; ready for second operator to drop into Operator Slot 2. Standalone offline viewer at dashboard/batch-2.html (no encrypt needed) + integrated into encrypted live dashboard.
First validation run of the daily news-radar → take → ship → distribute → outreach workflow. News-radar surfaced Anthropic's BioMysteryBench announcement (Claude solving 30% of PhD-level bioinformatics work) as the top SideGuy-relevant story of last 24hr. news_to_shareable.py shipped the take in ~5 min: lede + AEO TL;DR + commentary + Karpathy video embed + PJ avatar byline + "the leverage layer just leveled up" frame + Anthropic $900B-tier intelligence positioning. Full schema (NewsArticle + Article + BreadcrumbList). LinkedIn post posted same hour, plus 4 strategic comment-bombs on Sequoia repost + Stephanie Zhan original + Jimmy Liu breakdown + Gina Mancuso eXp post. Jimmy Liu (post author) replied "agree 👍" within 30 min — first warm-engagement signal on a SideGuy news take. Trent Cady REPLIED to existing direct-pitch DM with "Thanks! Will shoot you a text response" — first warm-to-text conversion of the SideGuy era; pre-staged response ready, awaiting his text. The factory pattern from yesterday's doctrine essay literally compounded today.
Sales infrastructure (NOT feature build) so when someone clicks "Be Featured" or texts asking about pricing, there's a clean page to point them at. Four tiers: $100 Quick Clarity Page (24hr) · $200 Custom Shareable Build (24-48hr) · $500 Small Business Tool Path (3-7 days) · $5K-30K Custom Operator Setup (2-6 weeks). Light Ocean, schema-rich (Service entries + WebPage + BreadcrumbList for each offer), JSON-driven via data/offers.json + tools/build_paid_help.py renderer (same pattern as Help Desk + Wall refactors). No retainer language anywhere. Doctrine block: "no demo call, no SaaS subscription, no upsell pressure, no agency mechanics." Direct text-to-PJ CTA per tier with prefilled SMS body.
Three internal tools that compound the existing factory graph. tools/spawn_from_featured.py — closes the Featured Pipeline auto-spawn loop (when PJ flips a queue row to status='building', this tool picks it up, prompts for missing fields, dry-runs spawn_personal_page.py, asks confirm, ships, then auto-updates queue with status='shipped' + shareable_url). tools/gsc_quick_audit.py — point at any GSC export folder, surfaces page-2 quick wins (queries at position 11-20), high-impression/low-CTR opportunity pages, and apex-vs-www canonical health (read-only). First-run finding from 2026-04-30 export: page /ai-data-center-construction-companies.html ranking #80 for "data centre construction companies" (UK spelling) — surgical fix shipped (added "centre" as synonym in title + meta + body for global market coverage). tools/build_paid_help.py — JSON-driven renderer for /paid-help.html (4 offer tiers from data/offers.json + Service schema per offer).
First live test of a new SideGuy positioning thread: "the onboarding layer for complex tools that nerds build but operators can't figure out how to use." Demian Neidetcher (VP at MLB) shipped Diagrammo (diagram-as-code, .dgmo files, built with Claude Code). His README is for builders. Operators bounce. So I shipped the operator-translation layer — a 30-second paste-and-render onboarding page on the SideGuy domain with 4 ready-to-use snippets (universal business loop · user flow · comparison chart · service architecture), HowTo schema, full OG card, dedicated Demian credit block, and the "Want this for YOUR tool?" CTA introducing the new "launch services catch-all" offering shape. PJ commented publicly on Demian's launch post + sent a DM linking the page + posted a standalone X positioning post + updated his X profile to reflect the full SideGuy thesis. The whole engagement is the case study being written in real time for the new positioning.
Two new positioning insights crystallized during the Diagrammo engagement, both saved to persistent memory for future Claude sessions. (1) The thesis: SideGuy = the operator-translation layer for tools the README forgot, with a human in the loop (vs full-AI hype). (2) The timing + tell: "launch services catch-all for smart builders who don't know they're overdoing it" — engage at launch, when the builder is heads-down on features and missing the operator audience. ICP signals to spot in the wild: just-launched tool, README assumes you already get it, comments are "looks cool" not "I shipped X with it," builder is solo or VP-tier IC who built the tool on the side. Productized offering shape (future): "Project Launch Catch-all" tier — fixed price, X-day turnaround, includes operator-onboarding shareable + use-case snippets + X/LinkedIn distribution + sniper DM list to relevant operator audience. Diagrammo is case study #1 mid-write.
Three distribution moves to expand SideGuy's surface beyond LinkedIn. Hacker News: submitted "I built an existence proof of agentic engineering at single-operator scale" (the doctrine essay) under new account pjz2000 — cold-account dynamics mean limited /front upside on first post but builds HN presence for future submissions and the post itself becomes a permanent HN-indexed reference. X positioning post: "Onboarding for complex systems built by nerds — with a human in the loop. Most powerful tools ship a README built for builders. Operators bounce at first-use. So I ship the translation layer..." linking the new Diagrammo for-operators page as live proof. X profile rebuilt with full-project bio: "Single operator. Full AI factory. Pages, SEO, custom tools, onboarding for nerd-built things. Encinitas. Clarity before cost. Text PJ — 858-461-8054." Display name + location + website all set. Operator-tier consistency across LinkedIn / X / HN / SideGuy domain.
The full SideGuy doctrine in three layers, finally given a public URL: (1) Help Desk Between Systems = WHAT SideGuy is (highest-level identity — bridges any two systems where one ships and the other tries to use). (2) Operator-Translation Layer = WHO it serves (builder-tier clients whose READMEs are written for builders, not operators). (3) Progress in Motion = HOW it lands clients (use the thing, build better on top, ship the live URL unprompted; aliases: Smash-Back, Blind Reach Around, Dark Horse). Load-bearing principle: every system has its own rules. SideGuy ships artifacts that follow BOTH rule-sets at once. Includes FAQPage schema (5 Q&As) for AEO citation. Diagrammo / Demian engagement is case study #1 with all 3 sub-shareables linked.
Three live shareables for the Demian Neidetcher / Diagrammo engagement — first end-to-end demonstration of the Progress in Motion doctrine in production. (1) Operator-onboarding page — 30-second paste-and-render onboarding with 4 ready-to-use snippets, FAQPage + HowTo schema, full Demian credit. (2) Friction-test page — 7 specific UX fixes after PJ tried to build his factory map IN Diagrammo and hit file-creation friction. Operator-tier real-use feedback on Demian's domain + with the .dgmo source for the SideGuy factory included. (3) Stuck-asking-for-help page — friendly version of the same engagement, frames it as "I tried, got stuck, want to help?" Open invitation + no critique. All three cross-linked, all three with FAQ schema, all three become permanent SEO-indexed proof points for the Launch Catch-all tier ($500-2K) regardless of how Demian responds.
Live San Diego concert + event inventory aggregator. Cross-matches Ticketmaster (primary) against SeatGeek (secondary marketplace covering StubHub and other resellers via SeatGeek's data partnerships) on the same shows, computes the spread, color-codes (green ≤+25% / yellow +25-75% / red ≥+75%) so visitors see whether the secondary markup is worth the convenience or whether to wait. Currently 426 real Ticketmaster events live for SD venues (Belly Up, Music Box, House of Blues, Observatory, Casbah, SOMA, Brick By Brick, etc.). SeatGeek key pending — when added, the spread column auto-populates. Tool stack: tools/sd_ticket_aggregator.py (TM + SG fetcher with fuzzy event-matching, certifi-aware SSL, mock mode) + tools/build_sd_tickets_page.py (JSON-to-HTML renderer with venue grouping, ItemList schema, AEO TL;DR). Hourly cron-ready. Same model generalizes to: real-estate cross-source (Zillow/Redfin/Realtor), used-car spread (KBB/Carvana/CarGurus), flight deals from SAN, restaurant reservation spread.
Three operator-infrastructure improvements. (1) Batch 3: 100 fresh prospects pulled from PJ's 6,262-contact network, ranked by composite score (decision-maker × recency × locality × email × cluster), excluding everyone already in CRM + Batch 2. v3 deterministic DMs per cluster→wedge mapping, references the new $100 Spark Plug tier where wedge-fit. Top clusters: SaaS/Tech (30), Marketing/Agency (14), Healthcare (14). All added to leads.csv as queued. Encrypted dashboard now displays unified "Batch 2 + 3" section with per-row batch indicator pill + "Batch 3 only" filter chip. (2) improve-bot OAuth fix: diagnosed 2026-04-30 9am cron silent-failure as macOS Keychain unavailable in cron's stripped env — claude CLI returned "Not logged in" instead of HTML. Fixed via claude setup-token (long-lived OAuth) + sourced from ~/.claude/sideguy-cron-secrets. All 3 background agents (3am swarm-improver, 7am morning-snapshot, 9am improve-bot) now end-to-end functional. (3) `redash` one-command wrapper: consolidates the 4× daily encrypt+ship dashboard cycle into a single shell alias with macOS Keychain password storage. Saved 30+ seconds per cycle, zero typing errors.
Live San Diego concert + event inventory aggregator with primary-vs-secondary spread side-by-side. Architecture: Ticketmaster Discovery API (425 events) + SeatGeek API (100 events) cross-matched via venue alias map (Belly Up = Belly Up Tavern = The Belly Up, etc.) + fuzzy artist-name matching with stop-word filtering. TM-as-source-of-truth doctrine: for unmatched TM events in next 14 days, do targeted SeatGeek lookups to pull secondary inventory precisely. Fallback search-link buttons (StubHub + SeatGeek) on every event so users always have a path even when no direct match. Color-coded spread (green ≤+25% / yellow +25-75% / red ≥+75%) so visitors see if secondary markup is worth the convenience. 40 SD venues grouped, sorted by event count (Belly Up Tavern 94 events leads, then Music Box, House of Blues, Observatory, Brick By Brick, Casbah, SOMA, Rady Shell, etc.). Hourly cron-ready. ItemList + Service schema, AEO TL;DR, full FAQPage. Same compounding aggregator model generalizes to: real-estate cross-source, used-car spread, flight deals from SAN, restaurant reservation spread.
Help Desk Between Systems doctrine applied to local home services. The model: PJ doesn't expose a directory of pro phone numbers; instead, every CTA on the page is "Text PJ" with a pre-filled SMS body containing the trade tag. PJ routes you to a vetted pro from his actual SD network and stays in the thread for quality control on both sides. The page: 12 trade tile cards (plumber, electrician, HVAC, roofer, handyman, landscaper, painter, drain/septic, garage door, pest control, general contractor + a "Not sure?" card), 11 separate Service schema entries (one per trade — each independently rich-result eligible), LocalBusiness schema with full SD service area, FAQPage schema, Yelp/Angi/Thumbtack comparison table that explains the 20-30% marketplace-fee passthrough that inflates quotes. SEO test pages (substantive, not thin): /shareables/plumber-san-diego.html (~1,200 words with 4 SD-specific local depth cards: slab leaks in 1960-85 homes, coastal water heater corrosion, hard water scale, sewer root intrusion + 8 cost line items + 6 FAQs) and /shareables/electrician-san-diego.html (~1,300 words with 5 SD-specific cards: pre-1990 panels, EV surge + SDG&E rebate, salt-air corrosion, solar interconnect gotchas, ADU electrical + 9 cost items + 5 FAQs). 4-6 week ranking test before expanding to HVAC/roofer/handyman per-trade pages.
Manual end-to-end validation of the OAuth fix from earlier today, run inside env -i (cron-stripped environment) to exactly simulate the 9am cron's runtime. Result: 1/2 pages successfully rewritten (the 1 was hub.html which is in the protected list and skipped as expected; the actual rewrite of /pages/matrix/roof-repair-system-not-working-properly-common-mistakes-chicago.html ran clean — Claude OAuth via secrets file ✓, page rewrite ✓ (18,876 → 17,679 chars), related-links injection ✓ (4 related pages), PJ-Explains widget injection ✓, git commit + push ✓). All 3 background agents are now end-to-end validated: 3am swarm-improver (PATH-fixed wrapper, validated via manual run earlier today), 7am morning-snapshot (running daily since 2026-04-30), 9am improve-bot (validated this evening with the OAuth fix). Tomorrow morning's 9am cron will be the first true autonomous run with everything working.
Surfaced live co-build as a feature inside the existing $200 Custom Shareable Build tier instead of adding a 7th tier (avoids decision-fatigue). The line: "Optional live co-build — text/chat me while I build it, watch each ship in real time, request changes mid-flight (no extra charge if you want it sync vs async)." Pattern doctrine: validate demand inside an existing tier before fragmenting the offer ladder. If 3+ prospects start asking specifically for the co-build experience, THEN promote it to its own tier with real demand backing it. Demonstrated live earlier today when the Rick Beato shareable embedded the Yngwie/Beato YouTube video in 90 seconds while PJ was on chat — the co-build IS the offering, the page just names it.
Built tools/signal_to_page.py — takes a numbered signal from data/reddit-signals/queue-YYYY-MM-DD.md, fetches the Reddit thread via JSON API, scaffolds a SideGuy-grade shareable (Light Ocean, Article + FAQPage + BreadcrumbList schema, AEO TL;DR auto-pulled from queue angle, sister cross-links, attributed Reddit quotes with link-backs, Text PJ orb). Dry-run by default · --write commits · --deploy ships to S3 + CloudFront. First live page: Upstairs-too-hot 4-path decision tree (signal #2 from today's queue) — covers attic insulation > zoning damper > mini-split > full system replacement in ROI order, mapped to 60s–80s NC SD coastal homes, with honest "what HVAC contractors don't lead with" callout. Total time signal → live: ~10 min.
Added DIY.SE hvac/electrical/plumbing + Webmasters.SE seo/google-search-console feeds — surfaces real technical questions from operators in our beat. Scored items per run jumped 124 → 205 (+65%). Required two upstream fixes: (1) swapped fetch_feed from urllib to requests because Cloudflare's WAF fingerprints urllib's TLS handshake and returns 403 (saved as feedback memory for future feed work), (2) extended parse_feed's xmlns-strip regex to also strip element prefixes (StackExchange Atom uses <re:rank>). Doctrine: Reddit Signal Layer + StackExchange = Layers 3 + 5 of the new 7-Layer Source Stack doctrine.
Parent doctrine for triangulating any high-intent keyword across 7 source layers (Wikipedia / SERP top 5 / Reddit / YouTube / Quora / Reviews / Directories) before shipping the SideGuy 8th-layer upgrade. Operating line: "Start like Wikipedia. Structure like top sites. Listen like Reddit. Explain like YouTube. Answer like Quora. Reality-check with reviews. Price-check with directories. Finish like SideGuy." SERP Mirror doctrine = Layer 2; Reddit Signal Layer = Layer 3 — both are sub-doctrines under this stack. Origin: PJ pasted a GPT bash-script version; doctrine kernel was strong, brittle SERP/Quora/HomeAdvisor scrapers were skipped, only legit signal sources (StackExchange RSS) tooled.
24KB cinematic page positioning SideGuy as the routing + human layer between automation tools (n8n, Make, Zapier, Claude, OpenAI, etc.). Includes 5 SideGuy automation patterns mapped to existing factories, comparison table (n8n vs Zapier vs Make vs SideGuy), Service + FAQPage + BreadcrumbList schema, AEO TL;DR card, "What this actually changes for you" section in PJ's voice ("it doesn't bro-automate everything, it just makes work more interesting"), soft Encinitas local mention. Productized via Spark Plug ($100) + Tool Path ($500) tiers.
~1400 char LinkedIn post leading with the new doctrine line ("The most honest pitch for adding AI tools — to your life AND your business: it doesn't bro-automate everything. It just makes work more interesting"). Both personal life AND business framing (kids' appointments, friend you've been meaning to text + lead intake, invoice chase). Links to the new n8n shareable. Anti-guru positioning meant to stand out in feed of productivity-bro hype. Companion to the n8n shareable shipped same morning.
Help Desk Between Systems doctrine extended one more layer up. Yesterday: SideGuy routes between automation tools. Today: SideGuy routes between AI MODELS too (Claude / DeepSeek / GPT) based on what each task needs. Decision rule: thinking → Claude · scaling → DeepSeek · tool-connecting → GPT · trust → PJ. Plus 4th doctrine layer added: "It just makes work more interesting" (the WHY). Full doctrine stack now: (1) Help Desk Between Systems = WHAT, (2) Operator-Translation Layer = WHO, (3) Progress in Motion = HOW, (4) "It just makes work more interesting" = WHY.
Two high-readership news comments fired same morning to compound SideGuy doctrine reach. (1) Comment on WSJ Meta layoffs/AI-spending article (10M+ follower audience) — frame: "the human layer Big Tech is cutting is the moat for single operators who keep it." (2) Comment on Jennifer Elias / CNBC Apple earnings article (87K readers, 118 reactions on parent post) — frame: "Apple shipped most popular iPhone lineup ever WITHOUT AI restructuring layoffs. Discipline > AI panic." Both planted the same Help Desk Between Systems doctrine on opposite-side-of-the-coin frames. News-comment-bomb cadence: 2/day max to avoid spam-pattern.
All three from yesterday's queued candidates. Lauren = sharp public comment on her affordable housing post (planted operator-tier framing without pitching). Andres (Owner ZdMenu) = workflow-Q DM about restaurant onboarding (no pitch, building dialogue). Daniel (Encinitas neighbor, Open to Work) = peer-to-peer coffee-style DM. Pre-staged drafts in data/linkedin/2026-05-01-outreach-candidates.md fired same morning as the n8n shareable + Meta + Apple comments — 5 LinkedIn surfaces in flight simultaneously for max algorithm visibility window.
Foundation push. Shipped LocalBusiness schema + geo meta tags (geo.region US-CA, geo.placename Encinitas California, geo.position 33.0370;-117.2920) + sister cross-links across all NC SD shareables. 13 pages got full retrofit (san-diego.html, sd-tickets-live.html, encinitas-guide.html, solana-beach-guide.html, all 4 *-get-unstuck pages, all 5 *-vacation-rental-direct-booking pages). 3 pages already had LocalBusiness — got geo meta + extra cross-links (sd-home-pros, plumber-san-diego, electrician-san-diego). Reusable script saved to tools/_local_seo_retrofit.py for future runs. Local-pack ranking + AEO citation surface boost across the entire NC SD shareable cluster.
Signal infrastructure. Added 8 Reddit subreddit RSS feeds to existing news_radar.py — r/sandiego, r/Encinitas, r/smallbusiness, r/Entrepreneur, r/HomeImprovement, r/RealEstate, r/SEO, r/automation. Each feed scored with weight 1.1-1.6 (lower than dedicated news feeds so big national stories still rank above sub posts). Reddit signals now flow through the same pipeline as Hacker News + TechMeme + Anthropic news. Confirmed working: 125+ items scored across 19 feeds in 48hr window. Daily Reddit signal queue now lives at data/reddit-signals/queue-YYYY-MM-DD.md — PJ reviews + picks winners to convert into SideGuy response pages. Doctrine: Reddit exposes demand, SideGuy owns resolution. Smart programmatic pages from real signals — not template clones.
Two SD listings I built reads for as proof. Each has SingleFamilyResidence + Offer + Article schema (eligible for Google real-estate rich results).
Verdict (depends — strong if you build the 2nd ADU, mediocre if not), opportunity (existing income + ADU upside), risks (top-of-comp pricing, permit timeline, STR rules), math (cap rate breakdown).
Verdict (overpay if buying for ROI, fair for daily-life), opportunity (west of 101, walk to Cedros, low-maintenance), risks (top of micro-band, no upside lever, narrow resale audience), math.
Each was built after a real LinkedIn interaction. Live URLs, real names. (Healthcare ones use generic prospect names — others are real people.)
Built for a cardiology group exploring scaling. Read on EHR fragmentation, the unified operational layer approach, what breaks during expansion.
Built in 10 min after seeing a public ask on LinkedIn. 5 SEO-killers in migration + the order of operations + receipts from this weekend's 200k-page work.
Lane comparison (Cadre = enterprise / SideGuy = small fast-turn), 5 lead types Cadre wouldn't take, partnership proposal — not a pitch.
Honest read on his startup positioning + market timing + watch-fors. Built 60 sec after his LinkedIn message landed.
Not just pages — the operating layer behind them.
Lead magnet. Send Specs CTA, $100/$800/$1k pricing tiers, Venmo buttons, FAQ. Service + Offer + LocalBusiness schema (eligible for Google price snippets).
Closer page. 4-step process, payment methods (Venmo/Zelle/Cash App), Service + FAQ schema. Pay → work starts immediately.
Anti-walled-garden positioning. 6 vertical use cases (agencies, RE, healthcare, events, coaches, local), pricing tiers, proof gallery.
Auto-built hub of all story explainers. Each new story rep auto-rebuilds this index + sitemap-recent.
5 cities × 5 intents = 25 city-intent landing pages. Each with 8 internal cross-links, FAQ schema, Breadcrumb schema.
12 plain-English BTC explainer pages + hub. Distribution, lost coins, ETFs, whales, halvings, custody, mining, more. Cross-linked.
Not glamorous, but it's compound interest for search.
176k+ pages got LocalBusiness JSON-LD schema added (didn't have it). 206k+ pages had twitter:card upgraded from "summary" to "summary_large_image" so og:image renders as a big card on social. Site-wide compound SEO win.
Built a custom fastship.sh pipeline (parallel S3 cp + smart CloudFront invalidation) that ships individual files in 5–7 sec instead of the old 30+ min full-bucket sync.
Generated a proper 1200×630 social card image from scratch (Pillow). The site previously had a portrait JPEG masquerading as a PNG that LinkedIn was letterboxing. Now: clean ocean-themed branded card, content-type image/png.
What this proves: SideGuy is one human (PJ) + AI in the loop, shipping at agency velocity at indie pricing. No team to onboard, no procurement, no agency markup. If you've got something that's been "we should build that" for too long — text me. Same-day.
Don't see what you were looking for?
Text PJ a sentence about what you actually need — I'll build you a free custom shareable on the house. No email, no funnel, no SOW.
📲 Text PJ — free shareable