Methodology

What this corpus is — and isn't

Design Drift tracks design hiring at ~300-500 growth-stage tech companies (Greenhouse + Ashby + Lever ATS APIs), augmented by a daily LinkedIn sample of new postings across ~20 design-title categories. The active corpus typically holds 1,500-3,000 design listings depending on the season and how many companies are currently hiring.

It is not"every design job in the world." LinkedIn alone has thousands of active design postings on any given US day; comprehensive scraping at that scale requires residential-proxy infrastructure beyond this project's budget. Our claim is more modest and more honest: a defensible, citable slice of the design hiring market, weighted toward US-headquartered, growth-stage tech.

Data sources

We ingest from five active pipes, in declining order of volume:

The full curated company list is in src/lib/taxonomies/ats-companies.yaml. Companies that migrate ATS providers are marked active: false with a dated comment rather than deleted, so historical data remains attributable.

What counts as a "design" listing

Listings pass through isDesignRelevantTitle() in src/lib/scrapers/greenhouse-client.ts, which applies two filters:

Canonicalization

Raw titles (e.g., "Sr. Product Designer, Growth") map to canonical role slugs via a curated taxonomy at src/lib/taxonomies/roles.ts. A second-pass enrichment with Claude Haiku assigns canonical role + seniority + remote posture; emerging titles that don't match any canonical role are queued in ProposedCanonical for human review.

Salary data

Salary figures come from two places: (a) structured compensation fields returned by some ATS providers (Ashby), and (b) regex extraction from listing text during enrichment. The listing's salaryRangeDisclosed flag distinguishes pay-transparency-tagged listings from inferred ones. Aggregate pages publish only when at least 5 listings disclose a range, and the sample size is always shown (n=X).

Cadence

The full pipeline runs daily at 06:00 UTC via Trigger.dev: scrape (Greenhouse → Ashby → Lever → Dribbble → WWR → LinkedIn), enrich (capped at 250 listings/run for Anthropic budget safety), aggregate, word rollup, drift alerts. Pages revalidate after aggregation via tag-based ISR. The dateModified on every page reflects the last aggregation run, not the last deploy.

Known limitations

Byline and AI disclosure

Data curation by Brian Tighe. Pipeline orchestration and analysis are assisted by Claude (Anthropic); all published conclusions are reviewed by the editor before going live.