A single-operator operations board. One person, one screen, outcomes only.
Every day it answers four questions:
- What happened?
- What should I do next?
- What is blocking growth?
- Are we moving toward adoption?
No APIs, queues, or infrastructure surface to the operator. You see the board.
You need two terminals.
cd backend
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000The backend is now at http://localhost:8000. It creates its own SQLite file at
backend/data/hub.db on first run. The four agents start running on a timer.
cd frontend
npm install
npm run devOpen http://localhost:3000. That is your board.
docker compose up --buildThen open http://localhost:3000. The database persists in a Docker volume
(hub_data), so your board survives restarts.
| Agent | Job | Real? |
|---|---|---|
| Scout | Finds real conversations to engage | Yes — live Hacker News, GitHub, Reddit (public APIs, no keys). X is excluded because it needs a paid credential. |
| Content | Drafts posts from real internal events | Yes — deterministic generator. Drafts always wait for your approval; nothing auto-publishes. |
| Outreach | Drafts personalized messages for strong opportunities | Yes — deterministic generator. Nothing auto-sends. |
| Proof Gap | Tracks claims that lack evidence | Yes — seeds the build's load-bearing claims and mines new claims out of your drafts. |
This hub will never invent a number or a finding.
- Opportunities are real rows from real public APIs.
- Growth metrics marked derived are counted from real hub activity.
- Growth metrics marked manual (followers, downloads...) are blank until you type in the real number from your own dashboard.
- A claim stays UNPROVEN until you attach real evidence on the Proof Gaps page.
See docs/CLAIM_STATUS.md for exactly what is proven and what is not.
The board can run as an always-on background service on a Mac (auto-starts on boot, restarts itself if it crashes) and be reached privately from your phone over Tailscale — no public hosting, no monthly cost.
- Install Tailscale on the Mac and the phone, signed into the same account.
- Build the frontend pointing at the Mac's Tailscale IP:
echo "NEXT_PUBLIC_API_URL=http://<YOUR-TAILSCALE-IP>:8000" > frontend/.env.local && (cd frontend && npm run build) - Install two macOS LaunchAgents in
~/Library/LaunchAgents— one runninguvicorn app.main:app --host <YOUR-TAILSCALE-IP> --port 8000, one runningnext start -H <YOUR-TAILSCALE-IP> -p 3000— both withRunAtLoadandKeepAlivetrue. Load withlaunchctl bootstrap gui/$(id -u) <plist>. - On the phone (Tailscale connected), open
http://<YOUR-TAILSCALE-IP>:3000in Safari → Share → Add to Home Screen. It installs as an app icon named "Wise.Est Hub" and opens full-screen.
Binding to the Tailscale IP (not 0.0.0.0) keeps the board private to your own
devices — it is never exposed to public Wi-Fi or the internet. There is no login,
so do not bind it to 0.0.0.0 or put it behind a public URL without adding auth.
cd backend
. .venv/bin/activate
python -m pytest -q17 tests cover the API, the approval workflow, agent output, proof-gap creation, scoring, and dedup.