DEV Community

Guy Ruvio
Guy Ruvio

Posted on

How I Built an AI Job Board That Auto-Updates from 164+ Companies

The Problem

If you're looking for an AI engineering role in 2026, you're probably checking 10-20 individual career pages. Anthropic's Greenhouse page, OpenAI's careers site, DeepMind's jobs board, Cohere's Lever page...

General job boards like LinkedIn and Indeed have AI roles, but the filtering is terrible. Search "AI engineer" and you get results for "AI-powered customer service" and "engineer at an AI startup doing nothing related to AI."

I wanted a single page with every AI/ML/LLM role from every major AI company, updated automatically.

So I built LLMHire.

Architecture

Stack: Next.js 14 (App Router) + Supabase (PostgreSQL) + Vercel (hosting + crons)

The core idea is simple: most tech companies use one of three ATS platforms — Greenhouse, Ashby, or Lever. Each exposes a public API for their job listings. I built adapters for each.

The Fetcher Pattern

Each ATS has a fetcher module:

  • Greenhouse: GET https://boards-api.greenhouse.io/v1/boards/{company}/jobs
  • Ashby: POST https://jobs.ashbyhq.com/api/non-auth-job-posting
  • Lever: GET https://api.lever.co/v0/postings/{company}

Each fetcher normalizes the response into a common schema:

  • title, company, location, department
  • remote/hybrid/onsite classification
  • role type (ML Engineer, LLM Engineer, Research Scientist, etc.)
  • posting date, description, apply URL

Auto-Categorization

Job title → role type mapping uses pattern matching:

  • Contains "LLM" or "NLP" or "language model" → LLM Engineer
  • Contains "ML" or "machine learning" → ML Engineer
  • Contains "research" + "scientist" → AI Research
  • Contains "infrastructure" or "platform" → AI Infrastructure
  • Contains "prompt" → Prompt Engineer

This gets ~90% accuracy. Edge cases get manually reviewed.

Cron Jobs

Vercel cron jobs run every 4 hours (6x/day):

  1. Fetch all jobs from all companies
  2. Deduplicate against existing listings (by company + title + location hash)
  3. Mark stale listings (>30 days without refresh) for review
  4. Update search index

The Numbers

  • 130+ companies tracked
  • 670+ active positions
  • ~50-100 new/updated listings per day
  • Average fetch cycle: ~45 seconds for all companies

What the Data Shows

After tracking the AI job market for a few weeks:

  1. "LLM Engineer" is a real role now — distinct from ML Engineer, with different skill requirements
  2. Remote is declining — major labs want hybrid/onsite
  3. AI Infrastructure is booming — fastest growing subcategory
  4. Prompt Engineering peaked — being absorbed into broader roles

What's Next

  • Workable integration (another ATS with significant AI company coverage)
  • Salary data aggregation
  • Weekly AI jobs newsletter
  • Blog with hiring market analysis

Try It

LLMHire is completely free. No accounts, no fees, no signup required to browse. If you have feedback or companies I should add, drop a comment.

Top comments (0)