SnapplAI
Health Uyari
- License รขโฌโ License: NOASSERTION
- Description รขโฌโ Repository has a description
- Active repo รขโฌโ Last push 0 days ago
- Low visibility รขโฌโ Only 6 GitHub stars
Code Gecti
- Code scan รขโฌโ Scanned 6 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions รขโฌโ No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
๐ Stop refreshing LinkedIn. This pipeline scrapes new job listings based on your settings, uses AI agents to summarize each one and score it against your CV, then delivers only the best matches straight to your inbox ๐ฌ โ so you're always first to apply ๐
๐ SnapplAI โ AI-Powered LinkedIn Job Alerts
Stop refreshing LinkedIn. This pipeline scrapes new job listings based on your settings, uses AI agents to summarize each one and score it against your CV, then delivers only the best matches straight to your inbox ๐ฌ โ so you're always first to apply ๐
๐ Table of Contents
- The Problem
- How It Works
- Tech Stack
- Pipeline Architecture
- AI Output Fields
- Setup
- Project Structure
- Roadmap v2
- Contributing
- License
๐ฏ The Problem
Job hunting on LinkedIn is a full-time job in itself. New listings appear daily, most are irrelevant, and by the time you spot a good one, 200 people have already applied.
SnapplAI flips the game: it runs on a schedule, scrapes fresh listings, lets AI read and score every single one against your CV, and emails you only the top matches โ before the crowd even sees them.
โ๏ธ How It Works
The pipeline runs in 4 sequential steps, fully automated:
1. Scrape โ job_scraper() pulls fresh listings from LinkedIn based on your search settings (role, location, filters) using python-jobspy.
2. Summarize โ agentic_summarize() sends each job description to Gemini, which extracts structured fields (title, seniority, skills, salary, etc.) as clean JSON.
3. Analyze โ agentic_analyze() reads your CV and scores each listing on how well it matches your profile. Chain-of-thought enforced: the model writes analysis before score in the JSON schema, so reasoning comes before judgment.
4. Deliver โ send_email() builds an email with the top-scored jobs and sends it to your inbox via SMTP.
Key principle: AI reads and evaluates. Python orchestrates and delivers. No frameworks, no agents-calling-agents โ just a clean data pipeline with LLM calls where they matter.
๐ง Tech Stack
| Component | Technology |
|---|---|
| LLM | Google GenAI SDK โ gemini-3.5-flash-lite |
| Scraping | python-jobspy (LinkedIn) |
| Data | pandas, PyPDF / PyMuPDF |
| Parsing | BeautifulSoup4 |
| smtplib (SMTP) | |
| Config | python-dotenv |
๐๏ธ Pipeline Architecture

The entire pipeline operates on a single pandas DataFrame that gets enriched at each step. No intermediate files, no database โ everything flows through memory.
๐ AI Output Fields

Each job in the email is ranked by match score and includes company, role, work mode, a one-line AI summary explaining why it matched (or didn't), and a direct apply link to the LinkedIn listing.
๐ Setup
- Get a free API key from Google AI Studio
- Generate a Gmail App Password
- Place your CV (PDF) in
your_cv_config/ - Configure search settings: use
file_config.txtto create yourfile_config.env(filter docs) - Create your
.envfrom the template:cp example_env.txt .env
Deploy
Local
git clone https://github.com/TDK-99/SnapplAI.git && cd SnapplAI
pip install -r requirements.txt
# complete setup steps above
python main.py
Docker
git clone https://github.com/TDK-99/SnapplAI.git && cd SnapplAI
# complete setup steps above
docker build -t snapplai .
docker run --env-file .env snapplai
GitHub Actions
- Fork this repo (or create a private copy)
- Complete setup steps 1-4 above in your fork
- Edit your settings in
.github/workflows/snapplai.ymlunder theenv:block - Add credentials as repository secrets (Settings โ Secrets โ Actions):
GOOGLE_API_KEY,GMAIL_USER,GMAIL_APP_PASSWORD - Actions tab โ enable workflows โ Run workflow
๐ Project Structure
SnapplAI/
โโโ main.py # Entry point โ runs the 4-step pipeline
โโโ src/
โ โโโ daily_scraper.py # LinkedIn scraping with python-jobspy
โ โโโ ai_agents.py # Gemini calls: summarize + analyze
โ โโโ smtp.py # Email builder and SMTP sender
โโโ your_cv_config/
โ โโโ .gitkeep # Keeps folder tracked in git
โ โโโ file_config.env # Your settings (role, location, filters)
โ โโโ file_config.txt # Additional config parameters
โ โโโ Your_CV.pdf # Your CV goes here (PDF)
โโโ .github/
โ โโโ workflows/
โ โโโ snapplai.yml # GitHub Actions workflow (scheduled + manual)
โโโ Dockerfile # Run anywhere with Docker
โโโ .env # API keys and SMTP credentials (git-ignored)
โโโ example_env.txt # Template for .env variables
โโโ requirements.txt # Dependencies
โโโ LICENSE # MIT
โโโ README.md
๐ฃ๏ธ Roadmap v2
- Multi-country scraping โ search across 2+ countries in a single run (custom feature, not supported by python-jobspy out of the box)
- Excel/DB deduplication โ persistent storage to compare runs and filter out already-seen listings, so you never score the same job twice
- Scoring calibration โ benchmark AI scores against known good/bad matches to improve match quality
- Output redesign โ better visual formatting for the email report (job cards, readability, direct links)
๐ค Contributing
Contributions are welcome โ bug fixes, new features, or docs improvements.
- Issues โ Report bugs or suggest features
- Pull Requests โ Fork, build, submit
๐ License
MIT โ see LICENSE
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi