Resumen
Puntúa cada negocio candidato contra resultados en vivo de Google antes de que entre en tu secuencia de correos, para gastar entregabilidad y tasa de respuesta solo en leads que sean reales y estén activos. Un montaje típico de cold email inscribe cada fila scrapeada y luego se pregunta por qué suben los rebotes; añadir una compuerta de cualificación al inicio arregla la entrada en lugar de la salida. Para ser claros con el alcance: esto cualifica leads (si el negocio es real, activo, localizable). No se ocupa de la entregabilidad. SPF, DKIM, DMARC y el calentamiento son una capa aparte y siguen siendo obligatorios. Cada búsqueda en Google cuesta 1-2 créditos en Scavio ($0.005/crédito).
Desencadenador
Un nuevo lote de negocios candidatos (nombres más ciudad, o dominios en bruto) aterriza en tu lista.
Programación
En cada nuevo lote de leads (o cada noche contra una importación continua).
Pasos del flujo de trabajo
Busca cada negocio en Google
Consulta el nombre del negocio más la ciudad en el endpoint de Google. Un negocio real y activo hace aflorar su propio sitio, una presencia en el mapa y menciones recientes; uno muerto o falso devuelve resultados pobres o que no encajan.
Puntúa las señales
Otorga puntos por un dominio propio en los resultados, una presencia en el knowledge graph o el mapa, menciones que parezcan recientes y reseñas. Resta por resultados que solo salen en directorios o por un nombre que resuelve a otra empresa.
Descarta o baja de prioridad las puntuaciones bajas
Fija un umbral (por ejemplo, conserva solo los leads que puntúen 3 de 5). Manda el resto a una lista en espera en lugar de a la secuencia; no pagues con tu reputación de envío por leads que van a rebotar o a ignorarte.
Inscribe solo los leads cualificados
Pasa los supervivientes a tu herramienta de envío con los campos enriquecidos (dominio verificado, categoría, un gancho de personalización sacado del SERP). Ahora la secuencia corre sobre leads que vale la pena contactar.
Implementacion en Python
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
DIRECTORY_DOMAINS = {"yelp.com", "yellowpages.com", "facebook.com", "linkedin.com"}
def qualify(name, city):
q = f"{name} {city}"
data = requests.post("https://api.scavio.dev/api/v1/google", headers=H,
json={"query": q, "light_request": False}).json()
organic = data.get("organic_results", [])
score = 0
owned = next((o for o in organic[:5]
if not any(d in o["link"] for d in DIRECTORY_DOMAINS)), None)
if owned: score += 2 # has its own site
if data.get("knowledge_graph"): score += 2 # map / brand presence
if len(organic) >= 5: score += 1 # findable at all
hook = owned["title"] if owned else None
return {"name": name, "score": score, "domain": owned["link"] if owned else None, "hook": hook}
batch = [("Cedar Park Dental", "Austin TX"), ("No Such Cafe", "Nowhere")]
qualified = [r for r in (qualify(n, c) for n, c in batch) if r["score"] >= 3]
print(qualified)Implementacion en JavaScript
const H = { Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`, "Content-Type": "application/json" };
const DIRECTORY = ["yelp.com", "yellowpages.com", "facebook.com", "linkedin.com"];
async function qualify(name, city) {
const r = await fetch("https://api.scavio.dev/api/v1/google", {
method: "POST", headers: H,
body: JSON.stringify({ query: `${name} ${city}`, light_request: false }),
});
const data = await r.json();
const organic = data.organic_results ?? [];
const owned = organic.slice(0, 5).find((o) => !DIRECTORY.some((d) => o.link.includes(d)));
let score = 0;
if (owned) score += 2;
if (data.knowledge_graph) score += 2;
if (organic.length >= 5) score += 1;
return { name, score, domain: owned?.link ?? null };
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit