EchoRidge Search is an AI-powered business intelligence platform created by Roman Slack that automates market research by combining business discovery, web scraping, and hybrid LLM scoring with real-time visualization. It is organized into three integrated systems: a batch-processing pipeline backend, an orchestration API, and a real-time frontend, all wired together through a cloud-native Google Cloud Storage pipeline.
The pipeline backend, written in Python 3.11+ with asyncio, takes a natural-language query (for example, 'Private schools in Tampa'), resolves a geographic boundary, discovers businesses through the Google Places API, scrapes their web content with Firecrawl, and scores them using a hybrid approach that blends OpenAI GPT-4 analysis with a deterministic echo-ridge scoring component. Results are written as structured JSONL files (places, scrapes, scores, and hybrid results) to the local filesystem and uploaded to GCS in a date-organized hierarchy with run manifests and metadata.
A FastAPI orchestration service exposes endpoints to trigger pipeline runs, poll execution status, list historical runs, and serve map-ready visualization data. The Next.js 15, React 19, and TypeScript frontend, styled with Tailwind CSS, provides a pipeline-trigger interface, live status polling, run history pulled from GCS, and faceted search across tens of thousands of companies, using client-side SQLite WASM caching for fast results.
Built by Roman Slack as a production-grade system with Docker Compose, signed-URL file access, deduplication, and rate-limit handling, EchoRidge Search demonstrates an end-to-end, cloud-native approach to aggregating, ranking, and mapping businesses for market analysis.
Key Features
- Natural-language query to geofenced business discovery via Google Places
- Web scraping of business content with Firecrawl
- Hybrid AI scoring combining OpenAI GPT-4 with deterministic echo-ridge logic
- Cloud-native results storage in Google Cloud Storage with run manifests
- FastAPI orchestration with run triggering and live status polling
- Next.js frontend with faceted search and client-side SQLite WASM caching
Tech Stack
Designed and built by Roman Slack, Lead AI Platform Engineer. See more of Roman Slack's work on the projects page or get in touch via the contact page.