Search Jobs
Search lets you configure criteria and scrape jobs from multiple platforms simultaneously.
Usage
kairos jobs search "software engineer" --location perth --platforms seek,indeed
Search Criteria
| Field | Description | Example |
|---|---|---|
| Keywords | Role titles or skills | software engineer, rust developer |
| Location | City or region | Perth, Melbourne, Sydney |
| Platforms | Target job boards | seek, indeed, linkedin |
| Salary Min | Minimum salary (AUD) | 70000 |
| Job Type | Employment type | fulltime, parttime, contract |
| Posted Within | Days since posted | 7, 14, 30 |
| Exclude Companies | Companies to skip | ["Acme Corp"] |
| Exclude Keywords | Keywords to filter out | ["senior", "lead"] |
| Visa Sponsorship | Only show jobs offering sponsorship | --visa-needed |
How It Works
sequenceDiagram
participant U as User
participant CLI as CLI / Web
participant API as kairos-api
participant S as Seek Adapter
participant I as Indeed Adapter
participant DB as SQLite
U->>CLI: Configure search criteria
CLI->>API: POST /api/jobs/search
API->>S: search(criteria)
API->>I: search(criteria)
S-->>API: Vec of Jobs
I-->>API: Vec of Jobs
API->>DB: save_jobs(jobs)
API-->>CLI: Job list (deduplicated)
Platform-Specific Notes
Seek.com.au
- Server-side rendered pages with embedded JSON
- Rate limit: 2-5 second delay between requests
- ~20 results per page, max ~550 per query
- Most reliable scraping target
Indeed AU
- Requires headless browser (Cloudflare protection)
- Randomized delays (3-8 seconds) with jitter
- User-Agent rotation per session
- May occasionally require CAPTCHA solving (manual fallback)
- Public job listings (no login required)
- Moderate anti-bot measures
- Falls back to “open in browser” if blocked
Work Rights
Jobs carry three work rights fields, extracted from both structured platform data and LLM analysis:
| Field | Meaning |
|---|---|
| PR Required | Employer requires permanent residency |
| Citizenship Required | Employer requires citizenship (e.g. government/defence roles) |
| Visa Sponsorship | Employer is willing to sponsor a visa |
These fields are nullable — many JDs don’t state requirements explicitly. When not mentioned, they show as “Unknown”.
Filter with:
kairos jobs list --visa-needed # only jobs offering sponsorship
kairos jobs list --no-pr-required # exclude PR-required jobs
Deduplication
Jobs found on multiple platforms are deduplicated by company name + job title similarity. The first instance is kept, with cross-references to other platform URLs.