Nodes
Built and shipped a LinkedIn outreach Chrome extension solo in under a month, growing to 1,000+ installs and 17,000+ profiles indexed to date.
Why I built it
I built Nodes because I was tired of wasting time doing the same outreach prep steps over and over. I'd open a company site, scroll the footer, check the about page, search "contact," and still miss emails hiding in random places. Multiply that by dozens of websites and it turns into a painfully slow process.
At first, I tried a few popular email-finder tools. Some were accurate but expensive. Others were slow, locked behind accounts, or required exporting and cleaning results. I wanted something simple: just show me every email that's already visible on the page.
Building the extension
So I started with a barebones Chrome extension: a button, a scan function, and a list. The first prototype worked in minutes, but the real work started immediately after. Real websites are messy.
I iterated by testing on lots of sites and collecting failure cases. Each time it missed something, I'd add a new pattern or fix a parsing edge case. Then I focused on making it feel fast: no laggy UI, no long blocking scans, and no noisy duplicates.
Once it felt reliable, I added quality-of-life features: copy all, export options, and a clean UI that doesn't distract from the page you're on.
How extraction works
- Ran extraction client-side via a hidden-iframe queue inside the user's logged-in session.
- Used fallback selector chains so markup changes drop single fields instead of failing the whole run.
- Paced the queue with delays between loads to keep activity within ordinary manual browsing rhythm, prioritizing account safety over extraction speed.
Outcomes
- 1,000+ Chrome Web Store installs.
- 17,000+ LinkedIn profiles indexed to date.
- Shipped end-to-end solo in under a month.
