← Back to projects

AI-powered quote automation for tire shop

Platform that automates quotes for a tire shop by processing supplier PDFs and Excel files with AI. From minutes to seconds.

📅 2026 (en entrega) 🏢 Cliente freelance (sector automotriz)
React Node.js OpenAI API Claude API Tailwind CSS PostgreSQL

Contexto / Problema

Una llantera en Mérida recibía listas de precios de proveedores en PDF y Excel. Cada cotización requería buscar manualmente el precio correcto, hacer cálculos, y escribir el documento. Un proceso de 10–15 minutos por cotización en horas pico se convertía en un cuello de botella que afectaba directamente las ventas.

El cliente llevaba años intentando solucionar esto con hojas de cálculo cada vez más complejas. El problema raíz: los PDFs de cada proveedor tienen un formato completamente distinto, sin estándar, y cambian cada mes. Cualquier solución basada en parsing clásico requeriría mantenimiento continuo — un costo operativo que no tenía sentido para un negocio de este tamaño.

Decisiones técnicas

IA para extracción de documentos: Los PDFs y Excel de proveedores no tienen estructura consistente — cada proveedor usa su propio formato. Un modelo de lenguaje (OpenAI GPT-4 / Claude) puede entender el contexto y extraer datos correctamente incluso cuando el formato varía. Probé soluciones de parsing clásico (pdfminer, xlsx) pero fallaban demasiado con formatos irregulares del mercado automotriz mexicano.

Estrategia de modelo dual: Uso GPT-4 para la extracción inicial (mejor rendimiento con documentos irregulares) y Claude para la validación y corrección de inconsistencias (mejor razonamiento sobre contexto de precios). El costo por documento procesado quedó en menos de $0.02 USD, aceptable para el volumen del cliente.

PostgreSQL para el catálogo de productos: necesitaba búsqueda de texto completo y relaciones entre proveedores, productos, y precios históricos. La búsqueda fuzzy (pg_trgm) permite que el asesor escriba “llanta 195/65 r15” y encuentre el producto correcto incluso con variaciones en el formato de la medida.

Implementación destacada

Pipeline de extracción

  1. El usuario sube el PDF o Excel del proveedor
  2. El backend extrae el texto y lo envía al modelo con un prompt estructurado
  3. El modelo devuelve JSON con productos, precios y especificaciones
  4. El sistema valida el JSON contra el esquema de la base de datos y solicita confirmación si hay ambigüedades
  5. Los precios aprobados actualizan el catálogo con timestamp y registro del proveedor

El prompt de extracción evolucionó significativamente durante las pruebas. La versión final incluye ejemplos de las variaciones de formato más comunes encontradas en documentos reales del cliente — sin esos ejemplos, la tasa de error era 3 veces mayor.

Generación de cotización

Con el catálogo actualizado, el asesor selecciona vehículo + servicio + llanta, y el sistema genera el documento con precios actualizados, aplicando márgenes configurables por tipo de producto. El PDF generado incluye el logo del cliente, desglose de mano de obra e IVA, y un número de folio secuencial para trazabilidad.

Manejo de ambigüedades

El mismo producto aparece con nombres distintos según el proveedor (“P195/65R15” vs “195/65R15 P” vs “Llanta 195-65-15”). El sistema implementa normalización de medidas de neumáticos y un proceso de confirmación cuando la confianza del modelo está por debajo del 90%, evitando actualizaciones de precio incorrectas sin intervención humana.

Resultado / impacto

Proceso de cotización de 10–15 minutos reducido a menos de 1 minuto. El equipo puede atender más clientes en el mismo tiempo sin errores de precios. El cliente reportó aumento en cierres de venta durante horas pico porque los clientes ya no esperan la cotización mientras el asesor busca precios manualmente.

Desafíos técnicos

El mayor desafío fue la latencia. La primera versión enviaba documentos completos al modelo y esperaba la respuesta — tiempos de hasta 45 segundos. La solución fue procesar los documentos en chunks paralelos y mostrar resultados parciales mientras se procesa el resto, reduciendo el tiempo percibido a menos de 8 segundos.

Aprendizajes

El prompt engineering para extracción de datos estructurados requiere iteración real con documentos del cliente — no con documentos inventados. Las primeras versiones fallaban en edge cases que solo aparecen con datos reales. Establecí un proceso de mejora continua: por cada nuevo formato de proveedor que falla, agrego un ejemplo anonimizado al prompt y ejecuto la suite de pruebas completa antes de deployar.