ProductMarch 8, 20265 min read
Building a Chrome Extension for Recruiting: Lessons Learned
Michael Torres
<p>Recruiters live in their browser. LinkedIn, email, ATS — their entire workflow happens across tabs. A Chrome extension that bridges these tools isn't a nice-to-have; it's where the sourcing actually happens.</p>
<h2>Why We Built It</h2>
<p>Even with Ellie's autonomous sourcing, many recruiters prefer to supplement AI-found candidates with their own manual finds. The disconnect was friction: find someone on LinkedIn, copy their details, switch to Kasp, create a record, go back to LinkedIn. The extension eliminates every tab switch.</p>
<h2>How It Works</h2>
<p><strong>Profile pages:</strong> When you visit a LinkedIn profile, the extension parses the name, title, company, location, and skills from the DOM. A "Save to Kasp" button appears next to the native Connect button. Click it, select a role, and the candidate is saved and enriched in one action.</p>
<p><strong>Search pages:</strong> On LinkedIn search results, checkboxes appear next to each profile. Select multiple candidates and batch-save them to a role with a single click.</p>
<p><strong>Enrichment:</strong> Before saving, the extension calls Kasp's enrichment API to pull email addresses, GitHub profiles, and match scores against the selected role. You see the fit score before committing.</p>
<h2>Technical Decisions</h2>
<p>We use Manifest V3 with shadow DOM for CSS isolation — LinkedIn's styles are aggressive and would break any injected UI without it. The background service worker handles all API calls and auth token management.</p>
Share this article
Help others discover this content
MT
Michael Torres
Michael Torres writes about AI engineering careers, hiring trends, and the future of talent marketplaces.
