Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

FieldDescriptionExample
KeywordsRole titles or skillssoftware engineer, rust developer
LocationCity or regionPerth, Melbourne, Sydney
PlatformsTarget job boardsseek, indeed, linkedin
Salary MinMinimum salary (AUD)70000
Job TypeEmployment typefulltime, parttime, contract
Posted WithinDays since posted7, 14, 30
Exclude CompaniesCompanies to skip["Acme Corp"]
Exclude KeywordsKeywords to filter out["senior", "lead"]
Visa SponsorshipOnly 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)

LinkedIn

  • 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:

FieldMeaning
PR RequiredEmployer requires permanent residency
Citizenship RequiredEmployer requires citizenship (e.g. government/defence roles)
Visa SponsorshipEmployer 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.