Job Search
Agentic job posting search powered by TheirStack. Translate natural language job queries into structured API calls, search across 168M+ postings from 312K+ sources, and synthesize findings.
For TheirStack API details (endpoints, parameters, response format): read references/theirstack-api.md.
CLI Tool
All commands run from this skill directory:
cd <skill-dir>/job-search source ~/.config/env/global.env
Search
bun run job-search.ts search [options] bun run job-search.ts search "software engineer" --remote --limit 10
Positional args after search are treated as a title filter.
Options:
- •
--title <t>— job title filter (repeatable) - •
--location <l>— location filter (repeatable) - •
--country <c>— country code, e.g. US, GB, DE (repeatable) - •
--remote— remote jobs only - •
--seniority <s>— seniority level (repeatable) - •
--employment <e>— employment type - •
--min-salary <n>— minimum annual salary in USD - •
--max-salary <n>— maximum annual salary in USD - •
--company <c>— company name filter (repeatable) - •
--domain <d>— company domain filter (repeatable) - •
--tech <t>— technology filter (repeatable) - •
--desc <p>— job description keyword (repeatable) - •
--exclude-desc <p>— exclude jobs with keyword (repeatable) - •
--min-employees <n>— minimum company size - •
--max-employees <n>— maximum company size - •
--min-funding <n>— minimum company funding in USD - •
--max-age <days>— max posting age in days - •
--yc— YC companies only - •
--funding-stage <s>— funding stage filter (repeatable) - •
--limit <n>— max results to return (default: 10) - •
--page <n>— page number for pagination - •
--quick— quick mode: limit=5, max-age=7, 4hr cache TTL - •
--save— save results to~/clawd/drafts/job-search-{slug}-{date}.md - •
--json— raw JSON output - •
--markdown— markdown output
Company
bun run job-search.ts company <name-or-domain> [--limit N] [--max-age N] [--json]
Lists open positions at a specific company. Accepts company name or domain (e.g., stripe.com).
Cache
bun run job-search.ts cache clear
1-hour TTL. Avoids repeat API charges.
Natural Language to CLI Mapping
When the user asks a natural language job search question, decompose it into structured CLI flags:
| User says | Maps to |
|---|---|
| "senior engineer jobs" | --title "engineer" --seniority senior |
| "remote Python jobs" | --tech python --remote |
| "jobs at Stripe" | --company "Stripe" |
| "React jobs in NYC paying $150k+" | --tech react --location "New York" --min-salary 150000 |
| "startup jobs (seed stage)" | --funding-stage seed |
| "YC companies hiring engineers" | --yc --title "engineer" |
| "who's hiring for Kubernetes?" | --tech kubernetes |
| "ML jobs at big companies" | --title "machine learning" --min-employees 1000 |
| "recent contract jobs in London" | --location "London" --employment contract --max-age 7 |
| "devops jobs $200k+ remote" | --title "devops" --min-salary 200000 --remote |
| "what's Anthropic hiring for?" | company anthropic.com |
| "entry level frontend jobs in Germany" | --title "frontend" --seniority junior --country DE |
Seniority values
intern, entry, junior, mid_level, senior, staff, principal, c_level
Employment type values
full_time, part_time, contract, temporary, internship
Common technology slugs
python, javascript, typescript, react, nodejs, java, golang, rust, kubernetes, docker, aws, gcp, azure, postgresql, mongodb, redis, elasticsearch, terraform, graphql, nextjs, vue, angular, swift, kotlin, ruby, rails, django, flask, spring, c-sharp, dotnet, php, laravel, hadoop, spark, kafka, airflow, snowflake, dbt
Country codes (most common)
US, GB, CA, DE, FR, NL, AU, IN, SG, JP, BR, IE, SE, CH, IL, ES, IT, KR
Funding stages
seed, series_a, series_b, series_c, series_d, series_e, ipo
Research Loop (Agentic)
When doing comprehensive job market research (not a quick lookup), follow this loop:
1. Decompose the Question
Turn the research question into 2-4 targeted searches:
- •Direct role search: title + location + seniority
- •Technology angle: what companies want this tech stack?
- •Company angle: what's this company hiring for?
- •Market scan: broad filters to gauge volume and salary ranges
2. Search and Assess
Run each query via CLI. After each, assess:
- •Are results relevant? Tighten title or description patterns if noisy.
- •Salary ranges consistent? Note outliers.
- •Interesting companies appearing? Run
company <name>for the full picture. - •Missing results? Broaden with fewer filters or try synonym titles.
3. Company Deep-Dive
When a company appears interesting:
bun run job-search.ts company <name-or-domain>
4. Synthesize
Group findings by theme:
- •Hot roles: what titles appear most?
- •Salary bands: what's the market paying?
- •Tech stacks: what technologies dominate?
- •Company clusters: startups vs. enterprises?
- •Geography: where are the jobs concentrated?
5. Save
Use --save or save manually to ~/clawd/drafts/job-search-{slug}-{date}.md.
Cost Awareness
TheirStack uses credits: 1 credit per job returned. Free tier = 200 credits.
- •Default limit is 10 results (10 credits per search)
- •Quick mode: 5 results (5 credits)
- •Cached repeats: free
- •Cache TTL: 1 hour (4 hours in quick mode)
- •Use
--limitconservatively — start small, refine, then expand
File Structure
skills/job-search/
├── SKILL.md (this file)
├── job-search.ts (CLI entry point)
├── lib/
│ ├── api.ts (TheirStack API wrapper)
│ ├── cache.ts (file-based cache, 1hr TTL)
│ └── format.ts (terminal + markdown formatters)
├── data/
│ └── cache/ (auto-managed)
└── references/
└── theirstack-api.md (API reference)