Request Demo
Case Study · RECRUITING TECH, HR TECH

How a US Recruiting-Tech Startup Built a Job-Postings Dataset

Executive Summary

A US recruiting-tech startup was building a hiring-intelligence product - features that would show clients where the market was hiring, which skills were in demand, and how hard roles were to fill. All of it depended on one thing the startup didn't have: a clean, normalized, large-scale dataset of public job postings across company career pages and job boards. Building and maintaining that dataset - with inconsistent titles normalized, skills extracted from free text, duplicates reconciled, and lifecycle tracked - was a sustained data-engineering operation that would have consumed the small team.

The startup partnered with webdatascraping.us for a public job-postings dataset built for hiring intelligence. We captured the full public posting, normalized titles into role families, extracted skills from the description text, de-duplicated across sources, and tracked postings over time for days-open - using only public posting content, never applicant data. The result was an analysis-ready labor-demand dataset the startup's product could build on directly, letting its engineers focus on features while the data stayed a reliable, privacy-clean utility.

The Business Challenge

Public job postings are a rich, timely signal, but turning them into a usable dataset is genuinely hard, and the startup faced four difficulties.

The first was title chaos. Job titles are wildly inconsistent - "Senior Software Engineer," "Sr. SWE II," and "Backend Engineer (Senior)" may describe similar roles, while identical titles at different companies mean different things. Without normalizing titles into role families, counting demand by role was fragmented and misleading.

The second was skills buried in text. The most valuable signal - what skills employers want - lives in the free-text description, not a structured field. Extracting skills reliably and normalizing them into a consistent taxonomy was essential, and hard.

The third was duplication and coverage. The same role appears on a company's careers page and across several boards, and every career page is structured differently. Covering many sources while de-duplicating the same role across them was a sustained operation the startup couldn't carry alongside building its product.

The fourth, and non-negotiable, was the privacy line. The product was about demand-side data - what employers hire for - and had to use only public posting content, never applicant data, resumes, or candidate profiles. Getting this wrong wasn't an option, ethically or legally.

The Developer Asset

We provisioned a public job-postings dataset built for analysis. Each record captured the source (career page or board) and company, the job title with a normalized role family and seniority, the description with extracted skills and requirements, the location and remote status, employment type and department where available, the posted and first-seen dates with days-open and re-post signals, and a capture timestamp. The extracted skills revealed what was in demand, and the days-open lifecycle revealed how tight the market was for a role - both requiring the full posting to be captured and structured, not just the title.

Crucially, the dataset used only public posting content - never applicant or candidate personal data - keeping the startup firmly on the right side of privacy from day one.

The Solution

We identified the companies and boards to cover for the startup's target segments, extracted each posting with its full content, and normalized titles into consistent role families and seniority levels so demand could be aggregated meaningfully. We extracted skills from the description text and normalized them into a shared taxonomy, so "Py," "Python 3," and "Python" all mapped to one skill. Postings were de-duplicated across sources - the same role on a career page and several boards reconciled into one - so counts reflected distinct openings.

We tracked postings over time to compute days-open and detect re-posts, the tightness signals, with a timestamp anchoring each posting's lifecycle. The startup consumed the dataset via API and file to power its hiring-intelligence features. Throughout, collection stayed strictly on public posting content, with no applicant data, and we scoped the engagement to labor-market and recruiting intelligence.

What the Data Looks Like

A single public posting record - the structure the product consumed:

Single Public Posting Record
{
  "source": "company_career_page",
  "company": "Example Corp",
  "title": "Senior Data Engineer",
  "role_family": "software_data",
  "seniority": "senior",
  "skills": ["Python", "Spark", "AWS", "SQL"],
  "location": "Austin, TX",
  "region": "South",
  "remote": "hybrid",
  "employment_type": "full_time",
  "posted_date": "2026-06-05",
  "first_seen": "2026-06-05",
  "days_open": 24,
  "captured_at": "2026-06-29T09:00:00Z"
}
  

A role-and-region rollup for the product's dashboards:

Role-and-Region Rollup
{
  "role_family": "software_data",
  "region": "West",
  "posting_count": 4200,
  "median_days_open": 30,
  "top_skills": ["Python", "AWS", "Kubernetes"],
  "remote_share": 0.41
}
  

And a CSV export for modeling:

role_family region postings median_days_open top_skill remote_share
software_data West 4200 30 Python 0.41
healthcare Northeast 3100 38 RN 0.05
skilled_trades South 1800 44 Welding 0.02

The details that made this analysis-ready: normalized role families, extracted skills, location and remote status, days-open, and a timestamp. Only public posting content was captured - never applicant or personal data.

What the Data Enabled

With the dataset underneath, the startup shipped the features its clients wanted. Demand-by-role-and-skill views showed where the market was hiring and for what, sliced by the normalized role families and extracted skills. Geographic concentration revealed which metros were hiring by role. Days-open and re-post signals flagged which roles were hardest to fill - a leading indicator of talent scarcity and wage pressure. And company-level hiring pace became a signal clients used competitively. Every feature leaned on the normalized, skill-extracted, de-duplicated, timestamped data - the startup built the product, the dataset supplied the trustworthy, privacy-clean foundation.

The Results & Business Value

  • An analysis-ready labor-demand dataset, so the startup's engineers built features, not scrapers.
  • Meaningful role-level demand, thanks to titles normalized into role families.
  • Skill-level intelligence, from skills extracted and normalized out of free text.
  • Fill-difficulty signals, from days-open and re-post tracking.
  • A strictly privacy-clean dataset, using only public postings, never applicant data.

Skill Extraction: The Analytical Core

The single most valuable transformation was skill extraction. A raw description is unstructured text; the demand signal lives in the specific skills, tools, and requirements named within it. Reliable extraction identified these - languages, certifications, tools, soft skills - and normalized them into a consistent taxonomy, turning free text into a queryable signal. The startup could then measure which skills were rising, which paired together, and which were hardest to fill. Because extraction quality determined the quality of every downstream skill analysis, it was a core part of what the managed dataset provided - postings arrived with skills already extracted and normalized, rather than raw descriptions the startup's small team would have had to parse. This was often the difference between a usable labor dataset and a pile of text.

The Privacy Line: Postings, Not People

The most important discipline in the whole engagement was the privacy line. The dataset was about demand-side data - what employers were hiring for - and used only public posting content: title, description, skills, location, company. It did not touch applicant data, resumes, candidate profiles, or any personal information about job seekers. That line was non-negotiable, ethically and legally, and keeping strictly to public employer postings was what made the dataset a legitimate hiring-intelligence resource rather than a privacy problem. The startup could build and market its product with confidence, knowing the data foundation was clean - a reassurance that mattered enormously in a domain adjacent to personal data.

Why a Managed Feed Made Sense

Scraping one company's careers page is straightforward. Building a normalized, de-duplicated, skill-extracted, timestamped dataset across thousands of career pages and boards - tracking lifecycle, staying current, and strictly privacy-clean - is a sustained operation. For a startup whose expertise was its product, not data engineering, handing the dataset to webdatascraping.us delivered analysis-ready labor data without the normalization, extraction, de-duplication, and privacy discipline becoming its problem. The startup defined the segments; it received clean, structured, public postings data; the heavy lifting stayed upstream.

Title Normalization: Making Titles Comparable

Job titles are notoriously inconsistent, and normalizing them was foundational to the product. "Senior Software Engineer," "Sr. SWE II," "Software Development Engineer," and "Backend Engineer (Senior)" might all describe similar roles, while identical titles at different companies meant different things. Without normalization, counting postings by title produced a fragmented, misleading picture. Effective normalization mapped varied titles into consistent role families and seniority levels, so demand could be aggregated meaningfully - all the senior-backend variants counted together, distinct from junior or staff. This was genuinely hard, requiring an understanding of intent behind inconsistent language, and it was a core part of what made the dataset analytically useful rather than a jumble. The startup received postings already normalized into role families, so it could slice demand by role coherently instead of wrestling thousands of idiosyncratic titles into order itself - work that would have consumed its small team.

De-Duplication Across Boards and Pages

The same role frequently appeared in multiple places at once - on a company's careers page and across several boards - and roles were re-posted after lapses. If these weren't reconciled, posting counts inflated and demand signals distorted toward whichever roles were most widely syndicated. Reliable de-duplication recognized the same role across sources using company, title, location, and description similarity, so a posting count reflected distinct openings rather than the same job counted five times. It also let days-open be measured from a role's true first appearance rather than resetting each time it was syndicated. This de-duplication was unglamorous but decisive for accurate labor statistics - and since the startup's product made claims about market demand, accuracy mattered enormously. It was a core part of what the managed feed handled so the startup inherited clean counts rather than inflated ones.

Company and Sector Hiring Signals

Beyond aggregate labor trends, the dataset revealed company-level signals valuable to the startup's clients. A company suddenly posting many roles in a new area signaled expansion or a strategic pivot; a hiring freeze or shrinking postings signaled caution. Tracked over time, a company's posting volume by function became a real-time proxy for where it was investing - engineering, sales, operations - long before any public announcement. Aggregated to a sector, the same data showed which industries were expanding or contracting. This company-and-sector view became a differentiating feature for the startup's product, and it depended on consistent, timestamped, de-duplicated posting capture per company - exactly what the managed feed delivered. For the startup's clients in competitive intelligence and workforce planning, it was often the highest-value output.

Refresh Cadence and Lifecycle Tracking

Postings turn over constantly - new roles appear, filled roles close, and some linger stale - so cadence and lifecycle tracking mattered. For demand and skill trends, a regular refresh kept the picture current. For days-open and re-post signals - the tightness measures - consistent re-observation on a schedule was essential, with a timestamp and first-seen date anchoring each posting's lifecycle, and stale postings distinguished from genuinely active ones. Cadence was tiered - tight on the companies and roles the startup actively tracked, relaxed on the long tail - keeping the feed current and economical. The managed feed handled this cadence and lifecycle tracking, so the labor signals in the startup's product stayed live rather than frozen, which was essential for features that promised a current read on the market.

Who Benefits from This Approach

This engagement is representative of a broad, largely analytical audience. Recruiting-tech and HR-tech products embed postings data to power market-intelligence and sourcing features. Labor-market researchers and economists use it as a fast alternative dataset that leads official statistics. Investors read a company's or sector's hiring pace as a growth signal. Workforce and talent-planning teams study skill demand to guide training and hiring. And universities and policy teams analyze regional labor demand. In every case the requirement is the same: structured, normalized, timestamped public posting data by role, skill, and region - a dataset demanding to build in-house but straightforward to consume when managed. The startup's move from no dataset to an analysis-ready one is the arc most hiring-intelligence products follow once they realize the demand signal is already public, waiting to be structured.

Job Postings as AI Training Data

A growing extension of the startup's work was using its public job-postings corpus to power AI features - skills-matching engines and career-guidance tools within its product. Because postings are structured around roles, skills, and requirements, a large, clean corpus of them proved valuable for teaching models how jobs, skills, and industries relate. Here too the privacy line held absolutely: the training material was public employer postings, never applicant data. A well-structured corpus - normalized, skill-extracted, de-duplicated, and timestamped - was far more useful for this than raw scraped text, because the structure was what the models learned from. As the startup's roadmap leaned further into AI-assisted features, this clean, public, structured postings corpus became doubly valuable, and it was another reason the team relied on a managed feed built to deliver postings in an analysis- and training-ready form rather than as unstructured text.

Conclusion

Public job postings are a live, leading map of labor demand - if extracted with discipline. This engagement gave a recruiting-tech startup exactly that: postings normalized into role families, skills extracted from text, duplicates reconciled, lifecycle tracked, and not a single piece of applicant data touched. The startup shipped hiring-intelligence features on an analysis-ready, privacy-clean foundation, while the data stayed a reliable utility. To build a similar dataset, request a free sample from webdatascraping.us, validate the role normalization and skill extraction on a target segment, and build your hiring intelligence on data you can trust.

Frequently Asked Questions

No. Only public job-posting content was captured - title, description, skills, location, company - never applicant, candidate, or personal data.

Titles were normalized into role families and seniority so demand could be aggregated meaningfully across companies.

Yes - skills and requirements were extracted from the description text and normalized into a shared taxonomy.

Yes - tracking postings over time surfaced days-open and re-post frequency as fill-difficulty signals.

Yes - a validation sample for a target set of companies, roles, or regions was the starting point.

Build your hiring intelligence on data you can trust.

Request a free sample job-postings dataset for a target segment and validate role normalization and skill extraction before you scale.

Request sample data → Call +1 424 377 7584