Reference
15 routes. Secrets live only in server-side environment variables; the browser holds none. Manual refreshes are limited to one per 10 minutes. Each line says what the route does in plain words: click it for who can call it, what you send, what comes back and the safety limits.
Names of configured integrations only: secret values never leave the server.
Supabase Postgres holds investors, signals and runs.
Gemini Flash reads and judges the evidence.
A second route to the same Gemini Flash model, used only if the first fails.
Tavily finds public pages about each investor.
Fills your name and pitch into each draft. It never sends mail.
The meeting link added to every draft.
The daily report to your phone.
Starts the Monday and Thursday refresh.
Open demo mode: no passcode needed.
Health, the scheduled and manual refresh, and re-scoring.
Every Monday and Thursday the scheduler calls this. It picks the investors worth checking, looks for their news from the last 30 days, scores them and saves the four signal columns. Your notes are never touched.
curl -H "Authorization: Bearer $CRON_SECRET" https://vc-pipeline-intelligence.vercel.app/api/cron/refreshEvery morning the scheduler calls this. It sends you one short message: who to email first, how many follow-ups are due, and who not to chase. It reads the saved scores and changes nothing.
curl -H "Authorization: Bearer $CRON_SECRET" https://vc-pipeline-intelligence.vercel.app/api/cron/digestA refresh can take longer than one server run, so it hands the rest to a new run. The app calls this itself; people never do.
{ "run_id": "<uuid>", "chain": 1..50 }Recalculates every score from evidence that is already saved. It uses no search credits and no AI, and it makes older evidence fade day by day.
curl -X POST -H "Authorization: Bearer $CRON_SECRET" https://…/api/rescore