Chrome Extensions

These aren’t side projects — they’re production browser extensions that solve real workflow problems inside platforms I don’t control. The common pattern is: the underlying platform has a gap, an API isn’t available or practical, and the fix has to live in the browser where the user already is.

What’s in This Category

Chrome Auto-Refresh is the current entry: per-tab refresh timers that survive the two things that kill naive implementations — tab discarding and Manifest V3 service worker restarts — with passing tests and a Puppeteer smoke suite.

The contact-center-specific extensions (Convoso Auto-Create Lead, Convoso Insight Lens, Convoso Team Optimizer, Telesero Auto-Pauser, and the documented Real-Time Coaching Bridge concept) have been moved to Contact Center Automation, where they’re grouped by the problem they solve rather than the browser they run in.

The Engineering Pattern

The hard part isn’t injecting DOM — it’s doing it without breaking the host platform. Convoso’s dashboard re-renders constantly; the team optimizer uses CSS flex-order rather than DOM insertion so it doesn’t fight that render cycle. Zoom’s API needs auth headers that an iframe can’t send, so the wallboard uses token-auth via URL parameter. Manifest V3 kills service workers, so Chrome Auto-Refresh rehydrates alarms precisely after restart.

These extensions are small in scope but real in constraint: they have to survive platforms that were not designed to be extended.


Built with JavaScript, the Chrome API, Puppeteer, and Jest. Live on the Chrome Web Store where noted; documented honestly where they didn’t ship.