Methodology
Community salary data
How we collect, validate, and aggregate anonymous reader-submitted salaries — and how community reports differ from the government data everywhere else on the site.
Why a third data layer
Every salary state page on RateOrchard already shows two government data layers: the Bureau of Labor Statistics Occupational Employment and Wage Statistics (the medians and percentiles that anchor the page) and the Department of Labor Office of Foreign Labor Certification disclosures (offered wages on certified H-1B applications). Both are authoritative. Both have gaps.
BLS releases annually and lags about a year. It tells you what a large population earned, but says nothing about bonus or equity. DOL covers only the slice of jobs filed under H-1B, which means truckers, retail managers, hospital techs, and most blue-collar work are invisible. Community reports close those gaps with real-time, total-comp numbers from people doing the work today.
What we record
- The role you chose (a SOC code resolved from a typeahead).
- The state — and optionally a metro area.
- Your base annual salary; optionally total comp incl. bonus and equity.
- Optional: seniority band, years of experience, industry, employer.
- A salted SHA-256 hash of your IP and user-agent string, used only for dedup and rate limiting.
- A submission timestamp.
What we never record
- No name, no email, no phone, no postal address.
- No account creation. There is nothing to log into.
- No raw IP address — only the salted hash. The salt itself is not exposed publicly.
- No third-party tracker is fired on the submission flow.
This is a deliberate constraint, not a side effect. The whole point of the community layer is that you can contribute without us becoming a data broker.
The display threshold
We never publish an individual submission. The aggregate on a state page only appears once at least five approved submissions exist for that role × state combination. City-level aggregates require ten. Below the threshold, the page shows the form and a counter — but no numbers from prior contributors.
The threshold exists for two reasons. It prevents any one submission from being statistically dominant, and it makes re-identification by inspection impossible: you can never tell whether a specific person's entry is in the aggregate or not.
Outlier handling
Before computing the median and the 25th–75th percentile band, we drop the top and bottom 10% of base-salary values. This is the same trimmed-mean technique sites like Glassdoor use to keep a single unrealistic entry from skewing the published figure. A real outlier earner (say, a founder paying themselves $1 below the comp ceiling) would still appear in the count, but won't move the median.
Anti-abuse stack
We protect the dataset with a layered set of checks. Each submission must pass:
- A Cloudflare Turnstile managed challenge (server-verified).
- A hidden honeypot field that real users never see.
- A time-on-form sanity check (sub-3-second submits are treated as bots).
- A per-IP daily rate limit (three submissions per 24 hours).
- An automated flag pass: base salary outside $15k-$2M, more than 2σ from the BLS state median, or profanity in the title or employer field.
Anything that fails an automated flag lands in a human-reviewed queue rather than being rejected outright — a senior nurse with a legitimate $500k offer shouldn't be silenced because the median is $90k. A human moderator approves, edits, or marks the submission as spam.
How this differs from BLS and DOL
| Source | Covers | Freshness | Total comp |
|---|---|---|---|
| BLS OES | Full US workforce | ~1 year lag | No |
| DOL OFLC | Certified H-1B sponsorships | ~6 week lag | No (base only) |
| Community | Anyone who shares | Real-time | Yes (optional) |
Community data is the only layer that captures bonus and equity, the only layer with no occupational filter, and the only layer that updates as the labor market moves rather than as a government agency's publication calendar allows.
What community data is not
It is not a verified data set. Submissions are anonymous and self-reported. We display them as a separate visual block (amber border, "Reader-reported" badge) so no reader confuses them with the government baselines. If you're comparing offers, ground the comparison in the BLS percentile distribution and treat the community aggregate as a sanity check on total comp, not an authoritative figure.
Contribute
Every salary state page has the submission form near the bottom. You can also browse the catalog from /salary and pick the role that matches what you do.