Skip to content

Syntage · Background Checks (verificación de antecedentes)

Del webhook de Syntage a las tablas de verificación de antecedentes (cabecera, scores, archivos y estatus de bases consultadas). Streaming.

¿Llegaste hasta acá desde…?

Usa esta tabla para entrar en sentido inverso (lo que ves → de dónde sale):

Si ves… Eso sale de… La lógica está en…
Resultado de verificación de antecedentes solvento-data-prod.syntage.background_checks Ingesta; sin capa dbt — se consume el RAW directo
Scores por categoría solvento-data-prod.syntage.background_check_scores Ingesta; sin capa dbt — RAW directo
Estatus de bases consultadas / archivos del reporte syntage.background_check_database_statuses · syntage.background_check_files Ingesta; ver "Paso a paso"

Resumen

Campo Valor
Origen Webhook de Syntage (evento de background check)
Patrón Event-driven (Cloud Run → Pub/Sub → Cloud Run handler → Pub/Sub → Dataflow)
Tabla RAW solvento-data-prod.syntage.background_checks (+ background_check_scores, background_check_files, background_check_database_statuses)
Frecuencia Streaming
Criticidad 🟡 Media
Dueño Martin (data eng)
Repos webhook_syntage · api_syntage_handler · templates-dataflow

Diagrama de linaje

graph LR
    SYN[["📨 Syntage<br/>webhook background check"]]

    subgraph ing["Ingesta (sin lógica de negocio)"]
        CR["Cloud Run<br/>webhook-syntage-inline-prod"]
        T1(["Pub/Sub<br/>background-checks-webhook"])
        H["Cloud Run handler<br/>background-checks-api-syntage-requests-handler-prod"]
        T2(["Pub/Sub<br/>background-checks-api-syntage-success"])
        DF["Dataflow<br/>background-checks-prod-20260415-140726"]
        RAW[("solvento-data-prod.syntage<br/>background_checks · background_check_scores<br/>background_check_files · background_check_database_statuses")]
    end

    subgraph cons["Consumo"]
        AN["Riesgo / antecedentes<br/>(lee el RAW directo)"]
    end

    SYN -->|HTTP| CR --> T1 --> H --> T2 --> DF --> RAW
    RAW --> AN

    classDef src fill:#fde68a,stroke:#b45309,color:#000;
    classDef store fill:#bfdbfe,stroke:#1e40af,color:#000;
    classDef logic fill:#dcfce7,stroke:#15803d,color:#000;
    class SYN src;
    class RAW store;
    class AN logic;

Paso a paso

  1. Syntage emite un webhook con el resultado de una verificación de antecedentes.
  2. Cloud Run webhook-syntage-inline-prod (webhook_syntage) recibe todos los eventos de Syntage y hace fan-out; para background checks publica al topic background-checks-webhook (env BACKGROUND_CHECK_TOPIC). Es el componente más crítico del ecosistema.
  3. Cloud Run handler background-checks-api-syntage-requests-handler-prod (api_syntage_handler, CONTEXT=background-checks, cola background-checks-api-syntage-queue) pide el detalle a la API de Syntage y publica al topic background-checks-api-syntage-success.
  4. Dataflow background-checks-prod-20260415-140726 (templates-dataflow, carpeta background-checks) consume la suscripción de entrada (background-checks-webhook-sub / background-checks-api-syntage-success-sub, confirmar cuál usa el job actual) y escribe en streaming a las 4 tablas RAW de solvento-data-prod.syntage.

Nota: el prod.env de este template trae una DLQ llamada cp-dlq heredada del template de cartas porte; es un valor mal configurado, ignorar (no es la DLQ real de background checks).

Tablas que alimenta

Tabla Contenido Job que la carga
syntage.background_checks Cabecera del background check background-checks-prod-20260415-140726
syntage.background_check_scores Scores por categoría background-checks-prod-20260415-140726
syntage.background_check_files Archivos / reportes (p. ej. background_check_report.pdf) background-checks-prod-20260415-140726
syntage.background_check_database_statuses Estatus de búsqueda en cada base consultada background-checks-prod-20260415-140726

Nota: los nombres de las 3 tablas de detalle son singulares (background_check_*); solo la cabecera es plural (background_checks).

Consumo aguas abajo

  • Riesgo / análisis de antecedentes: este proceso no tiene transformación dbt downstream (por diseño). El consumo se hace directo sobre las tablas RAW en solvento-data-prod.syntage.

Si falla 🛠️

Impacto: si cae webhook-syntage-inline-prod se afecta todo Syntage (no solo background checks). Mitigante: Syntage reintenta los webhooks; recuperar el servicio suele bastar.

Síntoma Dónde mirar Acción
No llegan background checks nuevos Logs Cloud Run webhook-syntage-inline-prod y background-checks-api-syntage-requests-handler-prod Si fue un deploy → rollback; si es saturación → subir instancias/memoria. Syntage reintenta
Llega al handler pero no a RAW Dataflow background-checks-prod-…: watermark y backlog de la suscripción de entrada Transitorios se recuperan solos; relanzar consumiendo la misma suscripción. Si hay duda, escalar
Faltan algunas tablas pero otras cargan Logs del Dataflow (multi-schema) Revisar el esquema de la tabla afectada en templates-dataflow/background-checks

Escalación: lógica SQL / Metabase → Diego · Airbyte → Gero · resto (webhook, handler, Dataflow) → Martin.

Enlaces


Última actualización: 2026-06-21 · Confirmado: sin downstream dbt; la DLQ cp-dlq del template es un valor mal configurado a ignorar.