DEV Community

mini mac
mini mac

Posted on

We built a job board that shows salary on every listing. Here's what we learned.

Two years ago I was job hunting and hit the same wall everyone hits: most listings don't show salary. You apply, do a phone screen, do a technical interview, and 4 hours of your life later you find out the budget is 30% below what you needed.

So we built Koalaified — a job board for tech professionals that shows a salary range on every listing. Either the employer's disclosed range, or a clearly-labeled market-rate estimate when they don't disclose.

Here's what we learned building it.


The data problem is harder than it looks

The obvious approach: aggregate job listings, extract salary data when it exists. But only ~40% of listings in our dataset include an explicit range. For the other 60%, we built a model that estimates salary based on role title, seniority level (extracted from the JD), location, and company type — cross-referenced against BLS occupational stats.

The key UX decision: always label which type of salary is shown. Employer disclosed vs. our estimate. Trust requires honesty about uncertainty.

Ghost jobs are a massive problem nobody talks about

A significant percentage of open job postings are "ghost jobs" — listings that will never be filled. They exist for pipeline-building, compliance theater, or just neglect.

We built an auto-expiry system: any listing older than 30 days without employer re-verification gets removed. Users loved it. The signal-to-noise ratio improved dramatically.

The stack, since people always ask

React + Vite frontend. Node.js backend. SQLite (yes, really — fast enough, dramatically simpler than Postgres at our scale). Single DigitalOcean droplet, Docker Compose. We scrape 35+ ATS platforms (Greenhouse, Lever, Ashby, Workday, etc.) hourly. Infrastructure cost: ~$12/month.

What job seekers actually want

After talking to hundreds of users, three things dominate:

  1. Salary upfront — the frustration about opacity runs deeper than we expected
  2. No spam — users had abandoned LinkedIn because they couldn't distinguish real opportunities from recruiter noise
  3. Freshness — nothing worse than spending time applying to a role that's already filled

Check it out

Koalaified is free for job seekers, always. 12,000+ active US tech jobs, updated hourly.

koalaified.com


Building something similar or have questions about the scraping architecture / salary model? Drop a comment.

Top comments (0)