Resumen
Este flujo de trabajo enriquece quick-service restaurant franchise ubicacion datos semanal by querying Google for cada location's actual ratings, resena counts, y competitive context. It identifies underperforming ubicaciones (low ratings), expansion oportunidades (competidor gaps), y rastrea operator rendimiento tendencias. Designed for franchise desarrollo teams, suppliers, y consultants.
Desencadenador
Cron programar (cada Monday at 6 AM UTC)
Programación
Ejecuta cada Monday at 6:00 AM UTC
Pasos del flujo de trabajo
Cargar franchise ubicaciones
Leer el lista of franchise marca + zip code combinations to enriquecer.
Consulta Google local resultados
For cada ubicacion, consulta Scavio Google for el nombre de marca + zip code.
Extraer operator datos
Analizar ratings, resena counts, addresses, y competidor menciones de resultados.
Marcar rendimiento problemas
Identificar ubicaciones con ratings below 3.5 o significativo rating drops de anterior semana.
Generar territory informe
Salida enriquecido ubicacion datos con rendimiento flags y competitive density metricas.
Implementacion en Python
import requests
import json
from pathlib import Path
API_KEY = "your_scavio_api_key"
def enrich_qsr_operators(brand: str, zip_codes: list[str]) -> dict:
results = []
for zip_code in zip_codes:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": f"{brand} {zip_code}"},
timeout=15,
)
if not res.ok:
continue
organic = res.json().get("organic", [])
for r in organic[:5]:
results.append({
"brand": brand,
"zip": zip_code,
"name": r.get("title", ""),
"snippet": r.get("snippet", ""),
"link": r.get("link", ""),
})
print(f"Enriched {len(results)} {brand} locations across {len(zip_codes)} zip codes")
Path(f"qsr_{brand.lower().replace(' ', '_')}_enrichment.json").write_text(json.dumps(results, indent=2))
return {"brand": brand, "locations": len(results), "zip_codes": len(zip_codes)}
result = enrich_qsr_operators("Subway", ["75001", "75002", "75003", "75004", "75005"])
print(f"Enrichment complete: {result['locations']} locations")Implementacion en JavaScript
const API_KEY = "your_scavio_api_key";
async function enrichQSR(brand, zipCodes) {
const results = [];
for (const zip of zipCodes) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: `${brand} ${zip}` }),
});
if (!res.ok) continue;
for (const r of ((await res.json()).organic ?? []).slice(0, 5)) {
results.push({ brand, zip, name: r.title ?? "", link: r.link ?? "" });
}
}
console.log(`Enriched ${results.length} ${brand} locations`);
return results;
}
await enrichQSR("Subway", ["75001", "75002", "75003"]);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA