Use case

Sourcing private companies for venture capital with growth signals

Turn public signals into a short, repeatable list of private companies worth a first call, with the query, the thresholds to start from and how to read what comes back.

Updated 5 October 20267 min read

A sourcing screen answers one question: which private companies deserve a first call this month? This guide builds one from four signals, which are hiring growth, stack maturity, private capital raises and announcements. It gives the query, the thresholds to start from and a reading of what comes back. It is written for an associate who has to show why a name is on the list.

The signals and where they live

Seven datasets feed the screen. Each goes by its name, with the identifier you type in a query beside it.

SignalDatasetWhat to readWhy it matters
Hiring growthHiring Activity (company_hiring_daily)Open postings, new postingsSpending committed to a bigger team
Go-to-market buildSales Team Metrics (company_sales_weekly)Open sales roles, roles by type, new countriesFirst sellers, new segments, new markets
Stack maturityTechnology Stack (company_technologies) and Technology Changes (company_tech_events)Categories present, tools added in 90 daysThe tooling a team installs as it scales
Site changesWebsite Profile (company_site_facts)Key pages, markets, currenciesA pricing page, a demo request, a new market
FundingCompany Funding (company_funding)Filing date, amount offered, amount soldA notice of a private raise
AnnouncementsCompany News (company_news)Event types, rolesLaunches, partnerships, leadership by role
AttentionIntent Scores (company_intent_weekly)Score, surge flag, evidenceA ranking built from the signals above

Four of these rows carry points in the screen below: hiring growth, stack maturity, funding and announcements. The others give context when you read a name. The hiring, marketing stack and intent datasets are described on their own pages, and every field named here is defined in the data dictionary.

The last row builds on the others. An intent score is built from site changes, postings, filings and announcements, so it ranks companies that the other signals already describe. Use it to order companies that tie, and read its evidence list, which names the five strongest signals behind a score.

Step one: the list

Start with companies that have no listing. Every company carries the identifiers of its listing when it or its parent is listed, so a row with no ticker, ISIN or FIGI is neither a listed company nor a brand of one. Remove the companies already in your CRM by company ID. What is left is the private part of the index, and spot-checking the top of the list confirms that each name is still private.

Step two: four tests

In the sentences that follow, the identifiers are the ones the query below uses.

  1. Hiring growth. New postings over the last 28 days against the previous 28, for companies with at least 10 open postings. A ratio of 1.5 or more passes. The minimum base keeps a company with two postings from topping the list.
  2. Stack maturity. At least three tools added in the last 90 days, counted from company_tech_events where category is technology and change is added. The number of distinct technology_category values in company_technologies says how complete the stack is.
  3. Funding. A private capital raise notice filed in the last 180 days. Keep notices with no company_id in a second list, because the issuer, state and industry are still a lead.
  4. Announcements. At least two announcements in the last 90 days with an event type of product_launch, partnership or expansion.

Each test scores one point. For early-stage names, add the founding sales hire: a posting flagged founding_sales in its sales labels, which also appears as a dated signal in Company Signals. The thresholds are starting points. Run the screen on companies you already know, see where they rank, and adjust.

with hiring as (
  select
    company_id,
    sum(case when day >  current_date - 29 then new_postings else 0 end) as new_recent,
    sum(case when day <= current_date - 29 then new_postings else 0 end) as new_before,
    max(case when day = (select max(day) from company_hiring_daily)
             then open_postings end)                                     as open_now
  from company_hiring_daily
  where ticker is null and isin is null and figi is null
    and day > current_date - 57
  group by company_id
),
stack as (
  select company_id, count(*) as tools_added
  from company_tech_events
  where category = 'technology' and change = 'added'
    and observed_at >= current_date - 90
  group by company_id
),
notices as (
  select company_id, max(filed_at) as last_notice
  from company_funding
  where company_id is not null
    and filed_at >= current_date - 180
  group by company_id
),
news as (
  select company_id, count(*) as announcements
  from company_news
  where "at" >= current_date - 90
    and (event_types::text like '%"product_launch"%'
      or event_types::text like '%"partnership"%'
      or event_types::text like '%"expansion"%')
  group by company_id
),
surging as (
  select company_id, count(*) as surging_topics
  from company_intent_weekly
  where week_start >= current_date - 28 and surge
  group by company_id
)
select
  h.company_id,
  h.open_now,
  round(h.new_recent * 1.0 / nullif(h.new_before, 0), 2)   as hiring_ratio,
  coalesce(s.tools_added, 0)                               as tools_added,
  n.last_notice,
  coalesce(m.announcements, 0)                             as announcements,
  coalesce(g.surging_topics, 0)                            as surging_topics,
  (case when h.new_recent > 0 and h.new_recent >= 1.5 * h.new_before then 1 else 0 end)
  + (case when coalesce(s.tools_added, 0) >= 3 then 1 else 0 end)
  + (case when n.last_notice is not null then 1 else 0 end)
  + (case when coalesce(m.announcements, 0) >= 2 then 1 else 0 end) as points
from hiring h
left join stack s   on s.company_id = h.company_id
left join notices n on n.company_id = h.company_id
left join news m    on m.company_id = h.company_id
left join surging g on g.company_id = h.company_id
where h.open_now >= 10
order by points desc, surging_topics desc, hiring_ratio desc nulls last
limit 50;

Reading each signal

Each test is a number until you open what is behind it.

  • Hiring. The split by job function shows whether the growth is in engineering, sales or operations, and the split by seniority whether the company is adding leaders or junior staff. A jump in new postings with no rise in open postings suggests reposting, and a company that keeps evergreen postings open inflates the open count, so check that the roles change from week to week.
  • Stack. The categories tell a story. A CRM and a payments tool suggest that the company sells and bills, an analytics and a consent tool that it measures traffic and serves visitors from regulated markets, and an advertising pixel that it pays for traffic. The dated additions matter more than the inventory, which partly reflects how long the site has existed.
  • Site. Website Profile records which key pages a site links to, among them pricing, demo, free trial, contact sales and API docs. A site that has just added a pricing page and a contact sales page, which the page events of Technology Changes date, may have begun to sell to buyers it does not know. The website labels for sales motion, pricing model and growth stage appear in the dashboard and the data browser.
  • Funding. Compare the amount offered with the amount sold and look at the date of first sale. A notice filed soon after the first sale, with little sold against a large amount offered, describes a round that is probably still open. A notice with most of the amount sold describes one that is nearly closed.
  • Announcements. Company News records which leadership role changed and in which direction, as a role and never a person. A finance leader or a revenue leader appointed can mean a company is preparing to scale or to raise, and a chief executive departing is a different event.

Reading one result

Acme Robotics is an invented company, and the row below is illustrative.

MeasureAcme Robotics
open_now31
hiring_ratio2.1
tools_added4
last_notice40 days ago. The notice shows an amount offered of $12,000,000 and an amount sold of $7,500,000
announcements2
surging_topics3
points4

The screen says call, not invest. Before the call, open the postings behind the ratio in Job Postings and read their labels for job function and seniority, which show whether the team is growing in engineering or in sales. Check Website Profile for a pricing page and a demo request, which show how the company sells. Read the notice's details for the number of investors and the minimum investment, and remember that the amount sold at the date of a notice is a floor. The guide to following private capital raises explains the notice in full.

The evidence pack for a call

For each name on the list, assemble the same pack. It holds the open roles by function and seniority from Hiring Activity, and the tools, pages and markets added in the last 90 days from Technology Changes. It holds the notice, with its accession number so that you can open the filing itself, and the announcements with their links. The last item is the intent evidence. A pack of five items that you can check against their sources is what turns a score into a reason to call.

If the call becomes a diligence, the guide to commercial due diligence with public signals applies the same signals outside-in to a target and its competitors. The evidence pack is the starting file for it.

Keeping the list fresh

Run the screen every Monday, after the weekly datasets for the closed week are written. Names you have reviewed and passed on should not come back every week. Store a decision per company ID, suppress the name for a period you choose, and let it return only when a signal of a different kind appears. Without that rule the list fills with the same companies week after week, and the associate stops reading it.

How to read the list

  • A signal is a lead. The screen ranks momentum that is visible in public records. Revenue, valuation, investors and round terms come from the company in the first call, which is what the list is there to earn.
  • Several signals beat one. A name with a hiring ratio, new tools, a notice and announcements together is a stronger lead than a name with a single spike. The points total expresses exactly that.
  • A notice is a floor. The amount sold at the date of a filing is what had been sold by then, and later filings can show more.
  • Public posting is part of the picture. The screen reads companies that post roles on a public board and publish news, so a name with a long run of such signals has built an evidence file that a call can start from.

Log each run with its date and its list, and score the screen a quarter later against what happened to the names on it. A screen is a hypothesis about what precedes a good company, and the log is how you find out whether it holds.

Frequently asked questions

How do venture capital firms source companies from public data?

They turn public signals into a repeatable screen: hiring growth, tools added to a website, regulatory filings and announcements, scored per company and ranked. The output is a short list for a first call, with the evidence for each name. Each name arrives with its dated signals, so the associate can explain the ranking and open the first conversation on specifics.

Can job postings show which startups are growing?

They show where a company is committing spend: the number of open roles, how fast new ones appear, which functions and seniorities, and which countries. A posting records an intention to hire, so read growth in postings as evidence of intent. Set a minimum number of open postings so that a company with two roles does not outrank one with forty.

What does a private capital raise notice tell a venture investor?

It tells you that a US issuer has sold or is selling securities under an exemption, the amount offered, the amount sold so far, the date of first sale and the number of investors. The amount sold at filing is a floor, so a notice filed soon after a first sale describes a round that is probably still open.

How do I avoid chasing noise in a growth screen?

Require a minimum base before reading a ratio, use windows long enough to span a normal publishing cycle, and ask for more than one kind of signal before a name reaches the list. Read the postings and notices behind each score. Log every run, and compare the list with outcomes a quarter later.

Is intent data useful for startup sourcing?

As a ranking, yes. Fokals delivers evidence-backed intent scores: each company is scored from 0 to 100 by topic each week, from the dated signals of the trailing 90 days, and a surge is flagged when a score at least doubles against the company's own twelve-week average. Every score carries the signals behind it, so a name's ranking can be opened and checked.

The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.