Opportunity Radar
| At a glance | |
|---|---|
| For | Resilience BV |
| What it does | Collects tenders and consultancy opportunities, scores them, and supports triage, assignment and Go/No-Go |
| Built with | React and TypeScript, FastAPI, PostgreSQL with pgvector, Docker Compose. Claude for LLM scoring, a local embedding model in Ollama. Hosted on an EU server |
| My role | Built it, with a lot of help from Claude |
Before Opportunity Radar there was a scraper that ran on my laptop. It worked, but only for one person. After a while it had collected 561 leads, and every single one was still marked “New”, because there was no way for two people to work on the same list.
Opportunity Radar is the team version. It collects opportunities from several sources and scores each one against the fit criteria of each practice in the company, first with rules and then with an LLM that reads the description. The team then triages the list, assigns leads to people, discusses them and records the Go/No-Go decision. The reasons behind past decisions are fed back into the scoring, so it gets better at filtering out what we never bid on.
The frontend is React with TypeScript, the backend FastAPI with PostgreSQL, and everything runs in Docker on an EU server. To be honest about how it was built: I relied heavily on Claude to write it.
Related: Smaller builds