An AI-powered cold email generator that creates personalised outreach emails from job posting URLs. Paste a job link or job description, get a tailored cold email in seconds β powered by LLaMA 3, semantic search, and your own portfolio.
Job Posting URL / Pasted Job Description
β
BeautifulSoup scrapes the page
β
clean_text() removes HTML noise & unicode
β
LLaMA 3 (Groq) extracts:
role Β· skills Β· experience Β· description
β
ChromaDB semantic search
β finds matching portfolio projects
β
LLaMA 3 generates a personalised cold email
β
User copies / downloads the email
- π URL-based scraping β paste any Lever-hosted job URL and scrape automatically
- π Direct text input β paste job description from any website (LinkedIn, Naukri, Internshala)
- π€ LLM-powered extraction β understands role requirements, not just keywords
- π Semantic portfolio matching β ChromaDB finds your most relevant projects
- π Multi-language support β English, Hindi, Spanish, French, German
- π¨ Tone control β Professional, Friendly, Assertive, or Concise
- βοΈ Fully configurable β sender name, company name, tone from the sidebar
- π₯ Download as .txt β one-click export
- π Email history β all generated emails saved in session
| Layer | Technology |
|---|---|
| LLM | LLaMA 3.3 70B via Groq API |
| Orchestration | LangChain |
| Vector Database | ChromaDB |
| Frontend | Streamlit |
| Web Scraping | BeautifulSoup + Requests |
| Language | Python 3.10+ |
Cold_Email_Generator/
βββ app.py # Streamlit UI β sidebar config, input, email display, history
βββ chains.py # LLM logic β job extraction & email generation
βββ portfolio.py # ChromaDB β vector store for portfolio projects
βββ utils.py # Text cleaning β strips HTML tags & unicode noise
βββ my_portfolio.csv # Your portfolio data (Techstack + Links)
βββ requirements.txt # Python dependencies
βββ dockerfile # Docker setup
βββ .env # API keys (not committed)
git clone https://github.com/UchiaObito004/Cold_Email_Generator.git
cd Cold_Email_Generatorpip install -r requirements.txtCreate a .env file in the root directory:
GROQ_API_KEY=your_groq_api_key_here
Get your free Groq API key at π console.groq.com
Edit my_portfolio.csv with your own projects:
Techstack,Links
"React, Node.js, MongoDB",https://github.com/you/project1
"Python, FastAPI, PostgreSQL",https://github.com/you/project2
streamlit run app.pyOpen your browser at http://localhost:8501
- Go to any Lever-hosted job posting β
https://jobs.lever.co - Copy the job URL
- Select "Scrape from URL" in the app
- Paste the URL and click Generate Email
- Go to any job posting β LinkedIn, Naukri, Internshala, anywhere
- Select all text (
Ctrl+A) and copy (Ctrl+C) - Select "Paste Job Description Text" in the app
- Paste and click Generate Email
βββββββββββββββββββββββββββββββββββββββββββ
β Streamlit UI (app.py) β
β Sidebar: name Β· company Β· tone Β· lang β
β Input: URL scrape or paste text β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
βββββββββΌβββββββββ
β chains.py β β LangChain + LLaMA 3 (Groq)
β extract_jobs β extracts role, skills,
β write_mail β generates cold email
βββββββββ¬βββββββββ
β
βββββββββΌβββββββββ
β portfolio.py β β ChromaDB vector store
β load_portfolioβ semantic search on
β query_links β your portfolio projects
ββββββββββββββββββ
Why Groq? Groq's LPU delivers ultra-fast inference speeds β critical for real-time email generation UX. Response times are significantly faster than standard GPU inference.
Why ChromaDB? Lightweight embedded vector database with no server required. Perfect for portfolio-scale semantic search out of the box β no complex infrastructure needed.
Why LangChain?
Clean abstraction for prompt templates, output parsers, and LLM chaining. Keeps chains.py modular, readable, and easy to extend with new models or providers.
Why BeautifulSoup over WebBaseLoader?
BeautifulSoup's get_text() extracts clean visible content from HTML far more reliably than WebBaseLoader, which often leaves behind tag fragments and noise that confuse the LLM's JSON parser.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Bhushan Verma
- π B.Tech AI & Data Science β PIET (2023β2027)
- πΌ GitHub: UchiaObito004
- π LinkedIn: linkedin.com/in/your-linkedin-id

