skills/tinyfish-io/tinyfish-cookbook/stalk-my-interviewer

stalk-my-interviewer

Installation
SKILL.md

Stalk My Interviewer

Deploy parallel TinyFish agents to research an interviewer across LinkedIn, GitHub, Twitter/X, news, and conference platforms — then synthesize a structured prep report so you walk in knowing exactly who you're talking to.

Pre-flight Check (REQUIRED)

Before making any TinyFish call, always run BOTH checks:

1. CLI installed?

which tinyfish && tinyfish --version || echo "TINYFISH_CLI_NOT_INSTALLED"

If not installed, stop and tell the user:

Install the TinyFish CLI: npm install -g @tiny-fish/cli

2. Authenticated?

tinyfish auth status

If not authenticated, stop and tell the user:

You need a TinyFish API key. Get one at: https://agent.tinyfish.ai/api-keys

Then authenticate:

tinyfish auth login

Do NOT proceed until both checks pass.


Step 1 — Gather inputs

You need:

  • Interviewer's full name — e.g. "Sarah Chen"
  • Company — e.g. "Stripe", "Anthropic", "Linear"
  • Role you're interviewing for (optional but improves output) — e.g. "Senior Software Engineer"

If any are missing, ask before proceeding. If the name is very common (e.g. "John Smith"), ask for company and role to disambiguate before searching.


Step 2 — Parallel research

Fire all agents simultaneously. Every agent searches a different surface — run them all at once using & + wait.

# Agent 1 — LinkedIn
tinyfish agent run \
  --url "https://www.linkedin.com/search/results/people/?keywords={FULL_NAME_ENCODED}+{COMPANY_ENCODED}" \
  "You are on a LinkedIn people search results page. Find the profile for {FULL_NAME} who works or worked at {COMPANY}.
   Click the most relevant result.
   On their profile extract:
   - Current job title and company
   - Previous roles (last 3 positions: title, company, duration)
   - Education (degrees, institutions)
   - Skills listed (top 10)
   - Summary / About section (if visible)
   - How long they have been at {COMPANY}
   STRICT RULES:
   - Click only the most relevant profile result — do not browse multiple profiles
   - Do NOT scroll more than twice on the profile page
   - If the page asks you to log in, extract whatever is visible before the gate and return it
   - Do NOT click any other links
   Return JSON: {name, current_title, current_company, tenure_at_company, previous_roles: [{title, company, duration}], education: [{degree, institution}], skills: [], summary}" \
  --sync > /tmp/smi_linkedin.json &

# Agent 2 — GitHub (relevant if role is technical)
tinyfish agent run \
  --url "https://github.com/search?q={FULL_NAME_ENCODED}+{COMPANY_ENCODED}&type=users" \
  "You are on GitHub user search results for {FULL_NAME} at {COMPANY}.
   Find the most likely profile match. Click it.
   On their GitHub profile extract:
   - Username
   - Bio
   - Location
   - Company listed on profile
   - Pinned repositories (name, description, language, stars)
   - Most used programming languages (visible in stats or repos)
   - Any notable open source contributions or projects
   STRICT RULES:
   - Click only the single most relevant result
   - Do NOT navigate to individual repos
   - Read only what is visible on their profile page
   - If no clear match found, return {found: false}
   Return JSON: {found: bool, username, bio, location, pinned_repos: [{name, description, language, stars}], languages: [], notable_work}" \
  --sync > /tmp/smi_github.json &

# Agent 3 — Twitter/X
tinyfish agent run \
  --url "https://x.com/search?q={FULL_NAME_ENCODED}+{COMPANY_ENCODED}&src=typed_query&f=user" \
  "You are on Twitter/X user search results for {FULL_NAME} at {COMPANY}.
   Find the most likely profile match. Click it.
   On their Twitter profile extract:
   - Display name and handle
   - Bio
   - Pinned tweet (if any)
   - Topics they tweet about most (infer from visible tweets — read up to 10)
   - Any strong opinions or recurring themes
   - Approximate tweet frequency / activity level
   STRICT RULES:
   - Click only the most relevant profile
   - Read only the first 10 visible tweets — do NOT scroll further
   - Do NOT click any tweet links or replies
   - If no match found, return {found: false}
   Return JSON: {found: bool, handle, bio, pinned_tweet, topics: [], opinions: [], activity_level}" \
  --sync > /tmp/smi_twitter.json &

# Agent 4 — Google News & web mentions
tinyfish agent run \
  --url "https://www.google.com/search?q=\"{FULL_NAME_ENCODED}\"+\"{COMPANY_ENCODED}\"&tbm=nws" \
  "You are on Google News search results for {FULL_NAME} at {COMPANY}.
   Read the titles and snippets of the first 10 visible news results.
   Extract:
   - Any articles authored by or quoting {FULL_NAME}
   - Key topics they are associated with in the news
   - Any notable achievements, announcements, or controversies mentioned
   STRICT RULES:
   - Do NOT click any article links
   - Read only titles and snippets visible in the search listing
   - Maximum 10 results then stop
   Return JSON: {mentions: [{title, snippet, source, date}], topics: [], authored_articles: []}" \
  --sync > /tmp/smi_news.json &

# Agent 5 — Company engineering blog
tinyfish agent run \
  --url "https://www.google.com/search?q=site:{COMPANY_DOMAIN}+\"{FULL_NAME_ENCODED}\"" \
  "You are on Google search results filtered to {COMPANY}'s website for content authored by or mentioning {FULL_NAME}.
   Read the visible results.
   Extract:
   - Any blog posts, articles, or pages authored by {FULL_NAME}
   - Topics they write about at the company
   - Any technical decisions or opinions expressed
   STRICT RULES:
   - Do NOT click any result links
   - Read only titles and snippets from the search listing
   - Maximum 8 results then stop
   - If no results, return {found: false}
   Return JSON: {found: bool, articles: [{title, snippet, url, topic}]}" \
  --sync > /tmp/smi_blog.json &

# Agent 6 — Conference talks
tinyfish agent run \
  --url "https://www.google.com/search?q=\"{FULL_NAME_ENCODED}\"+\"{COMPANY_ENCODED}\"+(talk+OR+keynote+OR+conference+OR+speaker+OR+presentation)" \
  "You are on Google search results for conference talks and presentations by {FULL_NAME} at {COMPANY}.
   Read the visible results.
   Extract any conference talks, keynotes, podcast appearances, or panel discussions they have participated in:
   - Talk title
   - Event name
   - Year
   - Topic / summary from the snippet
   STRICT RULES:
   - Do NOT click any links
   - Read only titles and snippets
   - Maximum 8 results then stop
   - If no results, return {found: false}
   Return JSON: {found: bool, talks: [{title, event, year, topic}]}" \
  --sync > /tmp/smi_talks.json &

# Wait for all agents to complete
wait

echo "=== LINKEDIN ===" && cat /tmp/smi_linkedin.json
echo "=== GITHUB ===" && cat /tmp/smi_github.json
echo "=== TWITTER ===" && cat /tmp/smi_twitter.json
echo "=== NEWS ===" && cat /tmp/smi_news.json
echo "=== BLOG ===" && cat /tmp/smi_blog.json
echo "=== TALKS ===" && cat /tmp/smi_talks.json

Before running, replace:

  • {FULL_NAME} — e.g. Sarah Chen
  • {FULL_NAME_ENCODED} — URL-encoded e.g. Sarah%20Chen
  • {COMPANY} — e.g. Stripe
  • {COMPANY_ENCODED} — URL-encoded e.g. Stripe
  • {COMPANY_DOMAIN} — e.g. stripe.com (infer from company name for well-known companies; ask the user if unsure)

Step 3 — Synthesize the prep report

Combine all results into a structured report. Only include sections where real data was found — do not pad with guesses.

## Interviewer Research Report — {FULL_NAME}, {COMPANY}
*Researched: {date}*

---

### 👤 Background
**Current role:** {title} at {company} ({tenure})
**Career path:** {brief summary of career trajectory — 2-3 sentences}
**Education:** {degrees and institutions}

---

### 💻 Technical Profile
**Languages / Stack:** {programming languages and technologies found}
**Open source:** {notable repos or contributions, if any}
**What they build / have built:** {summary from GitHub and blog posts}

*(Skip this section if no technical data found)*

---

### 🧠 What They Care About
**Recurring themes:** {topics that appear across Twitter, blog posts, talks}
**Strong opinions:** {any publicly stated views on tech, engineering culture, product, etc.}
**Published work:** {blog posts, articles, talks — with topics}

---

### 🎤 Conference & Public Presence
{List of talks or appearances found, with event and year}
*(Skip if none found)*

---

### 💬 Suggested Conversation Starters
Based on what you found, specific things you can bring up naturally:
- {specific thing they worked on or wrote about}
- {specific opinion or project they're known for}
- {something from a talk or article that genuinely interests you}

---

### 🎯 How to Tailor Your Interview
Given their background, here's what to emphasize:
- {specific advice based on their career path, seniority, or technical focus}
- {what signals they likely care about based on their public work}
- {anything to be aware of — e.g. if they wrote critically about X, show you've thought about it}

---

### ⚠️ Gaps in Research
{List any sources that returned no data or were blocked, so the user knows what's missing}

Edge Cases

  • LinkedIn blocked or requires login — extract whatever is visible before the gate, note the limitation, rely more heavily on other sources
  • Very common name — if search results are ambiguous, stop and ask the user for more context (company URL, LinkedIn profile link, Twitter handle) before proceeding
  • No public presence found — be honest: "Limited public information found for {name} at {company}. Here's what was found: [minimal data]. You may want to ask your recruiter for more context or search on LinkedIn directly."
  • Person is very senior (VP, C-suite) — news and company blog will be richest; GitHub and Twitter may be sparse
  • Person is very junior — GitHub may be the richest source; news and talks likely empty
  • Role is non-technical — skip the GitHub agent entirely, weight LinkedIn and blog/news more heavily
Weekly Installs
3
GitHub Stars
1.7K
First Seen
Apr 7, 2026