Files
davila7__claude-code-templates/dashboard/public/claude-code-logo.png
Daniel Avila 39c10aab48 feat(jobs): add Claude Code jobs section with free scraping pipeline (#435)
* feat(jobs): add Claude Code jobs section with free scraping pipeline

Add a new Jobs page (/jobs) and homepage preview showing positions that
require Claude Code. The scraper uses only free sources (HN Firebase API,
HN Algolia, RemoteOK, WeWorkRemotely RSS) with no API keys needed.
Runs daily via GitHub Actions alongside existing data updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jobs): address all Cubic review feedback (P1+P2)

P1 fixes:
- Location parser now skips role titles (e.g. "AI-Native Technical Operations Lead")
- Salary extraction filters out funding/revenue amounts ($37M raised)
- applyUrl validated with safeUrl() to prevent javascript: injection

P2 fixes:
- timeAgo() handles NaN/invalid dates gracefully
- WeWorkRemotely IDs use URL slug instead of non-deterministic hash()
- GitHub Action diff check includes dashboard/public/claude-jobs.json
- Remote flag also checks description body for remote indicators

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jobs): fix mojibake encoding and false salary extraction

- strip_html() now fixes common UTF-8 mojibake patterns (’ → ', â€" → —)
- Salary validation requires k/K suffix or >= $1000 for raw amounts
- Removes false positives: $100-140, $150-300 (ambiguous), $20K (bounty)
- Adds $X/yr pattern for single-value annual salaries

Addresses Cubic review comments #8, #9, #10.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(jobs): add Anthropic Careers source, auth gate, and UI improvements

- Add Greenhouse API collector for Anthropic career listings mentioning Claude Code
- Add Clerk auth gate requiring sign-in to view job links
- Add auth banner with sign-in CTA for unauthenticated users
- Improve description/tag color contrast (#999/#aaa) for dark theme
- Add Anthropic source badge (purple)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jobs): address Cubic review — avoid unnecessary rerenders and remove candidate cap

- useGlobalAuth: only call setState when values actually change (prevents 500ms rerender loop)
- Remove hard cap of 80 Anthropic candidates to avoid dropping valid Claude Code roles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 15:32:44 -04:00

26 KiB
600x487px