Resumen
Cold campanas de email fail cuando you blast generic mensajes to unresearched dominios. Este flujo de trabajo toma un CSV of prospect dominios, searches Google for cada dominio to extraer company descripcion, tech stack senales, reciente news, y hiring patrones, analiza el resultados de busqueda en structured enriquecimiento campos, y exporta un enriquecido CSV listo for your correo electronico sequencer. Every prospect obtiene un relevance puntuacion so you puede priorizar high-fit leads. Scavio at $0.005 per search hace enriching 1,000 dominios cost solo $5.
Desencadenador
Nuevo prospect CSV uploaded
Programación
On CSV subir (event-driven)
Pasos del flujo de trabajo
Cargar prospect dominios
Analizar el uploaded CSV to extraer dominio names y cualquier existing firmographic datos.
Search cada dominio
For cada dominio, consulta Google for el company nombre y dominio. Extraer resultados organicos y AI Overview if disponible.
Analizar enriquecimiento senales
From resultados de busqueda, extraer: company descripcion, employee conteo senales, tech stack menciones, reciente funding o news.
Puntuacion y clasificar prospects
Compute un relevance puntuacion basado on tech stack match, company tamano, y recency of activity. Clasificar el lista.
Exportar enriquecido CSV
Escribir el enriquecido datos back to CSV con todos nuevo columnas. Ready for importar en your correo electronico sequencer.
Implementacion en Python
import requests, os, json, csv
from io import StringIO
H = {"x-api-key": os.environ["SCAVIO_API_KEY"]}
# Sample prospects (in production, load from CSV)
PROSPECTS = [
{"domain": "example-saas.com", "name": "Example SaaS"},
{"domain": "acme-ai.io", "name": "Acme AI"},
{"domain": "dataflow-labs.com", "name": "Dataflow Labs"},
]
def enrich_domain(prospect):
"""Search for a prospect domain and extract enrichment signals."""
r = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google",
"query": f"{prospect['name']} {prospect['domain']}",
"ai_overview": True}, timeout=10).json()
snippets = [o.get("snippet", "") for o in r.get("organic", [])[:5]]
titles = [o.get("title", "") for o in r.get("organic", [])[:5]]
aio = r.get("ai_overview", {})
all_text = " ".join(snippets + titles).lower()
# Simple signal extraction
signals = {
"has_funding_mention": any(w in all_text for w in ["raised", "funding", "series", "seed"]),
"has_hiring_signal": any(w in all_text for w in ["hiring", "careers", "open roles", "job"]),
"has_api_mention": "api" in all_text,
"result_count": len(r.get("organic", [])),
}
score = sum([
signals["has_funding_mention"] * 30,
signals["has_hiring_signal"] * 20,
signals["has_api_mention"] * 25,
min(signals["result_count"], 10) * 2.5,
])
return {
**prospect,
"description": snippets[0][:200] if snippets else "",
"ai_summary": aio.get("text", "")[:200] if aio else "",
"signals": signals,
"score": round(score)
}
enriched = []
for p in PROSPECTS:
result = enrich_domain(p)
enriched.append(result)
print(f"[{result['score']}] {result['name']} | {result['description'][:80]}")
enriched.sort(key=lambda x: x["score"], reverse=True)
print(f"\nEnriched {len(enriched)} prospects. Top: {enriched[0]['name']} (score: {enriched[0]['score']})")Implementacion en JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
const PROSPECTS = [
{domain: "example-saas.com", name: "Example SaaS"},
{domain: "acme-ai.io", name: "Acme AI"},
{domain: "dataflow-labs.com", name: "Dataflow Labs"},
];
async function enrichDomain(prospect) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({
platform: "google",
query: `${prospect.name} ${prospect.domain}`,
ai_overview: true
})
}).then(r => r.json());
const snippets = (r.organic || []).slice(0, 5).map(o => o.snippet || "");
const titles = (r.organic || []).slice(0, 5).map(o => o.title || "");
const allText = [...snippets, ...titles].join(" ").toLowerCase();
const aio = r.ai_overview || {};
const signals = {
hasFunding: ["raised", "funding", "series", "seed"].some(w => allText.includes(w)),
hasHiring: ["hiring", "careers", "open roles", "job"].some(w => allText.includes(w)),
hasApi: allText.includes("api"),
resultCount: (r.organic || []).length,
};
const score = Math.round(
(signals.hasFunding ? 30 : 0) + (signals.hasHiring ? 20 : 0) +
(signals.hasApi ? 25 : 0) + Math.min(signals.resultCount, 10) * 2.5
);
return {
...prospect, description: (snippets[0] || "").slice(0, 200),
aiSummary: (aio.text || "").slice(0, 200), signals, score
};
}
(async () => {
const enriched = [];
for (const p of PROSPECTS) {
const result = await enrichDomain(p);
enriched.push(result);
console.log(`[${result.score}] ${result.name} | ${result.description.slice(0, 80)}`);
}
enriched.sort((a, b) => b.score - a.score);
console.log(`\nEnriched ${enriched.length} prospects. Top: ${enriched[0].name} (score: ${enriched[0].score})`);
})();Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA