Apply to jobs with personalized outreach in 1 click β powered by Llama 3 & Groq.
The open-source job application tool that actually respects your time.
π See job post β β‘ 1 click β π Personalized email sent. Done.
You: *copies job description*
You: *opens ChatGPT*
You: "Write me a cold email for this job"
GPT: "Dear Hiring Manager, I am writing to express my keen interest..."
You: *dies inside*
You: *does this 30 more times today*
There has to be a better way.
1-click from LinkedIn post β personalized email in your drafts. Real demo gif coming β PRs welcome!
ApplyX is a Chrome extension + web dashboard that lives on LinkedIn. Spot a job post, click once, and a laser-targeted cold email β written from your resume, in your voice β is ready to send via Gmail. No copy-paste. No generic templates. No cringe.
| Feature | What it does |
|---|---|
| β‘ 1-Click Generation | Reads the LinkedIn post, grabs your resume, writes a tailored email via Groq (Llama 3.1) in ~1 second |
| π Auto-attach Resume | Your PDF resume is automatically attached to every outreach email |
| π¬ One-Click Send | Fires the email via Gmail API β without leaving the LinkedIn page |
| π¨ Dynamic Personalization | Your name, portfolio, and vibe are baked into every message |
| π Self-Hosted & Private | Your data lives in your Supabase. Zero middlemen. |
| π Actually Free | Groq's free tier handles thousands of generations per day |
Prerequisites: Node.js 18+, a Google Cloud project, a Supabase account, a Groq API key.
git clone https://github.com/kiet7uke/ApplyX.git
cd ApplyXcd apps/extension
npm install
npm run devThen in Chrome β chrome://extensions β Load Unpacked β select apps/extension/build/chrome-mv3-dev
cd apps/web
cp .env.example .env.local # fill in your keys (see below)
npm install
npm run devOpen localhost:3000 π
- Log into the dashboard β Manage Profile
- Upload your resume PDF + add your portfolio URL
- Copy your Extension Key from Dashboard Settings
- Paste it into the LinkedIn sidebar settings panel
- Go to LinkedIn. Find a job. Click the button. β
ποΈ Supabase (Database) β click to expand
- Create a free project at supabase.com
- In the SQL Editor, run this schema:
-- Users profile table
create table profiles (
id uuid references auth.users on delete cascade primary key,
full_name text,
portfolio_url text,
resume_url text,
extension_key uuid default gen_random_uuid(),
created_at timestamp with time zone default timezone('utc'::text, now())
);
-- Enable Row Level Security
alter table profiles enable row level security;
create policy "Users can view their own profile."
on profiles for select using ( auth.uid() = id );
create policy "Users can insert their own profile."
on profiles for insert with check ( auth.uid() = id );
create policy "Users can update own profile."
on profiles for update using ( auth.uid() = id );- Note your
Project URLandanon publickey from Project Settings β API
π Google OAuth & Gmail API β click to expand
- Go to Google Cloud Console β New Project
- Enable the Gmail API: APIs & Services β Library β search "Gmail API" β Enable
- Create credentials: APIs & Services β Credentials β Create OAuth 2.0 Client ID
- Application type: Web application
- Authorized redirect URI:
http://localhost:3000/api/auth/callback/google
- Required OAuth Scopes:
openidemailprofilehttps://www.googleapis.com/auth/gmail.send
- Save your
Client IDandClient Secret
π€ Groq (AI Engine) β click to expand
- Sign up free at console.groq.com
- Create an API key
- That's it. Llama 3.1 is absurdly fast (~300 tokens/sec) and the free tier is incredibly generous.
No OpenAI bill. No rate limit anxiety. Just vibes. β¨
Create apps/web/.env.local:
# π€ AI
GROQ_API_KEY=gsk_...
# ποΈ Database
SUPABASE_URL=https://xxxx.supabase.co
SUPABASE_ANON_KEY=eyJ...
# π Google OAuth + Gmail
GOOGLE_CLIENT_ID=xxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-...
# π NextAuth
NEXTAUTH_SECRET=your-super-secret-random-string # run: openssl rand -base64 32
NEXTAUTH_URL=http://localhost:3000ApplyX/
βββ apps/
β βββ extension/ # π§© Chrome Extension (Plasmo + React)
β β βββ src/
β β βββ sidebar/ # LinkedIn sidebar UI
β β βββ background/ # Service worker
β β
β βββ web/ # π Dashboard & Backend (Next.js)
β βββ app/ # Next.js App Router
β βββ components/ # React components
β βββ lib/ # Supabase, NextAuth, Gmail helpers
β
βββ packages/ # π¦ Shared logic & types
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LinkedIn Feed β
β β
β [Job Post by Recruiter] ββββββββββββββββββββ β
β "We're hiring a Senior β ApplyX Sidebar β β
β Backend Engineer at Stripe!" β β β
β β [Generate β‘] β β
β ββββββββββ¬ββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββ
β
ββββββββββΌβββββββββ
β Your Resume β
β + Post Context β
β + Your Name β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Groq Llama 3.1 β
β (~800ms) β‘ β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Personalized β
β Email β Gmail β
β Sent β
β
βββββββββββββββββββ
ApplyX is fully open-source and contributions are very welcome!
# Fork the repo, then:
git checkout -b feature/your-amazing-idea
git commit -m "feat: add your amazing idea"
git push origin feature/your-amazing-idea
# Open a PR πIdeas for contributions:
- π― LinkedIn Easy Apply form auto-fill
- π Application tracking dashboard
- π Support for other job platforms (Wellfound, Lever, Greenhouse)
- π Follow-up email scheduling
- π§ͺ A/B testing different email tones
- π Multi-language outreach support
Q: Is this actually free?
A: Yes. Groq's free tier handles ~14,400 requests/day. You won't hit that limit job hunting.
Q: Is my resume data safe?
A: Your resume lives in your own Supabase instance. ApplyX never touches it.
Q: Will recruiters know I used AI?
A: The output is grounded in your real resume and their actual job post β it reads as genuinely tailored because it is.
Q: Does it work with LinkedIn Premium?
A: Works with any LinkedIn account. Premium not required.
If ApplyX helped you land an interview, drop a β β it keeps the project alive.
Built with π by kiet7uke because job hunting is exhausting.
Let's make it smarter, together.
