The Gap List
Today/Archive/Indie SaaS/001-reverse-rate-calculator
Issue No. 001Indie SaaS◇ Weekend · ~3 daysMay 4, 20267 min read23 receipts

The reverse rate calculator nobody's built.

Every freelance rate calculator answers the wrong question. Here's the gap, the data, and a build kit that ships in a weekend.

Ship
it.
6/6 on the Gap Test. Hover any criterion below for the evidence.
Pain documented
Demand has a number
Buildable solo
Wedge is real
Path to first $
Gap unfilled

You get an offer for $35/hour. Is that good? Bad? Robbery? Every calculator on the internet asks what rate you want — none tell you what the rate you were offered actually means.

The pain is documented.

Search r/freelance for "is X/hr good" and you'll find the same question asked roughly twice a week, every week, for the last six years.1 The answers are anecdotal. The data exists — it just isn't packaged for the moment a contractor needs it: thirty seconds before responding to a client email.2

Existing calculators (Clockify,4 Bonsai,5 half a dozen Notion templates) all run forward: input your salary expectation, output a rate. Useful when you're setting your rate. Useless when someone has already proposed one.

The evidence of demand.

Three numbers that matter:

SignalValueSource
Monthly searches23.4k"is $X/hr good"-shaped queries · ahrefs, Apr 20263
Reddit threads847r/freelance + r/forhire, last 24mo · pushshift2
Tools that answer0audit of top 50 calculator results · Apr 2026

The distribution of senior React contractor rates in North America (n=312) shows a median of $92/hr, with the long left tail where most lowball offers land.6

Rate variance distribution: senior React contractor rates, North America, n=312, median $92/hr

Fig. 1 — Rate distribution, senior React contractors, N. America. n=312. Source: scraped Upwork + public LinkedIn, Q1 2026.6

The proposed product.

A single-page tool. You paste a rate, your stack, your region, your seniority. It returns where that number sits in the live distribution: percentile, comparable roles, and one honest sentence — "this is a 31st-percentile offer for your stack; here's a counter that lands at the 60th."

Competitive landscape:

ToolDirectionRegion-awareStack-awareLive dataOutput
ClockifyForwardNoNoNoSingle rate
BonsaiForwardMildNoNoSingle rate
Notion templatesForwardNoNoNoSpreadsheet
Levels.fyiLookupYesYesYesDistribution
This gapReverseYesYesYesPercentile + sentence

The build flow.

Four steps, all static:

Fig. 2 — Build pipeline. Static JSON, no backend.
  1. Scrape boards — Upwork, Toptal, public LinkedIn, Indie Hackers. Weekly.
  2. Normalize — stack tags, regions, seniority levels. Drop noise.
  3. Bin + percentile — by stack × region × seniority cell.
  4. Serve as JSON — static, CDN-cached. No backend.

Reasons this might not work.

The full risk register is below the fold. The short version: rate data goes stale fast, anchoring cuts both ways, and nobody pays for a calculator. Each has a mitigation. None is a dealbreaker.78

Share
— Unit economics —
Build time
14hrs
Following the 10-step PROMPTS.md flow.
Monthly run cost
$0/mo
Vercel Hobbystatic + edge$0
Cloudflare R210GB free tier$0
Beehiiv free<2.5k subs$0
One-time
$12
Domain (.com)annual$12
Stripe setuppay-as-you-go$0
Path to first $
$9 niche reports
— Risk register —
R-01The data goes stale fast.severity: highlikelihood: high
Contract rates move quarterly. Without a refresh pipeline, the tool is wrong by month four — and a wrong rate calculator is worse than no rate calculator.
Mitigation: Ship with a 'data as of' badge on every percentile output. Schedule a quarterly re-scrape via GitHub Actions cron. Show a stale-data warning if the dataset is >120 days old.
R-02Anchoring cuts both ways.severity: medlikelihood: med
Honest percentile data may help clients lowball as easily as it helps freelancers counter. The tool could backfire on the audience it serves.
Mitigation: Frame the output for the contractor, not the buyer. Default copy: 'this is a 31st-percentile offer — here's the counter that lands at the 60th.' Don't expose raw distributions to non-authenticated visitors.
R-03Nobody pays for a calculator.severity: medlikelihood: high
Free utilities don't convert directly. Bonsai/Clockify monetize via accounting bundles, not the calculator itself.
Mitigation: Free tier forever. Revenue from $9 niche reports ('Senior React rates, EU, Q3 2026'). Calculator is the funnel; reports are the SKU.
— The receipts —
Every claim in this issue has a source. Click any number above to jump here. Tick the box to mark as personally verified.
  1. [1]
    r/freelance'Is $35/hr good for senior React?' thread, 412 upvotes
    2024-11-03
  2. [2]
    r/forhirebiweekly rate-check threads, n=847 across 24 months
    2024–2026
  3. [3]
    ahrefs keyword dataqueries containing 'is $' and '/hr', 23.4k monthly
    2026-04
  4. [4]
    Clockify rate calculatorforward-only inputs, no percentile output
    accessed 2026-04-22
  5. [5]
    Bonsai freelance rate toolforward-only, mild region awareness
    accessed 2026-04-22
  6. [6]
    Levels.fyi contractor ratestech-only, salary-anchored, no contractor day rates
    2026-Q1
  7. [7]
    Hacker News'Ask HN: contractor rates' threads, 1.2k comments
    2023–2026
  8. [8]
    Indie Hackersrate-transparency thread, 89 replies
    2025-08
  9. [9]
    G2 reviewsfreelance accounting tools, 'wish it had a rate calculator' x47
    scraped 2026-03
  10. [10]
    Twitter/X — @levelsiorate poll, 4.8k responses, bimodal distribution
    2026-01
— Build kit · 001-reverse-rate-calculator

Ship this in a weekend.

Eight files. Drop the folder into your repo and start at PROMPTS.md §1. Each prompt is one commit. Finish all ten and you have a working MVP.

0 files · 0B
↓ Download .zip
Next · No. 002
The testimonial collector every founder builds twice.
— More from Indie SaaS
← Back to todayAll issues →