Type something to search...

Job Market Analysis

Summary

Job descriptions are long, inconsistent, and written to be read once. Reading a hundred of them to work out what the market actually wants is a job nobody finishes by hand.

This is a small Python tool that does it. It reads postings for Data and AI roles, pulls out the requirements, the nice-to-haves and the seniority level, and puts the result in a dashboard.


How it works

Postings go in as JSONL. Each one is passed to Gemma 3 through Ollama, which returns the core requirements, the optional extras, and a read on seniority. Everything lands in an interactive Streamlit dashboard.

The pipeline is organised with domain-driven design. At this size that mostly means keeping the parsing, the model calls and the reporting separable, so changing one does not quietly break the others.


Tech

Python 3.12 or newer, Ollama with Gemma 3, Streamlit, and uv for dependencies.


What I would change

Running the model locally was a deliberate trade. It costs nothing per posting and the data never leaves my machine. In exchange it is slower than an API call and occasionally misreads a requirement. For a tool I point at a few hundred postings, that was the right side of the trade. If it ran daily, it would not be.


Source

The code is public: https://github.com/rasyidev/job-market-analysis