Vocabulary
Companies, roles, leads — and the labels every row carries.
Three nouns carry the whole product — companies, roles and leads — and a small set of labels says how much we know about each.
The three nouns#
- Company
- An employer we track: website, description, funding, pay power, hiring proof, and the people there. The unit everything else hangs off.
- Role
- A job posting, scraped from the company's own board or a public source. In code it is a
Job. Roles live inside each company's page. - Lead
- A person who could refer you — not a company, not a job. Precisely: a contact who works there now (verified or likely current), in a role that can refer, with an address. In code all people are
contacts; leads are the ready ones.
Company tiers#
Every company gets a grade from targeting.py. The grade orders the work; a low grade is never deleted.
| Tier | Meaning |
|---|---|
| tier1 | A posting states ₹30 LPA or more for the role we would get. |
| tier2 | Stated pay in the second band. Decision D24 sets it at ₹24–30 LPA; the live config currently puts both thresholds at ₹30, so tier 2 is empty until that is changed. |
| prospect | No pay figure, but engineers on staff and hiring verified on their own site — worth chasing. |
| reject | Stated pay below the bar. Kept in the database, never chased. |
| unknown | Not enough evidence yet to grade. |
A company can also carry a status that takes it out of the queues: overrated (too famous or too big), below_pay_bar (an India company under the pay floor — hidden, not deleted), quarantined or merged (a duplicate folded into another row).
Pay power#
A 0–100 estimate of whether a company can pay well, from what a posting says or what it has raised.
| Band | Score | When |
|---|---|---|
| pays | 100 | A posting states ₹30 L or more. |
| deep pockets | 85 | Raised $10M+ in the last 24 months, or Series A+ in 30 months, or valued ≥ $50M. |
| funded | 65 | Raised $3–10M in 30 months, or a YC batch in 30 months with 10+ people. |
| thin | 30 | Under $2M, pre-seed, or the raise is older than 30 months. |
| unknown | 0 | Nothing found yet. |
Confidence of an address#
Every email address carries exactly one of three labels. They are never merged and never defaulted.
verified- Seen on the person or company’s own material — a commit, their site, a published address.
pattern-guessed- Built from the company’s address format, which at least two real addresses must confirm, then checked for a mail server (MX).
scraped- Found on the open web, not yet confirmed.
Affiliation: do they work there now?#
| Status | Evidence | Counts as a lead? |
|---|---|---|
| verified-current | Public member of their GitHub org, their own profile names the company with no end date, named on the company’s own site, or a company address plus a recent commit. | Yes |
| likely-current | A commit to the company’s repo within 12 months, a LinkedIn headline or People-tab row naming it, a published company address, or a dated mention within 12 months. | Yes |
| unconfirmed | Named somewhere; nothing yet says they are there now. | No |
| former | Their profile shows the company with an end date. | No — dropped |
| generic | A shared inbox (careers@, hello@). | Never a referrer |
Hiring verdicts#
verified- An open role on their own careers page or their own ATS board.
role_missing- A careers page exists but lists no role we could read.
not_authorized- No corroboration anywhere they control — the hiring claim stands alone (e.g. roles only on an aggregator).
unreachable- Their site could not be read (bot wall, down, no website).
“Complete” and “ready to ask”#
A company is complete when it has a website, a real description (60+ characters, about this company), hiring proof, and at least one lead with an address. Anything missing is listed on the row as “still filling: …” with the reason the last attempt recorded. Ready to ask is the product: hiring proven + a fresher role + remote-anywhere or India + a lead with a usable address.
Selection bands#
Roles are ranked by the odds of getting selected (confidence.py): high ≥ 65, medium ≥ 48, low ≥ 30, long shot below that. See Roles & scoring.
Replies#
Inbound mail is classified as positive, negative, closed (hiring done / not now) or neutral. Classification is deliberately cautious: anything ambiguous lands in neutral.