Skip to content

jobfinder

A Streamlit-based job search application that scrapes and manages job listings using JobSpy, with AI-powered evaluation capabilities.

uv Streamlit GitHub license

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/jobfinder
   __init__.py28196%14
   bootstrap.py521571%55–61, 72–83, 87
   main.py24240%1–43
   session.py932672%87, 92, 104–115, 119–125, 129, 133, 137–138, 144, 149–152, 163
src/jobfinder/adapters/chat
   chat_client.py31971%27, 31, 34–41
   ollama_chat.py27389%42–43, 47
src/jobfinder/adapters/db
   postgres_client.py1783680%36–38, 55–57, 88–90, 123–125, 141, 143–145, 151–152, 167–169, 172–181, 208–210, 235–237
src/jobfinder/adapters/embedding
   embedding_client.py341168%17, 20–27, 44–46
src/jobfinder/domain
   models.py2787473%38–40, 83–85, 156–158, 169–171, 174, 183–185, 192, 196, 201–203, 210, 213–217, 224, 227, 230–232, 242–246, 257–261, 267–270, 283–303, 347, 363–365, 369–379, 392, 399, 408–409
src/jobfinder/pages
   listings_overview.py10190%29
src/jobfinder/services
   data_service.py883659%17, 28–32, 40–42, 45–50, 63–65, 68–79, 84, 93–95, 105, 118–120
   generative_service.py835435%25–57, 69–70, 72–73, 81–86, 89–112
src/jobfinder/utils
   __init__.py7186%8
   loader.py33585%20, 33, 38–40
   persistence.py17476%53, 58–60
   service_helpers.py10370%12–14
src/jobfinder/views
   common.py41393%24–26
TOTAL106830671% 

Features

  • Job Scraping: Automated job listing collection via JobSpy
  • Interactive UI: Streamlit interface for job search and management
  • AI-Powered Insights: Contextual scoring with OpenAI using engineered prompts from user evaluated records populated with Jinja templates.
  • Modern Tooling: Packaged with with uv
  • Continous Coverage: pytest for testing and coverage reporting

Updates

Walkthrough

  • A detailed overview of the data augmentation process can be found in the Walkthrough document.

Usage

Installation

```bash

Clone the repository

git clone cd jobfinder ```

Configuration

  • To add additional configurations, create .env in root of repository directory.
  • To enable scoring using chat completions model, add to .env: OPENAI_KEY = {YOUR_KEY}
  • To set OpenAI chat completions model, add to .env: OPENAI_MODEL = {MODEL}

Running the Application

bash streamlit run main.py

Running with runtime /src updates

```bash uv add --editable --dev jobfinder uv run main.py