SkipDocumentación Skipdocs
SpotBoletas

Extracción con IA e idempotencia

Cómo Skip deduplica boletas y qué campos extrae el modelo.

El envío de boletas dispara un paso de extracción con IA que saca datos estructurados del documento. Esta página cubre dos cosas que conviene saber: qué se extrae, y cómo Skip evita duplicados.

Qué extrae el modelo

Cuando envías una boleta (archivo o URL), Skip corre un modelo sobre el documento y extrae:

  • RUT del médico y del prestador
  • Fecha de atención
  • Códigos por ítem (código FONASA, código DAU)
  • Monto y cantidad por ítem
  • Monto total
  • Nombre del emisor

Los campos que envías en receipt_metadata (endpoint URL) o como form fields (endpoint archivo) se usan como pistas que anclan la extracción — Skip prefiere lo que enviaste si hay conflicto, y usa la extracción para llenar campos que no proveíste.

Idempotencia

Skip deduplica por (public_key, receipt_id). Si haces POST de la misma boleta dos veces con el mismo receipt_id:

  1. La primera procesa normal y crea un ChileanExpense.
  2. La segunda devuelve 200 OK con la misma processed_files, pero no crea fila duplicada ni dispara notificaciones.

Esto significa retries seguros. Si tu red falla a mitad de request, puedes reintentar con el mismo receipt_id y el segundo call no afecta los datos.

Qué significa "processed_files" realmente

La respuesta processed_files lista los archivos que Skip aceptó. Un archivo puede estar en esta lista pero fallar la extracción downstream (ej. el modelo no puede leerlo). Esos fallos aparecen en colas internas de Skip y se notifican a tu account manager — no aparecen en la respuesta del endpoint.

Si necesitas garantía de que la boleta se extrajo bien, pide a Skip un webhook (trabajo Phase 8 — hoy los webhooks de status de extracción de Spot no son parte de la superficie pública).

On this page