The goal
Turn a broad market into a timely research queue
A sector search tells you who exists. It does not tell you which companies warrant attention this week. Dealroom Signal adds a timing screen, while company records add context for the analyst reviewing the result.
The output is a sourcing queue, not a forecast. Its job is to focus research on a manageable set of companies with stronger current signals.
python -m venv .venv
source .venv/bin/activate
pip install requests python-dotenv
Store DEALROOM_CLIENT_ID and DEALROOM_CLIENT_SECRET in a local .env file. Keep it out of version control.
Use Timing to screen, not to promise
The Timing component of Dealroom Signal measures how likely a company is to raise its next round soon. The Team component captures founder and team evidence. Both accept numeric filters from 0 to 100.
| Filter | Role in this workflow |
|---|---|
| signal_timing[gte]:70 | Requires a stronger next-round timing signal |
| signal_team[gte]:50 | Removes companies with a weak Team component |
| signal_rating | Returns an overall Signal score for ranking and review |
Important response detail
The company list can filter on Timing and Team components, but company records return the overall Signal score. Preserve the thresholds with the saved query instead of presenting unavailable component values.
Keep the screen commercially useful
Resolve readable labels through the reference endpoints, then constrain stage, geography, operating status, age, and prior funding.
The upper funding bound keeps later-stage companies from dominating the queue. Current headquarters defines Europe in this example.
Combine the constraints in one company query
company_filter = "and(" + ",".join([
"tag_id[eq]:2181301",
"hq_location[eq]:34",
"is_startup[eq]:true",
"company_status[eq]:operational",
"launch_date[gte]:2019",
"total_funding[gte]:1000000",
"total_funding[lte]:50000000",
"signal_timing[gte]:70",
"signal_team[gte]:50",
]) + ")"
Use GET /reference/filters/search and GET /reference/filters/location/values to resolve the tag and location IDs. The downloadable script does both before requesting companies.
Rank the screened cohort by overall Signal
Once every result has passed the component thresholds, sort by the overall Signal score. Ask for a wider pool, then show a concise queue.
payload = client.get(
"/data/companies",
{
"filter": company_filter,
"sort": "-signal_rating",
"limit": 50,
"include_total": "true",
"currency": "USD",
},
)
candidates = rows(payload)[:12]
Retain the returned funding, headcount growth, hiring status, and open roles. These fields help an analyst challenge or strengthen the initial timing screen.
Real output
Inspect the next-round research queue
Every company shown passed the Timing and Team thresholds in the saved query.
Snapshot generated from the Dealroom API. Re-run the script for a current queue.
Research the company before acting on the signal
Signal helps decide where to look first. It does not establish that a company is fundraising, needs capital, or fits your investment thesis.
- Confirm sector fit beyond the taxonomy label.
- Review the latest funding round and estimate runway separately.
- Check whether headcount growth reflects expansion, recovery, or a small base.
- Validate hiring activity and leadership changes from primary sources.
- Use direct company evidence before making contact or recording a fundraising claim.
Complete example
Download the candidate-queue generator
The file includes OAuth2 authentication, bounded retries, taxonomy resolution, reusable thresholds, Markdown output, and structured JSON.