{
  "source_agent_id": "wsa_4a9b8ad4a2114f13923d223197fb0b30",
  "exported_at": "2026-10-15",
  "agent_name": "linkedin-role-headcount",
  "display_name": "LinkedIn role headcount",
  "description": "Enrichment: for each company row and a target role (e.g. Forward Deployed Engineer), counts people currently holding that role per public LinkedIn data using one fixed title definition, plus managers within it, the company's own alias title for the role and its headcount (reported separately), search completeness, total LinkedIn employees and sample profiles. Run in batches of at most 5 companies so every title search completes.",
  "use_case": "enrichment",
  "effort": "x-high",
  "sources": {"allow": [], "block": [], "prioritize": "linkedin.com company pages and public profiles; LinkedIn people search results", "avoid": "Contact-data and people-search vendors (ZoomInfo, Apollo, RocketReach, ContactOut, Lusha), job boards and estimated-headcount sites"},
  "suggested_questions": ["Role: Forward Deployed Engineer. Count current Forward Deployed Engineers at each company."],
  "output_schema": {"type": "array", "items": {"type": "object", "required": ["company_name", "role", "role_headcount", "count_method", "title_variants_counted"], "properties": {
    "role": {"type": "string"},
    "notes": {"type": ["string", "null"]},
    "company_name": {"type": "string"},
    "count_method": {"type": "string", "description": "How the count was obtained, e.g. 'LinkedIn people search result count, current company + title' or 'profiles enumerated'"},
    "managers_count": {"type": ["integer", "null"], "description": "How many of role_headcount hold a manager/lead/head title"},
    "role_headcount": {"type": ["integer", "null"], "description": "People currently in the role at this company per public LinkedIn data; null if not determinable"},
    "alias_headcount": {"type": ["integer", "null"], "description": "People currently holding company_role_name at the company (counted separately, NOT included in role_headcount)"},
    "search_complete": {"type": "boolean", "description": "true only if every title variant search was run to its last page and no search hit a page cap"},
    "company_role_name": {"type": ["string", "null"], "description": "The company's own title for the same customer-embedded engineering role if it differs (e.g. 'Agent Deployment Engineer'), else null"},
    "sample_profile_urls": {"type": ["string", "null"], "description": "Up to 3 LinkedIn profile URLs of people counted, '; ' separated"},
    "company_linkedin_url": {"type": ["string", "null"]},
    "title_variants_counted": {"type": "string", "description": "Exact title strings included in the count, '; ' separated"},
    "company_role_name_source": {"type": ["string", "null"], "description": "URL showing the company uses that title (careers page, job posting or company blog)"},
    "company_total_employees_linkedin": {"type": ["integer", "null"], "description": "Employee count shown on the company's LinkedIn page"}
  }}},
  "skill": "Purpose: for each company in the input and the role named in the input, count how many people CURRENTLY hold that role at that company, using public LinkedIn data, with one fixed title definition for every company so counts are comparable.\n\nStep 1, company resolution:\n- Find the official LinkedIn company page with LinkedIn company search (match name plus website domain or industry; exclude namesakes). Record company_linkedin_url and the employee count in company_total_employees_linkedin.\n\nStep 2, FIXED title definition (same for every company; do not add or drop titles per company):\n- For \"Forward Deployed Engineer\" COUNT a person if their current title or current headline at this company contains any of: \"Forward Deployed Engineer\", \"Forward Deployed Software Engineer\", \"Forward Deployed AI Engineer\", \"Forward Deployment Engineer\", \"Forward Deployed Engineering\" (as their team/role), or \"FDE\" used as their role at this company (e.g. \"FDE @ X\", \"Senior FDE\", \"FDE Lead\", \"Head of FDE\"). Seniority prefixes and managers/leads/heads of these titles count; record how many are managers/leads/heads in managers_count.\n- DO NOT COUNT in role_headcount: Deployment Strategist, Deployment Engineer, AI/Agent Deployment Engineer, Solutions Engineer/Architect, Field Engineer, Customer Engineer, Applied AI Engineer, operations or recruiting roles that support FDE teams (e.g. \"Ops Lead - FDE\", recruiter hiring FDEs), interns, people showing FDE at a different employer, and people looking for FDE roles. A headline mixing an excluded title with \"(FDE)\" counts only if FDE is their own role at this company.\n- title_variants_counted lists the exact strings found among counted people.\n\nStep 3, the company's own name for the role (alias, counted separately):\n- Check whether the company uses a different title for customer-embedded engineers who build and deploy its product inside customer environments (e.g. \"Agent Deployment Engineer\", \"AI Deployment Engineer\", \"Agent Engineer\", \"Deployed Engineer\", \"Mission Engineer\"). Confirm it from the company's careers page, a job posting or the company's own blog, and record company_role_name and company_role_name_source. Job postings may be used ONLY to discover the title name, never to count.\n- If found, run the same LinkedIn people search for that title and record the count in alias_headcount. Never add alias people to role_headcount. If none found, set company_role_name, company_role_name_source and alias_headcount to null.\n\nStep 4, counting method, for every company and every title in Step 2 and Step 3:\nA. LinkedIn PEOPLE search (mandatory): keyword \"<title>\" with current-company filter = the resolved company, and also keyword query \"<title> <company name>\". Page through ALL result pages. Keep only people matching the rules above.\n   - Page caps: if a search returns full pages until it stops (results end without a short final page), it has probably hit LinkedIn's cap. Then partition the same search by location (United States; United Kingdom; Europe; Canada; Asia-Pacific; rest of world) and by seniority words (Senior, Staff, Lead, Head) and enumerate each partition to its last page, de-duplicating by profile URL.\nB. Web cross-check: search the web for \"<title>\" \"<company>\" linkedin and \"<title> at <company>\" (also try without quotes). If a search returns nothing or errors, retry once with a reworded query. Add only linkedin.com/in profiles that show the role currently at this company; de-duplicate by profile URL.\n- role_headcount = distinct people kept for the Step 2 titles. It is a lower bound of public profiles; say so in notes.\n- 0 vs null: if all methods ran and found nobody, role_headcount = 0. null only if LinkedIn search and web search were both unavailable; say which call failed.\n- search_complete = true only if every Step 2 title variant search (\"Forward Deployed Engineer\", \"Forward Deployed Software Engineer\", \"FDE\") ran to its last page and any capped search was partitioned. If your budget runs out first, set false and list the searches not completed in notes.\n- Never estimate or extrapolate from job postings, team pages or press.\n\nEvidence and output:\n- sample_profile_urls: up to 3 public linkedin.com/in profile URLs of people counted in role_headcount.\n- notes: per-method counts (e.g. \"A: 41; partitions US 30, UK 8, EU 6; B: 3 new; total 47\"), exclusions with reasons, and anything limiting accuracy.\n- Return one row per input company, in input order, with company_name exactly as given."
}
