46 lines
1.6 KiB
Markdown
46 lines
1.6 KiB
Markdown
# Browser-only ProspectOS
|
|
|
|
This is the stripped-down replacement for the larger ProspectOS application.
|
|
It searches public engines (Google, Bing, DuckDuckGo, Brave Search, and
|
|
Startpage) through a headless Playwright Chromium browser, moving to the next
|
|
engine when a server-side challenge, timeout, or empty/changed result page is
|
|
encountered. Each
|
|
discovery run builds a query from category, keywords, and location, filters
|
|
results already present in the local catalogue by root domain, and stores only
|
|
new prospects. The explorer supports search and human review states
|
|
(`pending`, `approved`, `rejected`, `contacted`).
|
|
|
|
There is deliberately no source registry, email scraper, AI provider, CRM,
|
|
outreach sender, or automatic contact action.
|
|
|
|
## Run with Docker
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
Open `http://SERVER:8000`.
|
|
|
|
If another service already owns port 8000, choose the host port without
|
|
changing the container:
|
|
|
|
```bash
|
|
HOST_PORT=8080 docker compose up -d --build
|
|
```
|
|
|
|
If an engine presents a CAPTCHA or bot challenge, the run moves on to the next
|
|
engine. The app does not bypass challenges or rotate identities. Keep runs
|
|
small and spaced out. The implementation uses a fresh headless browser
|
|
context for each engine and unwraps normal search redirect links before
|
|
deduplication. If every public engine blocks the server IP, the run reports a
|
|
clear `search_engines_unavailable` error instead of inventing prospects.
|
|
|
|
## Run locally
|
|
|
|
```bash
|
|
python -m pip install -r api/requirements.txt
|
|
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium python api/server.py
|
|
```
|
|
|
|
The browser executable path can be changed for the host operating system.
|