All work
Full-Stack

PageNearby: Autonomous Business-Website Generator

A 24/7 pipeline that finds businesses without websites, writes each one a page with a local model, and publishes it.

Patched Go scraper, local Qwen MoE and cloud-model workers producing schema-constrained briefs, Jinja templates with 51 themes, masked phone reveal with consent, IndexNow, and a Task Scheduler watchdog that keeps it building unattended.

PageNearby: Autonomous Business-Website Generator — illustration
What makes it serious
  • 2,800+ pages live within a day of launch, 30,000+ rewritten since
  • Scraper dependency bug traced and patched at source
  • Phone never in HTML: masked and revealed via consent endpoint
  • Watchdog-supervised unattended operation with power-cut recovery procedure

PageNearby started as a question: could a single PC build a useful website for every small business in India that has none? The pipeline scrapes Google Maps listings, filters for businesses with a phone, good ratings and no site, asks a local 35B mixture-of-experts model (3B active, fitting a 16 GB GPU) for a schema-constrained JSON brief, renders a themed Jinja page, and publishes it under a city/area/slug URL with a lead form that reveals the masked phone number only after consent.

Getting the scraper to run on Windows meant tracing a release binary failure four layers down into a dependency where a closed-page check was inverted and Chromium crashed under single-process mode; the fix is a patched fork and a rebuilt binary. Multiple writer backends (local Qwen, Haiku, Sonnet, Gemini, Codex) run as independent workers behind a watchdog that restarts anything missing every ten minutes, pauses scrapers under memory pressure and survived a mains power cut. A registry-corruption incident led to a hard rule: the path registry now raises on damage instead of silently handing one business's URL to another.

The site is live and indexed, with thousands of pages, city hubs, legal pages and a removal-by-email clause. AdSense placement on business pages was deliberately held back pending a scaled-content review.

How it works

  1. Scraper harvests Google Maps listings per city and category
  2. Filter keeps businesses with a phone, rating and reviews but no website
  3. Model worker writes a schema-validated brief for each business
  4. Jinja template renders a themed page; hubs and sitemaps rebuild
  5. Packer ships changed files to hosting and pings IndexNow
  6. Lead form reveals the phone after email consent and logs the lead
Stack
PythonGoPlaywrightOllama (Qwen3.5 MoE)Jinja2PHPHostingerTask SchedulerIndexNow
#site-generator#scraping#local-llm#seo#automation#jinja#python