How I Built a Chrome Extension at a YC Startup
In September 2024, I joined Fuse AI — a YC W25 company building AI-powered sales automation. My first project: build a Chrome extension that could automate 40% of a sales rep's daily tasks.
Why a Chrome Extension?
Sales reps live in their browser. CRM tabs, LinkedIn, email, calendar — everything is a web app. A Chrome extension sits on top of all of these, watching what the user does and offering intelligent assistance.
The Architecture: Next.js + Chrome APIs
Yes, you can build Chrome extensions with Next.js. The trick is the extension popup and side panel are just web pages.
extension/
├── manifest.json
├── popup/ # Next.js static export
├── sidepanel/ # Same — static export
├── background.js # Service worker
└── content-scripts/ # Injected into web pages
The background service worker handles Chrome API calls. The popup and side panel are React apps that communicate via chrome.runtime.sendMessage.
The Hardest Part: Content Scripts
Content scripts run inside the page's DOM but in an isolated JavaScript world. For LinkedIn automation, we needed to detect pages, extract data, and fill fields — all while LinkedIn aggressively changes DOM class names.
We built a resilient selector system using data attributes and ARIA labels instead of class names.
What Worked
- Static export from Next.js — fast popup loads
- Message passing pattern — clean separation between UI and Chrome APIs
- Feature flags — gradual rollout for Chrome Web Store reviews
What Didn't
- Manifest V3 service workers — they go idle after 30 seconds
- Chrome Web Store reviews — one took 3 weeks
- Content script isolation — debugging goes to a different DevTools panel
The Result
40% task automation rate. The extension became Fuse AI's core product surface.
I build production web apps and AI tools. See my work at 4ugusta.dev or hire me through 4UGUSTA Systems.