Personal use only. This extension is not an officially published product. It is a self-hosted tool you install manually in your own browser. See the Security section before you begin.
ApplyKazi is a Chrome extension that uses AI to write tailored job application emails and reformat your resume to match a specific role. You paste a job description, and it does the rest — pulling from your saved profile and resume to generate something specific to you, not a generic template.
- Before You Install — Read This
- Security
- How It Works
- Installation
- First-Time Setup
- Using the Extension
- Troubleshooting
This extension is built for personal use. It is not published on the Chrome Web Store. You are installing it in Developer Mode, which means:
- Chrome will show a warning that the extension is unpackaged — this is expected and normal for self-installed tools
- The extension only runs in your browser, on your device
- No data is sent to any server other than the AI provider you configure (OpenRouter or Anthropic directly)
- Your resume and profile are stored locally in your browser — they never leave your device
If you share this extension with someone else, they will need to follow this same installation process on their own machine. Do not distribute the built files to people you do not trust — they would be running code on their browser.
Read this section carefully. It is short and important.
The extension saves the following to chrome.storage.local — a sandboxed storage area that only this extension can access:
- Your name, email, phone, location, LinkedIn URL
- Your resume text
- Your AI API key
- Your EmailJS credentials (if you configure email sending)
None of this is synced to the cloud. It stays in your browser on your machine.
This is the most sensitive piece of information the extension handles.
What it is used for: Every time you generate an email or tailor a resume, the extension sends your prompt and resume text to the AI provider using your key.
What could go wrong:
- If someone has physical access to your machine and opens Chrome DevTools > Application > Storage, they can read your API key in plain text. Treat your machine accordingly.
- If you install a malicious Chrome extension alongside this one, and that extension has the
storagepermission, it could potentially read your key. Only install extensions from sources you trust. - This extension does not encrypt your key at rest. This is a known trade-off of browser-based tools. The same limitation applies to extensions like GitHub Copilot, Grammarly, and others that store credentials locally.
What to do to protect yourself:
- Set a spending limit on your API key. On OpenRouter: dashboard > account > limits. Set a monthly cap you are comfortable losing if the key were ever compromised.
- Do not use an API key that has access to anything other than inference. Create a dedicated key for this extension.
- If you ever suspect your key has been exposed, rotate it immediately from the provider dashboard and update it in Settings.
Your resume text and personal details are stored locally and are only ever sent to the AI provider as part of the generation prompt. They are not sent anywhere else. The AI provider (OpenRouter) may log prompts for safety monitoring and you can check their privacy policy if this concerns you.
If you configure the email sending feature, your EmailJS credentials are also stored locally. When you send an email, it goes through EmailJS's servers to your Gmail. EmailJS handles the SMTP relay and you can review their privacy policy at emailjs.com. This feature is entirely optional. You can always just copy the generated email and paste it yourself.
The extension has three parts:
Popup launcher - click the ApplyKazi icon in your Chrome toolbar. A small panel appears with two buttons: write an email, or tailor your resume. Clicking either opens the side panel.
Side panel - the main workspace. It opens alongside any webpage (useful when you have a job listing open in the same tab). It has three pages:
- Email - paste a job description, choose a tone, optionally add a key strength or extra context, then generate. The AI reads your saved resume and profile to write something specific to you. You can copy the result or send it directly if you have EmailJS set up.
- Resume - paste a job description and the AI rewrites your resume to match the role. It reorders bullet points, injects keywords from the JD, and rewrites your summary - without inventing experience you do not have. The output renders as a formatted document you can print or save as PDF.
- Settings - where you save your profile, paste your resume, add your API key, and optionally configure EmailJS.
Everything runs in your browser. The only outbound requests are
No analytics, no tracking, no backend.
git clone <repo-url>
cd applykaziOpen a terminal in the extracted folder and run:
pnpm install
pnpm buildThis creates a dist/ folder. That is what you will load into Chrome.
- Open Chrome and go to
chrome://extensions - Turn on Developer mode using the toggle in the top-right corner
- Click Load unpacked
- Navigate to the
dist/folder inside your extracted directory and select it - ApplyKazi should now appear in your extensions list
Click the extension icon in the Chrome toolbar, find ApplyKazi, and click the pin icon. This keeps the ApplyKazi icon visible in your toolbar so you can open it quickly.
When you receive an updated version of the extension:
- Replace the files in your folder with the new ones
- Run
pnpm install && pnpm buildagain - Go to
chrome://extensionsand click the refresh icon on the ApplyKazi card
Click the ApplyKazi icon → open the side panel → go to Settings.
Get an OpenRouter key at openrouter.ai/keys (recommended — access to multiple models).
Paste it into the API Key field. Set a spending limit on the provider dashboard before you do this.
Choose any available open AI model from the dropdown.
Add your name, email, location, and LinkedIn URL. These get injected into generated emails automatically — you will not have to type them every time.
In the Resume content field, paste your full resume as plain text. No formatting needed — just the raw text. The more complete it is, the better the AI can tailor both emails and resumes.
This is the most important step. The AI uses this as the source of truth for your experience. If it is thin, the output will be generic.
Click Save settings. A green confirmation will flash. Your data is now stored locally.
If you want to send application emails directly from the extension without copy-pasting:
- Sign up free at emailjs.com — 200 emails/month on the free tier
- Connect your Gmail account under Email Services
- Create a template with these exact variables:
{{to_email}}{{subject}}{{message}}{{from_name}} - Copy your Public Key, Service ID, and Template ID into the Settings page
- Click Test connection to confirm it works
- Open a job listing in Chrome
- Click the ApplyKazi icon → Write application email (or just open the side panel and go to Email)
- Paste the full job description into the text area — the more detail the better
- Optionally add a key strength to highlight and any extra context (referral name, portfolio link, etc.)
- Select a tone
- Click Generate email
- Read the output. If you want a different angle, click regenerate
- Copy it, or click send email to open the send panel
- Go to the Resume tab in the side panel
- Paste the job description
- Optionally specify skills to emphasise or things to downplay
- Click Tailor my resume
- The output renders as a formatted resume document
- Click print / save PDF to open a print-ready version in a new tab — use your browser's print dialog and select "Save as PDF"
- Or click copy text to get plain text you can paste into a Word doc
- Keep your resume in Settings up to date. The AI is only as good as what you give it.
- For emails, paste the entire job description — including requirements, responsibilities, and company description. Do not summarise it.
- If the generated email is too long, switch tone to Concise and regenerate.
- The resume tailor preserves your actual experience. It will not invent jobs or credentials. If a role requires something you genuinely do not have, the output will reflect that honestly.
The side panel does not open
Make sure the extension is loaded and enabled at chrome://extensions. Try clicking the toolbar icon directly rather than through the popup.
"No API key" warning
Go to Settings and make sure your key is saved. The key must start with sk-or- (OpenRouter).
Generation fails with an error Check that your API key is valid and has remaining credits. Open DevTools (F12) → Console to see the exact error message.
Email sending fails
Double-check that your EmailJS template uses exactly {{to_email}}, {{subject}}, {{message}}, and {{from_name}} as variable names. Run the connection test in Settings with your own email address first.
The extension disappeared from Chrome
Chrome sometimes disables unpacked extensions after updates. Go to chrome://extensions and re-enable it, or reload it using Load unpacked again.
Changes I made in Settings are not saving Make sure you click Save settings — changes are not auto-saved.
ApplyKazi is a personal tool. Use it responsibly. Do not misrepresent your experience in job applications — the AI tailors what you have, it does not fabricate.