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.
- 🔎 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
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 |
git clone https://github.com/Ista2000/remote-radar.git
cd remote-radar
Backend
cd backend
poetry install
Frontend
cd frontend
npm install
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
Backend
poetry run uvicorn main:app --reload
Frontend
npm run dev
- Docker
- Docker Compose
docker-compose up --build
- Frontend: http://localhost:3000
- Backend (API Docs): http://localhost:8000/docs
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:
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
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
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
.
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 😉
MIT. Do whatever you want. Just don’t sell it as-is, please.
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
- Fork the repo 🍴
- Create an issue to track your work
- Make a feature branch
- Open a PR and tell me what’s new!
- 🤝 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
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.