<PS/>
Case StudyFeaturedLast updated: September 6, 2026

LinkedIn Brand Assistant

Manifest V3 Chrome extension that injects an AI comment assistant into the LinkedIn feed. Built and shipped a self-healing DOM injection system — an AI-driven strategy generator that re-derives selectors when LinkedIn's markup shifts — to survive LinkedIn's obfuscated, hashed-class DOM. Published to the Chrome Web Store; development is now paused after LinkedIn's anti-automation defenses outpaced what the self-healing system could keep up with.

ReactTypeScriptViteChrome Extension API (Manifest V3)Tailwind CSSGoogle Gemini (via Supabase Edge Functions)Supabase (auth, subscriptions, edge functions)
Client
Leadswave / Chrome Web Store
Role
Full-Stack & Chrome Extension Developer
Timeline
2025 – 2026
Stack
7 technologies
Gallery

A closer look

3 shots · click to expand
LinkedIn Brand Assistant AI Companion Landing Page
01 / 03LinkedIn Brand Assistant AI Companion Landing Page
Chrome Web Store Published Extension
02 / 03Chrome Web Store Published Extension
AI Comment Tone Customization & Workflow Engine
03 / 03AI Comment Tone Customization & Workflow Engine
Stack
ReactTypeScriptViteChrome Extension API (Manifest V3)Tailwind CSSGoogle Gemini (via Supabase Edge Functions)Supabase (auth, subscriptions, edge functions)
Key Features
  • AI comment generation with tone selection (Insightful, Inquiring, Supportive), grounded in extracted post text
  • Manifest V3 service worker state persisted to chrome.storage.local — survives worker termination between interactions
  • Self-healing DOM injection: a privacy-pruned DOM snapshot (PII stripped, ~3,000-token budget) is sent to an AI strategy generator, which returns fresh CSS selectors when LinkedIn's markup changes
  • 5-step fallback chain per page load: cached AI strategy → re-validate against live DOM → regenerate via AI (rate-limited to once per 30 min) → hardcoded fallback selector bank → legacy heuristic parser
  • Corrupted-DOM detection: LinkedIn periodically ships builds with every semantic class name replaced by a hashed token; the extension detects this and falls back to data-view-name attribute anchors and text-content heuristics
  • Full Supabase-backed account system: login, subscription tiers, and usage tracking — not a bring-your-own-API-key tool
  • Published to the Chrome Web Store
Working Together

Need a similar delivery process for your product? I can help shape the scope and ship the implementation end to end.

Start a project
01Problem

Active LinkedIn professionals spend meaningful time reading posts and composing thoughtful replies. Composing a genuinely engaged response takes understanding the post's content and matching an appropriate tone — friction that interrupts reading flow. The harder problem, though, wasn't the AI part. It was staying alive inside a page you don't control: LinkedIn's DOM structure shifts across deployments, and periodically ships fully obfuscated builds where every semantic class name is replaced with a hashed token, breaking any extension built against fixed selectors.

02Approach

The extension renders an AI companion button next to each post, generating tone-selectable comment drafts from extracted post text. To survive LinkedIn's shifting DOM, later development moved from hardcoded selectors to a self-healing system: a background script periodically snapshots a pruned, privacy-safe representation of the feed DOM (PII stripped, structural attributes and short text previews only) and sends it to an AI model, which returns a JSON strategy describing where to find posts, post text, and the right injection point. That strategy is cached, validated against the live DOM on each load, and regenerated (rate-limited to avoid runaway calls) when validation fails. If the AI path is unavailable, the extension falls back to a bank of hardcoded selectors, and if that also fails, to text-content heuristics that specifically target LinkedIn's obfuscated-class builds.

03Solution

A working self-healing Chrome extension: AI-driven selector generation as the primary defense against DOM changes, with two layers of deterministic fallback beneath it so a failed AI call never fully breaks injection. Authentication and AI calls run through a Supabase backend with real subscription tiers, not a client-managed API key.

04Results

Shipped and published to the Chrome Web Store. The self-healing system is real, working engineering — but LinkedIn's DOM obfuscation and anti-automation measures kept escalating faster than a single-developer side project could track, and active development stopped after the last self-healing iteration landed. The extension remains live on the store; it isn't under active maintenance.