Building the Automation Engine for an AI-Powered Sales Platform
As part of a US-based product team, we build and ship features for a multi-channel outbound sales platform that automates prospect engagement across email and LinkedIn.
Chrome Extension ↔ Express Backend — four API routes powering the automation pipeline
Joining a fast-moving product team
We were brought in as part of the engineering team for a US-based SaaS startup building an AI-powered outbound sales platform. The product automates multi-channel prospect engagement — managing email sequences, LinkedIn outreach, and intelligent reply routing from a single dashboard.
The codebase was already 6,000+ lines when we joined. Our job wasn't to build from scratch — it was to jump into an existing architecture, understand the patterns, and start shipping features immediately.
Three LinkedIn actions automated end-to-end through the full stack — 100% success rate
Smart UI for complex automation workflows
We built the Reply Action system in the email sequence builder — the interface that lets users configure what happens when a prospect replies to an automated email. Five possible actions with conditional logic, nested configuration options, and state that persists correctly to the database.
This sounds simple on paper. In practice, it required managing complex conditional visibility state across multiple React components and handling edge cases where prospects reply mid-sequence.
Making LinkedIn think a human is browsing
The platform automates LinkedIn actions at scale. The challenge: LinkedIn actively detects and blocks automated behavior. Standard tools get flagged within minutes.
We built the automation engine using Patchright (a stealth-optimized Playwright fork) with Chrome DevTools Protocol. Each session runs through Multilogin X with unique browser fingerprints. Every action includes randomized delays, human-like mouse movements, and natural scrolling patterns.
Production fixes — LinkedIn DOM changes, session filter bugs, CORS infrastructure issues
The unglamorous work that keeps systems running
When LinkedIn changed their DOM structure — renaming button labels overnight — we updated both the server-side executor and the Chrome extension with fallback selectors for backward compatibility.
We fixed a session filter bug where the action queue only pulled from 'active' sessions, missing 'warming_up' ones. And we resolved a CORS/CSRF infrastructure issue that had blocked Chrome Extension communication for weeks.
More than code — integration capability
- 6,000+ lines of existing codebase navigated
- 4 API routes built for Chrome Extension
- 3 LinkedIn actions automated end-to-end
- 1 CORS/CSRF infrastructure issue resolved
Working within someone else's codebase isn't easier than building from scratch — it's harder. You have to understand their architecture, follow their patterns, and ship features that look like they've always been there. The real skill isn't writing code. It's reading 6,000 lines of someone else's code and knowing exactly where your feature fits.
Tech Stack
- React / TypeScript
- Express / Node.js
- Supabase / PostgreSQL
- Patchright (Playwright fork)
- Chrome DevTools Protocol
- Multilogin X API
- Chrome Extension (MV3)
Engagement
- 2025 — Ongoing
- Part of product team
Team
- Fisnik Kurti — Full-Stack Engineering
Need a developer who can hit the ground running in your codebase?
We don't just build from scratch — we integrate into existing teams and ship features fast. If you need senior engineering capacity without the overhead of full-time hiring, let's talk.
Let's Talk