Your 1,000 signups · re-run Oct 26Filter before you enrich
Only enrich the signups you'd actually score.
Plenty of Render's personal-email signups aren't the professional developers BigQuery is looking for. So we went back to the 1,000 emails Render sent and ran the India, students and interns filter on them. 306 matched a profile, 126 drop out on the identify call itself, and only the 180 left get a full enrichment.
Counts are real, from your 1,000 emails · Oct 26, 2026 · the job view is illustrative
41%
of the 306 matches never reach the full enrichment call
13
developers at companies with 1,000+ people, for sales
14
founders, CEOs and CTOs, for the startup program
22
developers who list cloud or container skills
What I heard
Find the developers. Skip the rest early.
We need something to enrich these that costs much less and that works.
Crustdata finds more data for us than other options, but a lot of it we don't need.
All this data is meant to flow into BigQuery... where we would score it.
This could reduce this down by as much as half or more.
What it has to do
Four things the setup has to get right for Render.
A Gmail address says nothing on its own. The job is turning it into a yes or no on "professional developer", for as little work as possible.
01
Filter before the full enrichment
India, students and interns come out before anyone gets fully enriched. So location and title have to come back on the very first call.
02
Find the professional developers
The match has to say whether a working developer is behind the signup, in whatever language their title is written.
03
Flow straight into BigQuery
Scoring happens in Render's own warehouse, so the data arrives as rows Render's code writes, not inside another tool.
04
Sit first in Render's own waterfall
An API key Render owns. Misses come back clearly marked, so they move straight to the next provider.
What the 1,000 already show
Four things your own signups can tell Render.
Everything here comes from the 1,000 emails Render sent, run again on Oct 26. Play 01 is the India, students and interns filter, ready to run this week. We show titles and company sizes; names stay out.
01
Filter India, students and interns before the full enrichment
The askRun it this week
The identify call already returns each match's location, headline and current title. So the filter is a few lines in Render's own pipeline, and only the profiles that pass get the full enrichment. On the 1,000 emails: 306 matched, 110 are based in India, and 16 more are students or interns elsewhere. That leaves 180.
How it runs
Send the day's personal-email signups to /batch/person/identify.
Drop any match where basic_profile.location.country is India, or the headline or current title says student, intern or internship.
Send the rest to /person/enrich, then write them to BigQuery.
126 of 306 matches never reach the enrichment call. That's 41% of the enrichment work gone before it starts.
24 of the 110 in India are also students or interns; each person counts once. Add estudiante and estágio to the word list and 2 more drop out. Swap the country list whenever Render's focus changes.
02
Flag the professional developers before you score
Your scoring input
58 of the 180 build software for a living, going by their own title or headline: software engineers, backend, frontend and mobile developers, DevOps and SRE, data and ML engineers, QA, and a CTO. Six write it in Portuguese or Spanish (desenvolvedor, ingeniero de software), so the match can't be English-only. That flag is the first column Render's BigQuery score needs.
How it runs
Read basic_profile.current_title and headline from the same identify response.
Match engineering titles in English, Portuguese and Spanish.
Write is_developer next to the signup in BigQuery, with employer size from /person/enrich.
The developer flag uses the same fields as the filter, so BigQuery knows who's a developer before the full enrichment even runs.
→ BigQuery columnEvery signup batchTitle or headline match
A sample of the 58 · titles as writtenOct 26, 2026
Title
Employer size
Country
Senior Software Engineer
10,001+
Indonesia
Forward Deployed Data Scientist II
1,001 to 5,000
United Kingdom
Senior Backend Developer
1,001 to 5,000
Germany
Mobile Developer
5,001 to 10,000
Brazil
DevOps Engineer
51 to 200
Nepal
Frontend Developer
51 to 200
Nigeria
Principal Engineer, Team Lead
11 to 50
Nepal
Desenvolvedor de back end
2 to 10
Brazil
35 of the 58 are entry level. The other 122 include analysts, marketers, operators and owners, plus 24 with no current title on their profile.
03
Route each signup by the team behind it
Only Render can run this one
The full enrichment returns each person's current employer and its size. On the 180, that splits two groups out of the pile. 13 developers work at companies with 1,000+ people, including Amazon, Apple, Wells Fargo, Capgemini Engineering and Braze. 14 are founders, CEOs or CTOs, and the 10 with a known team size are all at companies of 50 people or fewer. One is a sales conversation, the other is exactly who Render's startup program is for.
How it runs
/person/enrich returns company_headcount_latest and the employer for each of the 180.
Developer at a 1,000+ person company goes to the sales queue. Founder, CEO or CTO at 50 or fewer goes to the startup program.
Everyone else stays in marketing nurture, scored in BigQuery as today.
A developer signing up from inside a 10,000-person company can be the first seat of a team account. Without the employer, that signup looks like any other Gmail address.
→ Sales and startup queuesDailyEmployer size + title
Where the 13 developers workOct 26, 2026
AmazonAppleWells FargoCognizantBank Rakyat IndonesiaCapgemini EngineeringAmdocsRestaurant Brands InternationalDC GovernmentPositivo TecnologiaDEPTBrazeAmerican Specialty Health
Some of these may already be Render customers. For those, a new developer signup is an expansion signal.
04
Talk migration with developers who already run on a cloud
Built for your migration offer
22 of the 58 developers list Docker, AWS, Azure, Google Cloud, Kubernetes, Firebase or Netlify on their profile. None name Heroku, Vercel or Railway, so a search on platform names alone would have found nobody. Skills come back on the full enrichment, so Render's migration message can go to the developers most likely to be running something somewhere else.
How it runs
/person/enrich returns skills for each of the 180.
Tag developers whose skills include a cloud or container platform.
Send that segment Render's migration message from BigQuery, through the marketing tools Render already uses.
Platform names found none of them. Skills found 22.
→ Lifecycle emailOn enrichCloud skill on profile
Cloud skills across the 58 developersOct 26, 2026
Docker13
Azure8
AWS7
Google Cloud6
Kubernetes5
Heroku, Vercel or Railway0
Bars are out of the 22. Some list more than one. A skill says what someone has worked with, not where their app runs today, so treat it as a reason to send the message, not a fact about their stack.
Where it plugs in
Your pipeline, with Crustdata first in the waterfall.
Render's own code calls the API. There's no orchestration layer in between and nothing new to log into. Anything we don't match comes back marked not found and moves to the next provider in your waterfall.
Already yours
Signups
Personal-email signups as they arrive, plus the backlog.
Crustdata
Identify
Email in, profile out: location, headline, current title.
/batch/person/identify
Your code
Filter
A few lines. India, students and interns stop here.
Crustdata
Enrich
Employer, team size, seniority, skills and history for the ones that pass.
/person/enrich
Already yours
BigQuery
Where the score happens. Misses go on to your next provider.
The filter · Python sketchfield names from the identify response
# identify(), enrich() and next_provider() are your own thin wrappersimport re
SKIP_COUNTRIES = {"India"} # swap any time
EARLY_CAREER = re.compile(r"\b(student|intern|internship)\b", re.I)
defworth_enriching(person):
p = person["basic_profile"]
country = (p.get("location") or {}).get("country")
words = f'{p.get("headline") or ""} {p.get("current_title") or ""}'return country not in SKIP_COUNTRIES and not EARLY_CAREER.search(words)
matches, misses = identify(new_signup_emails) # /batch/person/identify
keep = [m for m in matches if worth_enriching(m)]
profiles = enrich(keep) # /person/enrich, only the ones that pass
bigquery.insert_rows("signups_enriched", profiles)
next_provider(misses) # the rest of your waterfall
On your 1,000, this keeps 180 of 306 matches. The table name is a placeholder.
How to compare
Same 1,000 emails. Score the outputs.
Run the list through whatever Render is testing today and put the results side by side with ours. Four counts settle it.
Ask 01Matches
How many of the 1,000 match a professional profile?
Count rows with a profile attached, nothing else.
Ours today: 306
Ask 02Skip early
How many can you drop before the full enrichment?
Using only what the first call returns. If location and title don't come back, the answer is zero.
Ours today: 126 skipped, 180 left
Ask 03Developers
How many signups can you flag as developers?
Titles and headlines in any language count.
Ours today: 58
Ask 04Current
Are the titles and employers still right?
Pick 10 matches at random and check them against each person's live profile.
Ours: check it on the re-run
If another setup matches more of the same 1,000 and lets Render skip as many before the full enrichment, it should win. We'd just like the re-run in the comparison.
Straight answers
The questions so far.
Q1Can we filter out India, students and interns before the full enrichment?
Yes. The identify call returns each match's location, headline and current title, so your pipeline checks them and only calls enrich on the ones that pass. On your 1,000, that left 180 of 306.
Q2Can we run Crustdata in our own waterfall, with our own API key?
Yes. Your code calls identify first. Anything we don't match comes back marked not found and moves to your next provider. There's no orchestration layer to set up on our side.
Q3Is the enrichment a one-time pull, or does it assume a yearly refresh?
One pull per signup. Re-enrich someone only if and when Render chooses to.
Q4What's Crustdata best at?
Fresh, deep professional data: current title and employer, work history, skills, and the company behind each person (team size, industry, growth). It's a data layer your own code calls directly, through the API or MCP.
What happens next
One more run, on the same list.
No dates we didn't agree to, and nothing here needs an answer today.
DougDone
Your filter, run on your 1,000
306 matched, 126 skipped before enrichment, 180 enriched, 58 developers flagged. Every number on this page comes from that run on Oct 26.
CrustdataIn progress
Better personal-email matching
We're upgrading how personal emails match to profiles, the exact step Render's signups depend on.
DougWhen it ships
The same 1,000, re-run with the filter on
Side by side with this run, so Render can compare it with what it's testing today on one list.
ChauIf useful
Send any other rules
Other countries, titles or company sizes to skip. They go straight into the re-run.
The short version
Filter on the first call. Enrich the 180. Score the developers.
Want the re-run when it's ready? Reply to Doug, or grab a few minutes.