Paitho
← Product / Stage 03 · Social Research
Pipeline · Stage 03

Who's posting.
What they care about.

Perplexity Sonar deep-research over LinkedIn and X. Named leaders, recent themes, hiring posts, public community presence. The raw material that makes the pitch sound like it was written by someone who actually looked.

What goes in, what comes out.

Inputs
Lead + Audit
  • lead.domain — anchor for entity-resolution on socials
  • lead.companyName — disambiguates same-domain conflicts
  • web_audit.socialFollowers — handles already discovered in audit
  • pack.researchScope — which networks to query (LinkedIn, X, IG, public Slack/Discord)
  • pack.lookbackDays — recency window for posts (default 90)
Outputs
social_research
  • social_research.namedLeaders[] — name, role, network, last post date
  • social_research.recentThemes[] — extracted topic phrases
  • social_research.postingCadence — posts/30d per network
  • social_research.hiringPosts[] — open roles with quoted text
  • social_research.toneSignals[]technical | sales-driven | community-led
  • social_research.communityPresence[] — public Slack/Discord, Reddit, etc.
  • social_research.specificObservation — one-sentence handle for downstream pitch
Feeds: pitch_brief.namedLeaders + pitch_brief.specificObservation

Deep-research, not
a follower count.

— sample.namedLeaders[0] recruiting pack
name: Priya Shah
role: VP People
network: linkedin
lastPost: 14d ago
themes: ["hiring philosophy", "remote-first"]
tone: community-led

Stage 03 runs Perplexity Sonar in deep-research mode against the networks the pack declares. It is given the lead's domain, company name, and the social handles already extracted in stage 02. It returns named individuals who post under the company banner, the themes those individuals have written about in the last lookbackDays, and the cadence of those posts. The model is not asked to guess a tone from the about page — it must point at quoted recent post text as evidence.

Named-leader extraction matters more than follower counts. A pitch that lands on the desk of a VP People who tweeted last week about hiring beats a pitch addressed to a generic info@ address by an order of magnitude. The research stage produces a short list of the people most likely to be the buyer, ranked by recency and by whether their stated interests intersect with the pack's pain taxonomy. The downstream pitch_brief stage uses namedLeaders[0] as the addressed reader.

Tone and community-presence signals shape draft style downstream. A recruiting pack lead whose feed is community-led gets a warmer, less-corporate opener; a fintech lead with a sales-driven tone gets a more formal one. The specificObservation field is the model's single best concrete sentence — usually a quoted recent post or a named project. It is the sentence the pitch will reference, the one that proves you actually looked.

Names with quotes. Or null.

prompt · social_research_v9 · recruiting +
--- system ---
You research a B2B company's social presence. Use Perplexity Sonar
deep-research mode. NEVER name an individual unless you can quote a
recent (<{{pack.lookbackDays}}d) post by them under the company.
Quote the post in _evidence.

--- inputs ---
domain:       {{lead.domain}}
companyName:  {{lead.companyName}}
handles:      {{web_audit.socialFollowers | keys}}
networks:     {{pack.researchScope | json}}
lookbackDays: {{pack.lookbackDays}}

--- output schema ---
{
  "namedLeaders": [
    { "name": string, "role": string, "network": string,
      "lastPost": "YYYY-MM-DD", "themes": string[],
      "_evidence": string }
  ],
  "recentThemes":   string[],     # top 5 across feeds
  "postingCadence": { linkedin?:int, x?:int, instagram?:int },
  "hiringPosts":    { role: string, team: string, _evidence: string }[],
  "toneSignals":    ("technical"|"sales-driven"|"community-led"|"corporate")[],
  "communityPresence": string[],
  "specificObservation": string|null,
  "missing": string[]
}

--- guards ---
- Cap namedLeaders at 5; rank by recency × theme-match to pack.
- specificObservation MUST be a single sentence quoting concrete content.
  If no qualifying post exists, return null.

# <!-- PLACEHOLDER — full prompt registry available in app -->

What can break.
And what catches it.

Risk
Wrong-person attribution

Two people share a name; the pitch addresses the wrong one.

Mitigation

Each named leader must carry a _evidence quote that explicitly references the company. Names without that link are dropped.

Risk
Stale or generic observation

Model returns "they post about technology" — true and useless.

Mitigation

specificObservation must quote a concrete post or named project, or it returns null. Pitch stage refuses to draft if it is null on a pack that requires it.

Risk
Privacy overreach

Personal posts unrelated to the company surface in the lead profile.

Mitigation

Prompt restricts research to public posts authored under the company banner. Personal-account content is dropped pre-write.

Find the named leader.
In a sandbox, in 2 minutes.

Drop a domain. Watch named leaders appear with quoted recent posts.