Reading a Company's Engineering Org From Public Signals
You can look up any external engineering signal and know what it proves about a company's stack, team, and maturity, and the exact way it misleads.
You need to read a company's stack, engineering team size, and technical maturity from the outside, before you recruit from it, sell to it, or partner with it. This is a lookup document for engineering managers, technical founders, developer-relations leads, and technical sourcers: jump to the signal you are holding, read what it proves and how it lies, and leave. It is written for the engineering question - how the org is actually built - not the sales question of which SaaS vendors the company pays.
Most tech-stack lookup tools only scan a website, so they detect front-end technologies like analytics scripts, marketing pixels, and JavaScript frameworks, while the backend - where the real technology decisions happen - stays invisible. That gap is the whole reason this guide exists. Everything below is a way to read past the crawl.
Why a website crawl only sees the frontend
A crawl returns marketing and frontend technologies and nothing else. It sees the CMS, the JavaScript framework, the CDN, and the analytics pixels, because those ship to the browser. The backend - the database, the queue, the orchestration layer, the cloud provider - never touches the browser, so it never appears in a crawl.
This matters because vendor blogs conflate two different jobs. "Which SaaS vendors does this company pay" is a sales question a crawl and a subprocessor list can partly answer. "How is the engineering org built" is a hiring, partnership, and diligence question that needs backend, team, and architecture signals a crawl cannot reach. A posting for a "Senior Engineer with Snowflake and Kubernetes" reveals two backend technologies no crawler would find. Treat the crawl as one layer, label it as frontend-only, and move on to the surfaces that leak backend intel.
The layers of an engineering-org read
- Frontend and marketingCMS, JS framework, CDN, analytics - visible to any crawl
- Sending and integrationsSPF and TXT records name email senders and SaaS tokens
- Paid vendor stacksubprocessor and trust-center pages name cloud, CRM, payments
- Architecture and teamstatus-page components, public repos, contributor counts
The signal table: what each source proves and how it lies
Each external signal proves something specific about stack, team, or maturity, and each has a distinct false positive. Read the row for the signal you are holding.
| Signal | What it proves | Confidence | How it lies |
|---|---|---|---|
| Website crawl | Frontend and marketing stack | High for what it covers | Says nothing about backend; reads as the whole stack |
| SPF / TXT records | Email senders, SaaS integrations | High when present | Flattened records hide vendors behind raw IP blocks |
| Subprocessor list | Paid vendors and their roles | High when public | Not always published; absence is not proof |
| Job postings | Backend stack, hiring level mix | Medium, needs weighting | Lists aspirational tech not yet in production |
| Status page | Architecture decomposition | Medium | Groups and third-party components inflate the count |
| Public repos | Languages, team-size floor | Medium | Private-work orgs read as quiet |
Two rules govern how you weight these. First, a signal that names a paid dependency (a subprocessor list, an SPF sender) is stronger than one that names an intention (a job-post "nice-to-have"). Second, every signal has a decay rate: DNS tokens and status pages update slowly, job postings turn over fast, and 90% of new tech postings are discovered within 24 hours, 73% same-day, so a fresh posting is a genuinely current read.
Reading DNS: SPF as a self-updating vendor inventory
SPF records publicly list every service authorised to send a company's email, which makes DNS a self-updating vendor inventory. Run dig TXT on the domain, parse the SPF record for email service providers, and read verification tokens for other SaaS. NetSPI documented fingerprinting the top 25 service providers via domain-validation tokens in TXT records, so the same TXT surface that carries SPF also carries proof of which SaaS a company has verified.
Coverage is real but bounded: 623,370 of the top one million domains publish an SPF record, so roughly two-thirds of the largest domains give you this signal and the long tail does not. Among those that publish, Amazon SES leads at 6.21% of SPF domains, up 2.2 times since 2022, ahead of SendGrid at 4.75% and Mailgun at 4.10%.
| ESP | Share of SPF domains | Since-2022 change |
|---|---|---|
| Amazon SES | 6.21% | 2.2x |
| SendGrid | 4.75% | n/a |
| Mailgun | 4.10% | n/a |
| SES/SendGrid ratio | 1.31x | derived |
The distortion is structural. SPF allows at most 10 DNS lookups per evaluation, and overflow breaks authentication with a PermError. Mature senders hit that ceiling and flatten their records into raw IP blocks, which hides their vendors from you. So a flattened record signals a company that hit real scale in email while also hiding its vendors. The best email operations are the hardest to read. Before you conclude "few vendors" from a short record, look for ip4 and ip6 blocks and flattening tooling.
Reading the paid vendor stack: subprocessor and trust-center lists
A subprocessor or trust-center list names the actual vendors a company pays: CRMs, cloud providers, analytics tools, payment processors, support platforms, marketing automation, and email services. Locate /subprocessors, /trust, or the DPA and record each vendor with its stated role. This is the closest thing to a confirmed bill of materials for the third-party stack.
The scale of adoption tells you which vendors are near-universal and therefore weak differentiators. In the public subprocessor directory, the most-named vendors are as follows.
| Vendor | Companies naming it |
|---|---|
| Amazon Web Services | 2,798 |
| 1,581 | |
| Stripe | 1,278 |
| OpenAI | 960 |
| Cloudflare | 875 |
| Twilio | 862 |
The critical limit: GDPR, SOC 2, and ISO 27001 require subprocessor disclosure to customers, not public display. GDPR Article 28 requires authorization before engaging subprocessors, and most SaaS use a general written authorization model with notice of changes - to customers, not the public. So a company can be fully compliant and publish nothing. Absence of a public list is not evidence of a small stack; it is evidence you have to look elsewhere. Confirm whether a public list even exists before you draw any conclusion from it.
Reading job postings: the backend signal a crawl cannot reach
Job postings are the richest backend signal because they name the technologies engineers actually work with. A RevOps posting naming HubSpot, Outreach, and Snowflake exposes the data and GTM stack; every department's postings leak intel, so cross-department triangulation beats reading engineering roles alone. Pull five to fifteen recent postings spanning engineering, data, and RevOps, extract the technologies, and count them.
The failure mode here is the reason this method has a bad reputation: technical recruiters scan sites to confirm which technologies are actually in production, precisely because job descriptions often list aspirational technologies not yet in use. The fix is not to distrust postings; it is to weight them. Confidence is calculated on the frequency of mentions relative to similar technologies in the category. If a company mentions HubSpot 40 times and Pipedrive 4 times, they are more likely to use HubSpot, and more weight is given to the most recent mentions.
If Kafka and Grafana show up everywhere and Oracle Cloud shows up once three years ago, that once is noise.
Two operations make the read defensible. First, separate must-have from preferred: employers often list bonus items that are useful but not essential, so a "nice-to-have" line is not proof of production use. Second, require the technology in two or more roles with a recent posting before you count it. This method works especially well for large companies that hire continuously; their postings are one of the most honest, long-term signals of what they use.
Where the addressable market matters more than the exact stack, a title-and-skill query against a people index answers faster than reading postings one by one. Refolk turns a plain-English description into the matching people across GitHub, LinkedIn, and the open web, which is what step seven of the procedure below leans on.
Reading architecture maturity: status-page components and public repos
Status-page components proxy architectural decomposition, and public repos give a bounded floor on team size. Both are cheap to pull and both distort in a known direction.
Status-page components
In Statuspage each microservice is modeled as a component, so the component count is a one-to-one proxy for architectural surface. Hit the public summary.json and count components and groups. The rule of thumb: 3 to 5 components suit a simple tool, and 50-plus need component groups. So a 3-component page reads monolith-ish and a 40-component page reads decomposed.
Two distortions cap the read. Component groups and third-party components inflate the list, so separate owned from third-party before counting. And Statuspage has a limit of 1100 components, which compresses the largest orgs at the top end - a company with genuine sprawl cannot show it past that ceiling. The public summary.json also exposes a blended indicator (none, minor, major, or critical), which is an incident-posture read, not an architecture read.
Public repos
A GitHub org team-size estimate is the count of unique human contributors across the top repos, with accounts ending in [bot] dropped. That gives you a defensible floor. But what you see reflects public repositories only, so an org that does most of its work in private will look quieter than it really is. The signal inverts for stealth firms: it is least reliable exactly where diligence matters most. Note also that the unauthenticated GitHub REST API shares a budget of 60 requests per hour per IP, so a wide scan needs authentication or pacing.
kind: matrix
title: Reading team-size signals against org secrecy
caption: The GitHub signal is trustworthy only when public work reflects real work.
x: Mostly private work :: Mostly public work
y: Low hiring volume :: High hiring volume
quadrant: Stealth or early - state "below threshold," do not size :: Public-heavy but small - GitHub floor is roughly the true size
quadrant: Large but private - triangulate with postings and pool :: Large and open - GitHub floor plus postings both reliable
Sizing the pool: what Refolk's index shows for infra hiring
The reliability title dominates infrastructure hiring. In Refolk's index of professional profiles, 8,871 people in the United States hold the title Site Reliability Engineer or Platform Engineer, and among matched profiles the top employers include Google, SpaceX, Klaviyo, and Intel. That pool number is the anchor a status-page or job-post read needs: it tells you how large the addressable market for a role actually is before you conclude anything about one company's share of it.
| Metric | Value |
|---|---|
| Total US SRE + Platform Engineer | 8,871 |
| Share titled "Site Reliability Engineer" (sample) | ~60% |
| Share titled "Platform Engineer" (sample) | ~20% |
| SRE-to-Platform ratio (sample) | ~3:1 |
The composition carries its own read: infra maturity shows up more as reliability headcount than as platform-team headcount, since SRE outnumbers Platform Engineer roughly 3:1 in the sample. One caveat on method: skill-filtered queries combining Kubernetes or Terraform with a Computer Software industry filter returned zero in the index, so the title-based cut is the reliable one. When a skill filter returns nothing, that is a signal about the filter, not the market.
The procedure: read an org in eight steps
Run these in order. The ordering puts paid vendors (DNS, subprocessors) before aspirational ones (postings) so you confirm what a company pays for before you read what it wants. Some vendor guides start from job postings as the first and most reliable source; that works for continuous-hiring giants, but DNS-first is faster for confirming production vendors.
Reading a company's engineering org
- Pull the frontend baselineRun a crawl-based detector for CMS, framework, CDN, and analytics. Done when you have the frontend layer and have noted it is not the backend.
- Read DNSRun dig TXT and parse SPF for email senders and verification tokens for SaaS. Done when you have a list of senders and validated third-party tokens.
- Find the trust centerLocate /subprocessors, /trust, or the DPA and record each vendor and its role. Done when you have named vendors or confirmed no public list exists.
- Mine job postings across rolesPull 5-15 recent postings across engineering, data, and RevOps; count mentions; split must-have from nice-to-have. Done when tech is confirmed by cross-role repetition and recency.
- Read the status pageHit the public summary.json and count components and groups. Done when you have an architecture-surface estimate.
- Read public reposPull org metadata, active repos, and unique human contributors. Done when you have a floor estimate of team size and languages.
- Quantify the talent poolQuery Refolk's index for the relevant titles, skills, and geographies. Done when you have a baseline pool number.
- Reconcile and rate confidenceCross-check signals, flag conflicts and single-source claims. Done when each signal carries a confidence and decay note.
How much of the top-1M leaks each signal
- 1,000,000Top one million domains
the starting universe
- 623,370Publish an SPF record
DNS read available
- ~38,700Name Amazon SES in SPF
6.21% of SPF publishers
How the read goes wrong: failure modes and false positives
This is the section to reread before you act on a read. Each entry is a way a signal produces a confident wrong answer.
- Job post as truth. Treating a listed technology as in-production. The false positive is a "nice-to-have" or aspirational line item. Check: require the technology in two or more roles and a recent posting, and distinguish must-have from preferred.
- Single-mention stack. Counting a technology named once, years ago. Check: apply frequency and recency weighting and drop the "Oracle once, three years ago" case.
- SPF read at scale. Concluding "few vendors" from a short record. The false positive is a flattened record that hid vendors behind raw IP blocks. Check: look for
ip4andip6blocks and flattening tooling first. - Subprocessor list equals full stack. Assuming the public list is complete. The false positive is a company that discloses only on request, so absence is not proof. Check: confirm whether a public list even exists.
- GitHub team size. Reading a quiet org as small. The false positive is a security-conscious org doing everything in private repos. Check: note public-only coverage and the 60-request-per-hour cap, and triangulate with posting volume.
- Component count equals maturity. Over-reading a long status page. The false positive is component groups or third-party components inflating the list, with the 1100-component cap compressing the top. Check: separate owned from third-party components.
- Stealth blind spot. Assuming no signal means no engineering. The false positive is a pre-launch company below the SPF, job-post, and repo thresholds. Check: state explicitly that the target is below detection thresholds rather than calling it "small."
Before you call the read done
Verify these before you hand the read to a recruiter, a rep, or a diligence memo. The point is not completeness; it is that every claim carries its confidence and its decay.
Confidence and decay checklist
- Every technology I called "in production" appears in 2+ roles or a paid-vendor source, not one posting.
- I checked the SPF record for flattening before concluding anything about vendor count.
- I confirmed whether a public subprocessor list exists, and did not read its absence as a small stack.
- My GitHub team-size figure is labelled a public-only floor, and I noted whether the org works mostly in private.
- I separated owned status-page components from groups and third-party components before reading decomposition.
- Any target that leaked little is recorded as "below threshold," not "small."
- Each signal carries a decay note: postings turn over in days, DNS and status pages far more slowly.
Keeping the read current
Signals decay at different rates, so re-check on the mechanism, not the calendar. Job postings are the fastest-moving surface, with 90% of new postings discovered within 24 hours; re-pull them whenever a role or partnership decision is live rather than trusting a read from last quarter. DNS and subprocessor lists change on the company's schedule, so monitor the SPF record and the subprocessor page for edits, since a general written authorization model means vendor changes arrive as notices, not announcements.
The one number worth refreshing on every engagement is the addressable pool. A status-page or repo read only means something against the size of the market it sits in, so re-run the pool query - for the exact titles, skills, and geographies you care about - each time you open a new search. In Refolk's index that is a plain-English query returning the matching people across GitHub, LinkedIn, and the open web, which keeps the denominator honest while the org signals above tell you the numerator.
Questions practitioners ask
How many job postings confirm a company actually uses a technology?
There is no fixed threshold; it is a frequency and recency judgment. Documented practice weights mentions relative to category peers, so a technology named 40 times outweighs one named 4 times, and recent postings count more than old ones. A practical bar is the technology appearing in two or more roles in recent postings. A single mention from three years ago should be dropped as aspirational or decommissioned.
Can I find a company's backend stack without crawling its website?
Yes. A crawl only returns frontend and marketing technologies, so the backend stays invisible. Four surfaces bypass this: SPF and TXT records in DNS list email senders and SaaS verification tokens, subprocessor and trust-center pages name the vendors a company pays, status-page components expose architectural decomposition, and public GitHub repos reveal languages and contributors. Job postings across roles surface backend technologies no crawler can see.
Why does a small GitHub footprint not mean a small engineering team?
A GitHub org team-size estimate counts unique human contributors on public repositories only. A security-conscious org that does most of its work in private repos will look quieter than it really is, so absence of public activity is not absence of engineers. Triangulate with job-posting volume and the addressable talent pool before calling any org small, and note the 60-request-per-hour cap on the unauthenticated API.
Is a subprocessor list a complete picture of a company's vendors?
No. GDPR, SOC 2, and ISO 27001 require subprocessor disclosure to customers, not public display, so many companies disclose only on request. When a public list exists it exposes the real vendor stack across cloud, CRM, support, payments, and analytics, but absence of a list is not proof of a small stack. Always confirm whether a public list even exists before drawing conclusions.
What does a status page component count tell me about architecture?
Each microservice is modeled one-to-one as a component, so a 40-component page implies more decomposition than a 3-component page. Treat 3 to 5 components as a simple tool and 50-plus as a decomposed system needing component groups. The read distorts at the top: component groups and third-party components inflate the list, and Statuspage caps components at 1100, which compresses large orgs.
Try it on your own search
Stop building boolean strings. Just describe the person.
Type one sentence and I plan the search, read GitHub, public LinkedIn and Crunchbase records, and the open web live, then hand back a ranked shortlist with the reasoning behind every name. No filters to learn, no export to clean up, no sales call to sit through.
- One sentence in, a ranked shortlist out. No boolean, no filters, no seat to buy.
- Read live at search time, not from a database that went stale last quarter.
- Watch every step as it runs, and see why each name made the list.
- Staff backend engineers in NYC who shipped Rust in production
- Series A fintechs in SF under 50 people, growing headcount this year
- Maintainers of fast-growing Rust web frameworks on GitHub
500 free credits on sign-up. No card, no demo call. See real searches.