Skip to main content

Analyze IT job offers from justjoin.it — salary stats, top companies, benefits

Project description

IT Job Offers Analyzer

PyPI version Python versions License

Interactive CLI for analyzing IT job offers from justjoin.it — salary stats, top companies, benefits, and more.

itjobs CLI demo


Features

  • Salary analysis — percentile distribution, median, IQR-based outlier detection
  • Top companies — ranking by salary above configurable percentile threshold
  • B2B benefits — paid vacation, sick leave, and extras extracted from offer descriptions
  • Salary progression — compare junior through senior salary bands
  • Cross-group comparison — compare by city, category, experience, employment type, or workplace
  • Recent offers — browse newly published offers with per-day charts
  • Company drill-down — view all offers for a company with vs-median deltas
  • Interactive REPL — tab completion, session caching, ESC to cancel, auto-update check

Installation

pip install itjobs

Requires Python 3.10+. Dependencies (rich, prompt_toolkit) are installed automatically.

Quick start

itjobs

Then type any command — data is fetched automatically:

/analyze Kraków python senior b2b     # salary stats
/top b2b >P75                         # companies above P75
/progression Kraków python b2b        # junior → senior
/compare Kraków Warszawa python b2b   # city vs city
/recent 7 Kraków python               # last 7 days
/benefits Kraków python senior        # B2B perks

Commands

Command Description
/analyze [city] [cat] [exp] [workplace] [type] Salary analysis with percentile and distribution tables
/top [city] [cat] [exp] [workplace] [type] [>P75] Top companies by median salary (default: P90)
/outliers [city] [cat] [exp] [workplace] [type] Offers outside the normal salary range
/benefits [city] [cat] [exp] [workplace] B2B benefits — vacation, sick leave, extras
/recent [days] [city] [cat] [exp] [workplace] [type] Recently published offers (default: 3 days)
/progression [city] [cat] [type] [workplace] Salary progression across experience levels
/compare <values...> [filters...] Compare salaries across cities, categories, or types
/show <company> All offers for a company with vs-median deltas
/companies List companies in loaded data
/status Summary of loaded data and active filters
/clear Clear screen and reset session
/help Full command reference with examples
/quit Exit

Parameters

Parameter Allowed values
[city] Warszawa, Kraków, Wrocław, Gdańsk, Poznań, Łódź, Katowice, ...
[cat] javascript, python, java, net, devops, data, go, mobile, testing, ...
[exp] junior, mid, senior, c_level
[workplace] remote, hybrid, office
[type] b2b, permanent, mandate, internship
[>Pn] Percentile threshold for /top — e.g. >P75, >P90
[days] Number of days for /recent — e.g. 7 (default: 3)

All filter parameters are optional — omit them to search broadly. Parameters can appear in any order.

/compare examples

/compare Kraków Warszawa python senior b2b       # compare 2 cities
/compare Kraków python java senior b2b            # compare categories
/compare Kraków python junior senior b2b          # compare experience
/compare Kraków python senior b2b permanent       # compare employment types
/compare Kraków python remote office b2b          # compare workplace types

Pass 2+ values from one dimension — the rest are filters.

Development

git clone https://github.com/m-grzesiak/IT-job-offers-analyzer.git
cd IT-job-offers-analyzer
python -m venv .venv && source .venv/bin/activate
pip install -e .[test]

Run tests:

pytest

Build and publish:

pip install build twine
python -m build
twine upload dist/*

How it works

  1. Data fetching — pulls offers from the justjoin.it REST API with pagination. No external HTTP libraries — just urllib. Browser-like headers for compatibility.
  2. Salary normalization — the API's salary unit field is unreliable, so normalize_monthly() uses value magnitude heuristics to detect hourly/daily/monthly/yearly rates and convert to monthly PLN.
  3. Analysis — IQR-based outlier detection, percentile computation, and benefit keyword matching against HTML offer bodies.
  4. Caching — offers are cached per session. Re-fetching only happens when filters change or detail loading is needed.

Disclaimer

This project is intended for educational and personal use only. It is not affiliated with or endorsed by justjoin.it. No scraped data is stored or redistributed — all analysis happens locally in your terminal session. Use responsibly and in accordance with the target website's terms of service.

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

itjobs-0.3.0.tar.gz (48.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

itjobs-0.3.0-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

File details

Details for the file itjobs-0.3.0.tar.gz.

File metadata

  • Download URL: itjobs-0.3.0.tar.gz
  • Upload date:
  • Size: 48.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for itjobs-0.3.0.tar.gz
Algorithm Hash digest
SHA256 56f7a13fd75096c461f3c348b43e7254bb0869236905957b3c5a3c0a159c8eab
MD5 a4f16ce67c83b03459c24967c6da3b2d
BLAKE2b-256 85665810cb99fdab201d1f7b4eceb413f55ed71e31def5ab328f687de2a6c45b

See more details on using hashes here.

File details

Details for the file itjobs-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: itjobs-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 39.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for itjobs-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ade7991cb67bd84e4fdff6b5aae6322ebc9dfd16602d5cc582d88f22e254a018
MD5 3b01b81b1559813ee6b59b9f4c109511
BLAKE2b-256 84c9978c58f2b9cd1ccc6a4072762977f32b94082fb7e9e2d4af7ad41b985b9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page