← Back to Projects

Commently

AI-Powered LinkedIn Engagement Assistant

Problem Context

LinkedIn networking requires thoughtful, context-aware comments — but crafting unique responses for every post is time-consuming. Generic comment generators produce repetitive, robotic text that damages personal branding rather than enhancing it.

The Solution

Commently is a Chrome Extension that injects natively into the LinkedIn feed, allowing users to generate thoughtful, tone-specific comments instantly using Google Gemini. Unlike generic generators, it employs a stateful memory backend — the AI remembers recent interactions to avoid repetitive phrasing and maintain a consistent personal brand voice.

Key Features

  • One-Click Integration: Injects a "Generate" button directly into LinkedIn's DOM, appearing natively alongside standard buttons.
  • Contextual Intelligence: Analyzes the full post text, captions, and shared articles — not just surface-level keywords.
  • Tone Selection: Choose from Professional, Funny, Supportive, Inquisitive, or Friendly personas.
  • Custom Hints: Guide the AI with specific instructions like "Ask about their tech stack".
  • Agentic Memory: Sliding window memory buffer remembers the last 3 comments to ensure linguistic variety.

Architecture

A hybrid architecture combining a client-side Manifest V3 Chrome Extension with a server-side n8n orchestration engine. The frontend uses MutationObserver to detect new posts in the infinite scroll feed and dynamically inject React-compatible UI.

The backend workflow — Webhook → AI Agent → Simple Memory → Structured Output Parser — processes input using a specialized system prompt, checks memory keyed by User ID, and enforces strictly formatted JSON responses to prevent hallucinations.

Tech Stack

JavaScript (ES6+) Chrome Extension API n8n LangChain Google Gemini

Outcome & Learnings

Commently demonstrates a practical application of agentic AI — combining LLM intelligence with stateful memory to produce genuinely useful automation. The project highlighted the complexities of DOM manipulation within React-controlled SPAs and the importance of debouncing in performance-sensitive browser extensions.