L
LinkedIn Outreach Platform Agentic Workflow
LinkedIn: Lead Health Check — LinkedIn Outreach Platform Agentic Workflow
>-
Available free v1.0.0 Browser LLM
$
sidebutton install linkedin Steps
- 1. Navigate to a URL
- url
- {{profile_url}}
browser.navigate - 2. Wait
- selector
- main
- timeout
- 12000
browser.wait - 3. Wait
- selector
- main a[href*="/in/"], main a[href*="/company/"]
- timeout
- 10000
browser.wait - 4. Scroll the page
- direction
- down
- amount
- 1200
browser.scroll - 5. Wait
- selector
- main
- timeout
- 1000
browser.wait - 6. Scroll the page
- direction
- down
- amount
- 1200
browser.scroll - 7. Wait
- selector
- main
- timeout
- 1000
browser.wait - 8. Scroll the page
- direction
- down
- amount
- 1200
browser.scroll - 9. Wait
- selector
- main
- timeout
- 1000
browser.wait - 10. Scroll the page
- direction
- down
- amount
- 1200
browser.scroll - 11. Wait
- selector
- main
- timeout
- 1000
browser.wait - 12. Scroll the page
- direction
- down
- amount
- 1200
browser.scroll - 13. Wait
- selector
- main
- timeout
- 1000
browser.wait - 14. Scroll the page
- direction
- down
- amount
- 1200
browser.scroll - 15. Wait
- selector
- main
- timeout
- 1000
browser.wait - 16. Extract text from a selector
- selector
- main
- as
- profile_blob
browser.extract - 17. llm generate
- prompt
- >
- as
- assessment
llm.generate - 18. control stop
- message
- {{assessment}}
control.stop
Workflow definition
schema_version: 1
version: 0.1.0
last_verified: '2026-04-19'
id: linkedin_lead_health
title: 'LinkedIn: Lead Health Check'
description: >-
Opens a LinkedIn profile, scrolls to trigger lazy-loaded sections (about,
experience, education, skills, activity), extracts the full profile, and
asks the LLM to evaluate the lead against the AICTPO ICP. Returns structured
JSON with raw profile data, detected signals, ICP evaluation (score/tier),
and suggested outreach angle + opener. Designed for batch enrichment of
Max's 1st-degree connections.
category:
level: task
domain: sales
reusable: true
params:
profile_url:
type: string
description: Full LinkedIn profile URL (e.g. https://www.linkedin.com/in/username/)
required: true
icp_context:
type: string
description: Optional override for ICP definition. Defaults to AICTPO v3 ICP baked into prompt.
required: false
max_scrolls:
type: string
description: Number of scroll steps to trigger lazy-load. Default 6.
required: false
policies:
allowed_domains:
- '*.linkedin.com'
steps:
- type: browser.navigate
url: '{{profile_url}}'
- type: browser.wait
selector: main
timeout: 12000
- type: browser.wait
selector: main a[href*="/in/"], main a[href*="/company/"]
timeout: 10000
- type: browser.scroll
direction: down
amount: 1200
- type: browser.wait
selector: main
timeout: 1000
- type: browser.scroll
direction: down
amount: 1200
- type: browser.wait
selector: main
timeout: 1000
- type: browser.scroll
direction: down
amount: 1200
- type: browser.wait
selector: main
timeout: 1000
- type: browser.scroll
direction: down
amount: 1200
- type: browser.wait
selector: main
timeout: 1000
- type: browser.scroll
direction: down
amount: 1200
- type: browser.wait
selector: main
timeout: 1000
- type: browser.scroll
direction: down
amount: 1200
- type: browser.wait
selector: main
timeout: 1000
- type: browser.extract
selector: main
as: profile_blob
- type: llm.generate
prompt: >
You are evaluating a LinkedIn profile as a potential AICTPO lead.
## AICTPO ICP (v3, 2026-04-18)
{{icp_context}}
Primary ICP: scaleups 100–1000 employees, 30–200 engineers, mature B2B SaaS,
DACH-first (Berlin/Munich/Vienna/Zurich/Hamburg), UK/NL/Nordics secondary.
Primary buyer title: Director of QA, Director of Engineering, pragmatic EM
with $5K–$20K/mo tool budget. Secondary buyer: founder-CTO at <30-eng startups.
Deprioritize: F500/enterprise IT (procurement too slow), agencies, regulated
verticals (banking/health/defense), hobbyists, bootcamps.
Proof assets available: GoStudent pilot (74 jobs, 97.3% success, scaling to
10 agents then 20–50), aictpo.com dogfooding (agent-shipped PRs merged by
human), Volha Svistunova testimonial (Director of Product at GoStudent —
only use for Product-leader segment).
Squad SKU: €499/mo, 4 agents (SE+QA+PM+SD), 2-week shadow-mode, refundable.
## Scoring rubric (total 0–11)
- title_fit (0–3): 3 = Director of QA/Eng at scaleup (buyer); 2.5 = CTO/VP
Eng (influencer who owns buyer); 2 = CPO/VP Product; 1.5 = adjacent exec
(COO, CIO); 1 = eng manager / tech lead; 0 = unrelated/irrelevant
- size_fit (0–3): 3 = 100–1000 emp; 2.5 = 50–100; 2 = 1000+; 1.5 = <50;
1 = <10; 0 = solo/unclear
- geo (0–2): 2 = DACH; 1.5 = UK/NL/Nordics; 1 = US; 0.5 = other; 0 = unclear
- recency (0–1): 1 = active/posting within 90 days; 0.8 = within 1 year;
0.5 = dormant/no activity visible
- warmth (0–2): 2 = strong mutual signal (shared employer, evident collaboration);
1.5 = many mutual connections or shared industry events; 1 = some mutuals;
0.5 = weak/none visible
Tiers: A = 9–11, B = 6–8, C = 4–5, D < 4.
## Raw profile data
Profile URL: {{profile_url}}
Main content (newline-delimited; line 1 = name, then pronouns, headline,
location, connections, About, Activity, Experience, Education, Skills,
Languages, Interests. Parse this to fill the schema below.):
---
{{profile_blob}}
---
## Your task
Respond with RAW JSON ONLY — no prose before, no markdown fences, no
comments. Match this exact schema (leave a field null if data is not
visible on the profile rather than guessing):
{
"profile_url": "{{profile_url}}",
"name": "string",
"headline": "string",
"location": "string | null",
"connection_degree": "1st | 2nd | 3rd | out-of-network | unknown",
"mutual_connections_count": number | null,
"followers": "string | null",
"has_open_to_work_banner": boolean,
"has_provides_services": boolean,
"has_hiring_banner": boolean,
"about_summary": "first 500 chars of about section, or null",
"current_role": {
"title": "string",
"company": "string",
"employment_type": "string | null",
"start_date": "YYYY-MM | null",
"duration": "e.g. 1 yr 3 mos | null",
"location": "string | null",
"description_snippet": "first 200 chars or null"
},
"prior_roles": [
{"title": "string", "company": "string", "start": "YYYY-MM | null", "end": "YYYY-MM | null", "duration": "string | null"}
],
"prior_roles_count": number,
"total_years_experience": number | null,
"career_arc_signal": "repeat-CTO | first-time-CTO | IC-to-leader | founder | specialist | unclear",
"education": [
{"institution": "string", "degree": "string | null", "field": "string | null", "end": "YYYY | null"}
],
"top_skills": ["string", "..."],
"recent_activity": {
"posted_within_90d": boolean,
"recent_topics": ["string", "..."],
"engagement_level": "active | sporadic | dormant | unknown"
},
"languages": ["string", "..."],
"detected_signals": {
"likely_dach": boolean,
"likely_scaleup": boolean,
"likely_buyer": boolean,
"likely_influencer_only": boolean,
"just_joined_role_90d": boolean,
"posting_about_ai": boolean,
"posting_about_hiring": boolean,
"posting_about_qa_or_backlog": boolean,
"stealth_mode": boolean,
"too_big_for_icp": boolean,
"too_small_for_icp": boolean
},
"icp_evaluation": {
"cluster": "CTO | VP-Eng | Dir-Eng | QA-lead | CPO | VP-Product | PM-senior | Founder | COO | Investor | Other",
"segment": "Founder-CTO-small | Scaleup-CTO | Enterprise-CTO | CPO-scaleup | Founder-PM | QA-lead-scaleup | not-icp | unclear",
"company_size_estimate": "<50 | 50-100 | 100-1000 | 1000+ | unknown",
"geography": "DACH | UK | NL | Nordics | US | Other | unknown",
"score": {
"title_fit": 0,
"size_fit": 0,
"geo": 0,
"recency": 0,
"warmth": 0,
"total": 0
},
"tier": "A | B | C | D"
},
"outreach": {
"suggested_angle": "founder-to-founder-pilot | intro-request-to-buyer | volha-namedrop-capacity | forward-to-cto | dogfood-evidence | not-now",
"opening_line": "one sentence tailored to this specific person — reference something concrete from their profile, not a template",
"flags": ["string", "..."],
"followup_notes": "2-3 sentence rationale for the tier and angle"
},
"confidence": 0.0,
"extraction_notes": "anything the LLM could not reliably extract or had to infer"
}
as: assessment
- type: control.stop
message: '{{assessment}}'