LinkedIn Intelligence API

Sniper outreach.
Not shotgun spam.

Scrape profiles. Psychologically profile them — Freud, Jung, ToneEngine, Sales 101. Craft DMs that hit their archetype, mirror their voice, and speak to what they unconsciously want.

View Endpoints
FallScout
FallLead
FallForce
FallCall

Endpoints

Full scrape-to-outreach pipeline in one API

POST
/scrape/full
Scrape a LinkedIn profile + recent posts in one call. Auto-saves as a prospect. Puppeteer + stealth plugin for detection evasion.
POST
/research/:id
AI-powered prospect analysis. Identifies interests, pain points, communication style, conversation hooks, and decision signals.
POST
/psyche/:id
Deep psychological profile. Freudian drive analysis (id/ego/superego), Jungian archetype mapping, ToneEngine voice fingerprint, Sales 101 methodology fit. The sniper scope.
POST
/sniper/:id
The full stack in one call. Research + psyche profile + 3 sniper DMs. Each activates their archetype, mirrors their voice, bridges their gap, preempts their objections.
POST
/outreach/dm/:id
Generate 3 tailored DMs. Auto-loads psyche data when available for sniper mode. Falls back to standard personalization without it.
POST
/outreach/comment
Warm-up engagement comments. Add genuine value to their posts before DMing. Build name recognition first.
GET
/prospects
List all saved prospects. Filter by status (scraped, researched, outreach-ready, contacted, replied, converted), campaign, or tag.
POST
/export/falllead
Export prospects as FallLead-compatible leads. Includes AI research insights, hooks, and lead scoring. Pipeline-ready.
POST
/ingest
Manually add a prospect without scraping. Paste profile data + posts. Works when you already have the intel.
POST
/campaigns
Create outreach campaigns. Group prospects, set shared context, bulk-research all prospects in one call.
GET
/stats
Pipeline analytics. Total prospects, scrapes, researches, DMs generated, conversion funnel by status.

Code

From scrape to send in 3 API calls

// Scrape profile + posts in one shot
const res = await fetch('http://localhost:3005/scrape/full', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    url: 'https://linkedin.com/in/target-person',
    cookies: 'li_at=YOUR_SESSION_COOKIE',
    post_count: 15,
    save: true
  })
});

const { prospect_id, profile, posts } = await res.json();
// prospect_id: "a1b2c3..." — saved for research + outreach
// AI-analyze the prospect
const res = await fetch(`http://localhost:3005/research/${prospect_id}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ provider: 'anthropic' })
});

const { research } = await res.json();

// research.interests     → ["AI tooling", "remote teams", "product-led growth"]
// research.pain_points   → ["scaling outbound without hiring SDRs"]
// research.hooks         → [{ reference: "their post about cold email fatigue" }]
// research.best_approach → "lead with a specific insight about their PLG strategy"
// Deep psychological profile — Freud + Jung + Tone + Sales 101
const res = await fetch(`http://localhost:3005/psyche/${prospect_id}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ provider: 'anthropic' })
});

const { psyche } = await res.json();

// psyche.freud.id_desire       → "Recognition as a visionary builder"
// psyche.freud.defense_mechanisms → ["intellectualization", "sublimation"]
// psyche.jung.dominant_archetype → "Creator"
// psyche.jung.trigger_phrase     → "Build something that didn't exist before"
// psyche.tone.mimicry_rules      → { avg_sentence_length: "short", emoji: "none" }
// psyche.sales101.methodology_fit → "Challenger"
// psyche.sales101.gap            → { current: "manual outbound", desired: "automated" }
// psyche.sniper_brief.emotional_entry_point → "validate their builder identity"
// SNIPER MODE — research + psyche + DM in one call
const res = await fetch(`http://localhost:3005/sniper/${prospect_id}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    context: {
      offer: 'AI-powered sales intelligence platform',
      company: 'FallScout',
      why: 'They posted about outbound scaling challenges',
      goal: 'Start a conversation'
    },
    tone: 'casual'
  })
});

const data = await res.json();
// data.mode         → "sniper"
// data.archetype    → "Creator" (their Jungian type)
// data.tone_match   → "conversational" (their voice register)
// data.sales_method → "Challenger" (optimal framework)
// data.options[0].approach       → "archetype-trigger"
// data.options[0].archetype_play  → "activating Creator: 'build something new'"
// data.options[0].freud_lever     → "ego validation of builder identity"
// data.options[0].message         → the actual DM, written in THEIR voice
// Full pipeline: scrape → psyche → sniper → export to FallLead
async function fullPipeline(linkedinUrl, cookies, context) {
  // 1. Scrape
  const { prospect_id } = await api('/scrape/full', {
    url: linkedinUrl, cookies, post_count: 15, save: true
  });

  // 2. Research
  const { research } = await api(`/research/${prospect_id}`, {
    provider: 'anthropic'
  });

  // 3. Generate DMs
  const { options } = await api(`/outreach/dm/${prospect_id}`, {
    context, tone: 'professional'
  });

  // 4. Export to FallLead
  const { leads } = await api('/export/falllead', {
    prospect_ids: [prospect_id]
  });

  return { prospect_id, research, dms: options, lead: leads[0] };
}
// Warm-up: engage with their post BEFORE sending a DM
const res = await fetch('http://localhost:3005/outreach/comment', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    post_content: "Just shipped our v2 API and the feedback has been...",
    prospect_id: prospect_id,
    context: {
      offer: 'developer tools',
      expertise: 'API design and DX optimization'
    }
  })
});

const { options } = await res.json();
// 3 comment options that add genuine value
// Post comment → wait 2 days → then DM (they already know your name)

Why FallScout

Intelligence-driven outreach that doesn't sound like a template

🔍
Deep Profile Scraping
Puppeteer + stealth plugin. Name, headline, about, experience, education, skills, posts, engagement metrics.
🧠
Freudian Drive Analysis
Map their Id (desire), Ego (presentation), Superego (values). Find the gap between who they ARE and who they PERFORM. Identify defense mechanisms and transference type.
🎭
Jungian Archetype Mapping
12 archetypes: Creator, Ruler, Sage, Explorer, Hero, Magician, Rebel, Lover, Caregiver, Jester, Everyman, Innocent. Identify dominant + shadow. Know their trigger phrase.
🎤
ToneEngine Voice Fingerprint
Rhythm, register, power words, signature patterns, emotional valence, status signals. Full mimicry blueprint — write AS THEM.
🎯
Sales 101 Methodology
SPIN, Challenger, Solution, Consultative, Sandler, Gap Selling. Auto-selects the optimal framework. Maps buying stage and decision style.
💬
Sniper DMs
3 options: archetype-trigger, gap-reveal, ego-mirror. Each under 100 words, written in THEIR voice, preempting their objections.
🔥
Warm-Up Engine
Generate value-add comments for their posts. Build familiarity before the DM. They'll recognize your name.
📊
Pipeline Tracking
Status funnel: scraped → researched → outreach-ready → contacted → replied → converted. Full analytics.
🎯
Campaign Management
Group prospects. Set shared context. Bulk-research entire campaigns in one call.
🔗
FallLead Export
One-click export to FallLead format. Includes research insights, hooks, and lead scoring. Pipeline-native.
🏛️
Sovereign
Your server. Your data. Prospect intelligence never leaves your machine. Zero cloud dependency.

The Flow

From stranger to conversation in three moves

Scrape
profile + posts
Research
AI analysis
Comment
warm up
DM
tailored outreach
FallLead
qualify
FallForce
close

Quick Start

Running in under 2 minutes

# clone and install
$ git clone https://github.com/sjgant80-hub/fallscout.git
$ cd fallscout && npm install

# set your AI provider key
$ export ANTHROPIC_API_KEY=sk-ant-...

# start
$ npm start
◊ FallScout — LinkedIn Intelligence API
Port: 3005