DOC.04LIAP

πŸ—ΊοΈ Development Roadmap

← Home


βœ… Completed

Phase 1 β€” Foundation

  • Playwright persistent Chrome context (reuses real session)
  • LinkedIn company search + profile scraping
  • AI scoring (keyword + Ollama/Gemini)
  • Connection request automation with personalized note
  • Daily/weekly cap enforcement
  • FastAPI backend with WebSocket log streaming
  • Real-time dashboard UI

Phase 2 β€” First Message

  • Msg Prospect tab with messages-per-run slider
  • Connection card scraping via JS DOM evaluation
  • [data-view-name="message-button"] selector (confirmed from Web Inspector)
  • Direct compose URL navigation (more reliable than clicking button)
  • Ollama message generation (warm, non-salesy prompt)
  • Deduplication against messages.csv
  • 5-second send countdown with abort
  • LinkedIn Premium AI prompt dismissal

Phase 3 β€” Follow-Up Sequence

  • followups.csv schema + CRUD (upsert_followup, seed_followups_from_messages)
  • Follow Up tab with days slider + cap slider
  • Reply detection via message bubble CSS classes
  • Profile page Message <button> click (not <a> tag)
  • Compose overlay opens on profile page (no page jump)
  • AI follow-up generation referencing original message
  • Status tracking: pending β†’ followed_up / replied
  • AI quote stripping (.strip('"').strip("'"))

Phase 4 β€” Hardening

  • Git history cleanup (PII purged via filter-branch)
  • .gitignore pattern-based (*.csv, *.log, *.jsonl)
  • messages.csv recovery from git stash
  • README updated (no Sales Navigator references)
  • messenger_debug.log file-based verbose logging

πŸ”² Planned β€” Near Term

Smart Follow-Up Timing

  • Respect wait_days per-person (already built, just set slider > 0)
  • Skip weekends when calculating wait (B2B best practice)
  • Configurable follow-up window (e.g. only send Mon–Thu 9am–5pm)

Reply Handling

  • When replied detected: log reply timestamp to followups.csv
  • UI: show "Replied βœ“" rows in green in the Follow-Up table
  • Optional: notify user (desktop notification or email) when someone replies

Message Quality

  • A/B testing: rotate between 2 message templates, track which gets more replies
  • Message preview before send (show in UI, require click to confirm)
  • Per-company custom message context (e.g. "mention their recent Series B")
  • Tone selector: Professional / Casual / Direct

πŸ”² Planned β€” Medium Term

Analytics

  • Reply rate tracking (replied / followed_up)
  • Connection acceptance rate
  • Best-performing message templates
  • Time-of-day send analysis
  • Simple dashboard charts (Chart.js)

Campaign Management

  • Named campaigns (group companies + message templates together)
  • Campaign start/stop/archive
  • Per-campaign stats (sent, replied, converted)

Multi-Step Sequences

  • Step 2 follow-up (after follow-up also gets no reply)
  • Sequence designer: define N steps with N-day gaps
  • Hard stop: never contact someone more than 3 times total

πŸ”² Planned β€” Longer Term

Profile Intelligence

  • Pull profile headline, recent posts, mutual connections before messaging
  • Feed profile context into AI prompt for hyper-personalization
  • Detect job changes: "Congratulations on the new role at..."

Safety & Rate Limiting

  • Randomized send times (not all at :00 or :30)
  • Auto-pause if LinkedIn shows any warning banners
  • Monthly cap tracking (LinkedIn restricts ~100 connection requests/week)
  • Exponential backoff on repeated CAPTCHA

Export & Integrations

  • Export followups.csv to Notion database
  • Export to Google Sheets (via gspread)
  • Webhook on reply detected (Zapier / Make compatible)
  • Slack notification on reply

πŸ’‘ Ideas Backlog

IdeaNotes
LinkedIn Sales Navigator supportRemoved from scope (no SN access)
Profile photo scrapingPrivacy risk β€” not planned
Auto-accept connection requestsPassive mode β€” could add
Message thread summarizationRead thread β†’ AI summary in UI
"Warm" detectionIf they liked/commented your post, use warmer opener
Connection quality scoreBased on title/company/mutual connections