An r/micro_saas post showed that generic LinkedIn outreach gets ignored. The fix: reference something specific about the prospect's company -- a recent article, a product launch, a hiring post. This tutorial builds a citation layer that enriches outreach messages with real, verifiable references from search data.
Prerequisites
- Scavio API key
- Python 3.8+
- List of prospect companies or people
Walkthrough
Step 1: Research the prospect's company
Search for recent news and mentions.
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def research_company(company_name):
news = requests.post('https://api.scavio.dev/api/v1/search',
headers=H,
json={'platform': 'google', 'query': f'{company_name} news 2026'}).json()
reddit = requests.post('https://api.scavio.dev/api/v1/search',
headers=H,
json={'platform': 'reddit', 'query': company_name}).json()
return {
'news': news.get('organic_results', [])[:3],
'reddit': reddit.get('results', [])[:3]
}Step 2: Extract citation-worthy details
Find specific, referenceable facts.
def extract_citations(research):
citations = []
for article in research['news']:
title = article.get('title', '')
link = article.get('link', '')
if any(kw in title.lower() for kw in ['launch', 'raise', 'announce', 'hire', 'expand', 'partner']):
citations.append({'type': 'news', 'title': title, 'url': link})
for post in research['reddit']:
if post.get('upvotes', 0) > 20:
citations.append({'type': 'reddit', 'title': post.get('title', ''), 'url': post.get('url', '')})
return citationsStep 3: Generate personalized message with citations
Weave the citation into a natural outreach message.
def personalized_message(prospect_name, company, citations, your_offer):
if not citations:
return None # Skip if no good citations found
cite = citations[0]
return (f'Hi {prospect_name},\n\n'
f'I saw {company} was mentioned in "{cite["title"]}" -- '
f'congrats on the momentum.\n\n'
f'I work on {your_offer} and thought it might be relevant '
f'given what you are building. Worth a quick look?\n\n'
f'Reference: {cite["url"]}')Step 4: Batch process a prospect list
Enrich an entire outreach list with citations.
import csv
def enrich_outreach_list(input_csv, output_csv, your_offer):
with open(input_csv) as fin, open(output_csv, 'w', newline='') as fout:
reader = csv.DictReader(fin)
writer = csv.DictWriter(fout, fieldnames=['name', 'company', 'message', 'citation_url'])
writer.writeheader()
for row in reader:
research = research_company(row['company'])
citations = extract_citations(research)
msg = personalized_message(row['name'], row['company'], citations, your_offer)
if msg:
writer.writerow({'name': row['name'], 'company': row['company'],
'message': msg, 'citation_url': citations[0]['url']})Python Example
import os, requests
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def cite_enrich(company):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{company} news 2026'}).json()
for r in data.get('organic_results', [])[:3]:
print(f"Citation: {r['title']}\n URL: {r['link']}")
cite_enrich('Stripe')JavaScript Example
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: `${company} news 2026`})
});
const data = await res.json();
const citation = data.organic_results?.[0];Expected Output
Enriched outreach CSV with personalized messages containing real citations. 2 queries per prospect (Google + Reddit) = $0.01/prospect.