← All projects
Chrome Extension
v1.3.4
Live on Web Store
Built 2025–2026
GTM Tools · Case Study 02

I hate networking. So I built a bot.

Live on Chrome Web Store
Luma Scraping LinkedIn Voyager API Rate Limiting Campaign Queue Profile Enrichment Business Hours Gating Telegram Bot Supabase Sync Chrome Extension Anti-Spam Design Luma Scraping LinkedIn Voyager API Rate Limiting Campaign Queue Profile Enrichment Business Hours Gating Telegram Bot Supabase Sync Chrome Extension Anti-Spam Design

You go to events. You meet people. You follow up. Nobody does.

  • 01

    Luma shows you who attended. 50, 100, 200 people. Their names. Their faces. All right there.

  • 02

    LinkedIn is where business happens. But manually searching each person? That's 3+ hours of work per event.

  • 03

    So nobody does it. The warmest leads you'll ever have — people you were literally in the same room with — go cold in 48 hours.

  • 04

    I automated the whole thing. Scan the guest list. Match LinkedIn profiles. Send personalized notes. Staggered. Human-paced. Automatic.

Three parts.
One system.

A Chrome extension that lives in your sidebar. A web dashboard to track every campaign. A Telegram bot watching over it all. Together, they turn attending an event into a stack of pending LinkedIn connections — with zero manual work.

🧩
Chrome Extension
TypeScript · Manifest V3

Side panel UI. Detects Luma event pages automatically. Scans the full guest list, lazy-loading all attendees. Finds LinkedIn profiles. Queues connections. Runs entirely in your browser — no server required.

📊
Dashboard
Next.js · Supabase · Vercel

Track every campaign across every event. See pending, sent, accepted, and failed connections. Cumulative progress graph. CSV export. Real-time Supabase sync so the data is always current.

🤖
Telegram Bot
Node.js · pm2 · UptimeRobot

24/7 VPS monitoring. Responds to /status, /health, /logs commands. Pings on errors. UptimeRobot checks every 5 minutes. Also routes queries to Claude with MCP access for intelligent debugging.

The Workflow

Four steps. The first one is manual. The rest run on their own.

Step 01
📅
Attend Event
  • Show up to any Luma event
  • Open the event page after
  • Extension auto-detects it
Step 02
🔍
Scan Attendees
  • One click to scan
  • Lazy-loads all guests
  • Matches LinkedIn profiles
  • Stores to Supabase
Step 03
✍️
Write a Note
  • One personalized message
  • Auto-fills event name
  • Launch campaign
  • Queue created instantly
Step 04
Connections Send
  • Every 15–30 minutes
  • Business hours only
  • 25/day cap by design
  • Zero manual work

How I Shipped It

Warm intros are the #1 pipeline channel at every early-stage company. Most people never capture them. Building the infrastructure to do it at scale meant solving a few genuinely hard problems.

Relationship Design
Human-Paced by Design

Aggressive outreach kills relationships. So this is deliberately slow: 25 connections/day, 15-30 min random delays, only during 6am-11pm local time. Zero bans in production. The insight here is a GTM one, not an engineering one: volume without trust is noise.

By the numbers
0
connections
sent
0
Luma events
run through it
0
acceptance
rate
0
responsible
send cap
0
LinkedIn bans
in production
0
before warm
leads go cold

Tech Stack

Extension
TypeScript Chrome Manifest V3 esbuild Service Worker Content Scripts Side Panel API
APIs
LinkedIn Voyager API Luma Event API Supabase Telegram Bot API
Dashboard
Next.js TypeScript Vercel Supabase Auth
Infrastructure
Node.js pm2 UptimeRobot Playwright
Built by

Jenny
Chen

GTM operator turned builder. I hate doing things manually that a computer can do for me. So I build the tools. Targeting GTM + Partnerships roles at Series A-B AI companies.

I Hate Networking
v1.3.4
ihatenetworking.space
2025–2026