Skip to content

Ista2000/remote-radar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›°οΈ Remote Radar

Python Version Build Status Pre-commit License

Remote Radar is a side project I built to make job hunting way less painful.

I was tired of hopping across a dozen websites, copying descriptions, and writing the same cover letters again and again. So I decided to automate it. This tool scrapes remote jobs from different platforms and (soon!) uses LLMs to generate tailored applications β€” because job hunting shouldn’t be a full-time job.


πŸš€ Features

  • πŸ”Ž Aggregates remote jobs from multiple platforms (e.g., LinkedIn, Wellfound)
  • 🧠 Auto-generates personalized job applications using LLMs
  • πŸ“… Periodic scraping via background schedulers (every 6 hours)
  • πŸ›‘οΈ Built-in deduplication and database storage
  • 🌐 A clean frontend to explore jobs and manage applications
  • πŸ§ͺ Automated tests with CI and pre-commit hooks to keep things sane
  • 🐳 Fully containerized with Docker and Docker Compose
  • ⚑ Fast semantic search via ChromaDB and Groq’s LLaMA 3 models

πŸ“¦ Tech Stack

Layer Tools
Frontend Next.js, Chakra UI
Backend FastAPI, SQLAlchemy, APScheduler
Scraping BeautifulSoup
AI/LLM LangChain, Groq (LLaMA 3), ChromaDB
DevOps Docker, Docker Compose, Poetry, Pre-commit, Pytest, GitHub Actions

🧰 Getting Started

1. Clone the Repository

git clone https://github.com/Ista2000/remote-radar.git
cd remote-radar

2. Install Dependencies

Backend

cd backend
poetry install

Frontend

cd frontend
npm install

3. Configure Environment Variables

Backend (backend/.env)

AUTH_SECRET_KEY=your-secret-key
AUTH_ALGORITHM=HS256
DATABASE_URL=your-db-url
GROQ_API_KEY=your-groq-key
LLM_MODELS=llama3-model-1,llama3-model-2

Frontend (frontend/.env.local)

NEXT_PUBLIC_BACKEND_URL=http://localhost:8000

4. Run the App

Backend

poetry run uvicorn main:app --reload

Frontend

npm run dev

🐳 Docker Setup

Prerequisites

  • Docker
  • Docker Compose

Run with Docker

docker-compose up --build

Access the App


🧾 Docker Compose Overview

services:
  backend:
    build:
      context: ./backend
    ports:
      - "8000:8000"
    env_file:
      - .env
    depends_on:
      - db

  frontend:
    build:
      context: ./frontend
    ports:
      - "3000:3000"
    env_file:
      - .env.local
    depends_on:
      - backend

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: remote_radar
    ports:
      - "5432:5432"
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

πŸ“ Project Structure

remote-radar/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main.py                # FastAPI entrypoint
β”‚   β”‚   β”œβ”€β”€ database.py            # DB config & session
β”‚   β”‚   β”œβ”€β”€ models.py              # SQLAlchemy models
β”‚   β”‚   β”œβ”€β”€ deps.py                # Dependency injection
β”‚   β”‚   β”œβ”€β”€ utils.py               # Helper functions
β”‚   β”‚   β”œβ”€β”€ scrapers/              # Job scraping logic
β”‚   β”‚   β”œβ”€β”€ routers/               # API routes
β”‚   β”‚   β”œβ”€β”€ llm/                   # LLM utilities
β”‚   β”œβ”€β”€ tests/                     # Backend tests
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ .env                       # Need to create
β”‚   └── pyproject.toml
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ app/                       # Next.js application
β”‚   β”‚   β”œβ”€β”€ auth/                  # Login/Sign-up pages
β”‚   β”‚   β”œβ”€β”€ components/            # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ context/               # React contexts
β”‚   β”‚   β”œβ”€β”€ hooks/                 # Custom hooks
β”‚   β”œβ”€β”€ public/                    # Static files
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ .env.local                 # Need to create
β”‚   └── package.json
β”œβ”€β”€ docker-compose.yml
└── README.md

🧠 LLM Integration

Remote Radar taps into Groq’s super fast LLaMA 3 models (like llama3-70b-versatile) for:

  • Matching jobs with your resume
  • Generating custom job applications
  • Extracting important info from job posts

To try it out:

  • Plug in your GROQ_API_KEY in the .env
  • Define fallback models using LLM_MODELS

πŸ”„ Background Scraping

Jobs are refreshed every 6 hours with APScheduler, all hooked into FastAPI's startup lifecycle.

Want to change how often it scrapes? You can tweak that in scheduler.py.


βœ… Commit Quality & Tests

To keep things tidy, every commit should:

  • βœ… Pass pre-commit hooks (ruff, black, mypy)
  • βœ… Include/update backend tests under backend/tests/
  • βœ… Build cleanly via GitHub Actions

CI will scream at you if you don’t πŸ˜‰


πŸ“„ License

MIT. Do whatever you want. Just don’t sell it as-is, please.


🀝 Contributing

This started as a one-person effort, but I’d love help!

You can jump in by:

  • 🧼 Adding new sites to scrape
  • ✨ Building out features (dashboards, filters, alerts)
  • 🧠 Improving the AI integration
  • πŸͺ² Fixing bugs or edge cases
  • πŸ“ˆ Cleaning up the UI or docs

How to Contribute

  • Fork the repo 🍴
  • Create an issue to track your work
  • Make a feature branch
  • Open a PR and tell me what’s new!

πŸ’‘ Future Ideas

  • 🀝 Find recruiter profiles & craft personalized intros
  • πŸ“© Get email alerts for new matched jobs
  • πŸ’Ό Dashboard to manage saved/applied jobs
  • πŸ” Search and filter through listings
  • πŸ§‘β€πŸ’» Score resumes for individual job fits

🌍 Join the Radar

Tired of mindless scrolling? Same.

That’s why I built Remote Radar β€” to help job seekers (like me) apply smarter, not harder.

Try it, break it, or improve it. Either way, I hope it saves you a few hours and gets you a few callbacks.

About

RemoteRadar is an intelligent remote job aggregator that fetches developer-focused job listings from platforms like LinkedIn, Wellfound, and more. It enriches jobs with inferred salary data and personalizes listings using user preferences and resumes.

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Contributors