SG
SideGuy Solutions
Solana Beach · North County
Text PJ
SideGuy Solutions · Built Different · Solana Beach 2026
Bot running live right now — improving pages while you read this

This Site Is
The Resume.

208,000+ pages. An autonomous AI bot that rewrites the highest-opportunity content every day. A LinkedIn engine. Custom voice on every page. Built and run by one person in Solana Beach. If you can do this to a website, you can do it to anything.

208k
Live Pages
24/7
Bot Running
1,000
GSC Signals
0
Team Members
The Autonomous Pipeline

What Runs Every Single Day Without Touching It

1
Google Search Console → Data Pipeline
merge.py pulls the latest GSC export — 1,000 pages of real impressions, clicks, CTR, and position data. Merges, deduplicates, scores opportunity.
merge.py
2
Opportunity Scoring → Priority Queue
Each page scores as: impressions × (50−position)/50 × (1−ctr_ratio). High impressions, weak position, poor CTR = highest priority. Real estate and AI pages get a topic bonus.
improve.py --top
3
Claude Rewrites the Page
Top pages get a full money-page rewrite via Claude API — quick-answer block, H1 with real search queries embedded, price anchor, 6 answer cards, bottom CTA, SMS link. Structured to convert.
claude -p prompt
4
Auto-Injections → Links + Reviews + Voice
After rewrite: related pages get interlinked by slug-token similarity, a Google review nudge is added, and a custom "PJ explains" widget is generated — audio intro + browser TTS with a page-specific explanation.
inject_related · inject_review · inject_pj_explains
5
Git Commit → GitHub Actions → Live in 4 Minutes
Every batch commits to main, GitHub Actions builds the static site from 208,000+ HTML files, and deploys to GitHub Pages. The improved page is live in under 4 minutes with no manual step.
git push · deploy-pages
6
Marathon Mode → Runs All Day
marathon.sh loops continuously — rewrite top 10, CTR-fix top 50, interlink top 200, sleep 10 minutes, repeat. Done-list rotates after 6 hours so no page is skipped forever. The site gets smarter every pass.
marathon.sh · PID running now
The Command Center

One Shell. Total Control.

Every mode is a single command. Preview before applying. Commit only when ready. Git is the undo button.

# Morning run — full pipeline in one command bash tools/improve-bot/morning.sh # Rewrite top 10 highest-opportunity pages python3 tools/improve-bot/improve.py --run --top 10 --commit # Fix title/meta on 50 pages stuck at pos 3-15 python3 tools/improve-bot/improve.py --run --ctr-fix --top 50 --commit # Push near-page-1 pages over the line python3 tools/improve-bot/improve.py --run --winner --commit # Generate LinkedIn posts for today python3 tools/improve-bot/linkedin.py --top 3 # Add PJ explains voice widget to 100 pages python3 tools/improve-bot/improve.py --run --pj-explains --top 100 --commit # Run all day — continuous improvement loop bash tools/improve-bot/marathon.sh
🧠
Real Search Signal Data
Every rewrite uses actual GSC queries — what people are searching to find that exact page. Not guesses. Not keyword tools. Real intent from real searches.
🔗
Intelligent Internal Linking
982-page link index. Pages are connected by slug-token overlap scoring — "stripe vs square" links to "payment processing san diego" automatically, every time.
🎯
Winner Mode
Position 3–20 with 10+ impressions = one push from page 1. The bot identifies these pages and force-rewrites them with sharper query targeting to close the gap.
🎤
PJ Explains — Every Page
Every upgraded page gets a "PJ explains" button. Click it: the audio file plays (who SideGuy is), then browser TTS reads a custom AI-generated explanation of that specific page.
📱
LinkedIn on Autopilot
linkedin.py reads GSC data, scores pages for real estate + AI topics, writes 3 local Solana Beach posts per day, and generates shareable stat cards ready to screenshot and attach.
🛡️
Protected Core Pages
Homepage, 404, hub pages are locked. The bot only touches SEO content pages — never overwrites the conversion layer. Hard-coded guard in every mode.
The Stack

Everything That Makes It Run

Intelligence Layer
Claude Sonnet 4.6 (rewrites + explanations)
Google Search Console (1,000 page signals)
GSC merger + trend detection
Slug-token similarity scoring
Topic priority weighting
Automation Layer
Python 3.13 (improve.py, merge.py, linkedin.py)
BeautifulSoup (HTML parsing, safe injection)
marathon.sh (all-day loop + done-list rotation)
GitHub Actions (CI/CD, auto-deploy)
Git (version control + undo)
Content Layer
208,625 static HTML pages
Money-page template (11-section structure)
LinkedIn post queue (daily, 3 posts)
Shareable stat cards (custom per contact)
PJ explains widget (audio + browser TTS)
Distribution Layer
GitHub Pages (zero-cost hosting)
CNAME → sideguysolutions.com
Sitemap XML (auto-generated)
OG tags (every page, auto-injected)
Google review funnel (g.page/r/...)
PJ
From PJ · Solana Beach
One person. One laptop. 208,000 pages running on autopilot.

I built all of this to prove one thing: you don't need a team, a budget, or a dev agency to run at this level.

One person, one laptop, the right tools connected the right way. The site improves itself. The content writes itself. The leads come in while I'm at the beach.

If you're a realtor, investor, property manager, or small business owner in North County — this is exactly what I build for clients. What you're reading right now is the demo.

Text me and I'll show you what this looks like for your specific situation.

The site isn't just a business card.
It's a live proof of work.
208,000 pages, running on autopilot,
getting smarter every day.

PJ
Text PJ
858-461-8054