Enriquezca los clientes potenciales de correo electrónico frío cargando un CSV de dominios de destino, buscando en Google la actividad reciente de cada empresa, analizando señales como rondas de financiación, menciones de tecnología, páginas de contratación y cobertura de noticias, calificando a cada cliente potencial según la intensidad de la señal y exportando un CSV enriquecido listo para su divulgación. Los correos electrónicos fríos genéricos se ignoran. Los correos electrónicos enriquecidos que hacen referencia a la reciente ronda de financiación de una empresa o a la elección de una pila de tecnología se convierten a una tasa de 3 a 5 veces mayor. Este proceso automatiza el paso de investigación que los representantes de ventas realizan manualmente.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Un archivo CSV con dominios potenciales o nombres de empresas
Guia paso a paso
Paso 1: Cargar el CSV del prospecto
Lea la lista de prospectos y prepárela para el enriquecimiento.
import os, requests, csv, json
API_KEY = os.environ['SCAVIO_API_KEY']
def load_prospects(csv_path: str) -> list:
prospects = []
with open(csv_path) as f:
reader = csv.DictReader(f)
for row in reader:
prospects.append({
'company': row.get('company', row.get('name', '')),
'domain': row.get('domain', row.get('website', '')),
'email': row.get('email', ''),
})
return prospects
# Demo data
prospects = [
{'company': 'Acme Corp', 'domain': 'acme.com', 'email': '[email protected]'},
{'company': 'Beta Labs', 'domain': 'betalabs.io', 'email': '[email protected]'},
]
print(f'Loaded {len(prospects)} prospects')Paso 2: Buscar señales en cada dominio
Realice búsquedas específicas en Google para cada cliente potencial para encontrar financiación, contratación, tecnología y señales de noticias.
SIGNAL_QUERIES = [
('{company} funding round 2026', 'funding'),
('{company} hiring engineers 2026', 'hiring'),
('{company} tech stack', 'tech_stack'),
('{company} news 2026', 'news'),
]
def search_signals(company: str) -> dict:
signals = {}
for query_template, signal_type in SIGNAL_QUERIES:
query = query_template.format(company=company)
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': query}, timeout=10)
results = resp.json().get('organic_results', [])[:3]
signals[signal_type] = [{
'title': r.get('title', ''),
'snippet': r.get('snippet', ''),
'url': r.get('link', ''),
} for r in results]
return signals
signals = search_signals('Vercel')
for sig_type, results in signals.items():
print(f'{sig_type}: {len(results)} results')Paso 3: Analizar y extraer señales clave
Extraiga señales significativas de los resultados de búsqueda: montos de financiación, menciones tecnológicas e indicadores de contratación.
import re
def parse_signals(raw_signals: dict) -> dict:
parsed = {'funding': '', 'hiring': False, 'tech_stack': [], 'recent_news': ''}
# Funding
for r in raw_signals.get('funding', []):
text = f"{r['title']} {r['snippet']}"
amounts = re.findall(r'\$[\d.]+[MBK]', text)
if amounts:
parsed['funding'] = amounts[0]
break
# Hiring
for r in raw_signals.get('hiring', []):
text = f"{r['title']} {r['snippet']}".lower()
if any(w in text for w in ['hiring', 'open position', 'join our team', 'careers']):
parsed['hiring'] = True
break
# Tech stack
tech_keywords = ['react', 'python', 'node', 'aws', 'gcp', 'kubernetes', 'typescript', 'go', 'rust']
for r in raw_signals.get('tech_stack', []):
text = f"{r['title']} {r['snippet']}".lower()
for tech in tech_keywords:
if tech in text and tech not in parsed['tech_stack']:
parsed['tech_stack'].append(tech)
# News
if raw_signals.get('news'):
parsed['recent_news'] = raw_signals['news'][0].get('title', '')
return parsed
parsed = parse_signals(signals)
print(json.dumps(parsed, indent=2))Paso 4: Califique a cada cliente potencial
Asigne una puntuación de señal a cada cliente potencial en función de la riqueza de datos encontrados.
def score_prospect(parsed_signals: dict) -> int:
score = 0
if parsed_signals.get('funding'):
score += 3 # Strong buy signal
if parsed_signals.get('hiring'):
score += 2 # Growth signal
if len(parsed_signals.get('tech_stack', [])) >= 2:
score += 2 # Tech-aware prospect
if parsed_signals.get('recent_news'):
score += 1 # Active company
return score
def enrich_prospects(prospects: list) -> list:
enriched = []
for p in prospects:
signals = search_signals(p['company'])
parsed = parse_signals(signals)
score = score_prospect(parsed)
enriched.append({**p, **parsed, 'score': score})
print(f"{p['company']}: score={score}")
enriched.sort(key=lambda x: x['score'], reverse=True)
return enriched
enriched = enrich_prospects(prospects)
for e in enriched:
print(f" {e['company']}: score={e['score']}, funding={e.get('funding', 'N/A')}")Paso 5: Exportar CSV enriquecido
Escriba los datos enriquecidos del cliente potencial en un nuevo CSV listo para importar a su herramienta de divulgación.
def export_enriched(enriched: list, output_path: str = 'enriched_prospects.csv'):
if not enriched:
print('No prospects to export')
return
fieldnames = ['company', 'domain', 'email', 'score', 'funding', 'hiring', 'tech_stack', 'recent_news']
with open(output_path, 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames, extrasaction='ignore')
writer.writeheader()
for e in enriched:
row = {**e}
row['tech_stack'] = ', '.join(e.get('tech_stack', []))
writer.writerow(row)
print(f'Exported {len(enriched)} enriched prospects to {output_path}')
export_enriched(enriched)Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def enrich(company):
signals = {}
for q in [f'{company} funding 2026', f'{company} tech stack']:
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': q}).json()
signals[q] = [r.get('snippet', '')[:100] for r in data.get('organic_results', [])[:2]]
return signals
print(enrich('Vercel'))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function enrich(company) {
const signals = {};
for (const q of [`${company} funding 2026`, `${company} tech stack`]) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({platform: 'google', query: q})
});
signals[q] = ((await r.json()).organic_results || []).slice(0, 2).map(r => r.snippet?.slice(0, 100));
}
return signals;
}
enrich('Vercel').then(console.log);Salida esperada
An enriched prospect CSV with funding signals, hiring indicators, tech stack mentions, and recent news for each company, scored and sorted by signal strength.