Caso práctico de IA como servicio (SaaS)

TextGPT + IQR.Codes

Una plataforma que convierte un PDF —incluidos los escaneos en los que nadie puede realizar búsquedas— en algo sobre lo que la gente puede hacer preguntas, ya sea a través de un chat web, por SMS o apuntando con la cámara del móvil a un código QR impreso en el documento sobre el que están preguntando.

  • SectorAI knowledge and support SaaS
  • ClienteModezilla LLC, USA
  • RecuperaciónUnder a second at p95
  • ServiciosProduct Design, Development, AI
TextGPT + IQR.Codes: Plataforma de conocimiento basada en IA

Resumen

TextGPT + IQR.Codes son dos productos integrados en un mismo flujo de trabajo, desarrollados para Modezilla LLC. TextGPT es la parte destinada al usuario: sube un documento, elige un perfil y hazle preguntas. IQR.Codes es la parte empresarial, en la que una empresa sube sus manuales y políticas, imprime un código QR y cada cliente que lo escanea inicia una conversación en la que ya se conocen las respuestas.

El proceso subyacente es el mismo en ambos casos: carga, OCR, segmentación, incrustación, recuperación y respuesta con referencias. Lo que lo complicaba era el estado en el que llegaba realmente el PDF. Una exportación digital limpia es un problema resuelto; una fotografía de una página de un manual de hace quince años no lo es, y esos son precisamente los documentos con los que cuentan las empresas.

El resto de la arquitectura se deriva de dos requisitos que se establecieron antes de escribir la primera línea de código: una respuesta debe recibirse en menos de un segundo y ninguna organización debe poder ver nunca los documentos de otra. El segundo requisito se garantiza en Postgres mediante la seguridad a nivel de fila, en lugar de que sea la aplicación la que se encargue de aplicar los filtros.

  • Next.js 14
  • React 18
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Supabase
  • Postgres & pgvector
  • Vercel Serverless
  • Mistral AI
  • OpenAI Embeddings
  • Stripe Payments
  • Telnyx SMS

Vídeo del proyecto

textgpt + iqr.codesSube un PDF. Consigue un chatbot.

Una guía paso a paso sobre TextGPT e IQR.Codes, desde que se carga un PDF en el panel de control hasta que un cliente escanea un código impreso y recibe la respuesta en forma de mensaje de texto.

Capacidades clave

  • Importación de archivos PDF con OCR

    Los documentos se introducen tal y como están, incluidos los escaneados. Antes de que nada llegue al analizador sintáctico, se realiza un proceso de OCR y una fase de limpieza, por lo que una página fotografiada pasa a ser consultable en lugar de ser omitida.

  • Respuestas con referencias

    Un chat mejorado con funciones de búsqueda que responde basándose en los documentos subidos y muestra de cuál de ellos procede la respuesta, en lugar de basarse en lo que el modelo ya creía.

  • Canales QR y SMS

    Al escanear un código, se abre un chat web de la marca o una conversación por mensaje de texto. No hay que instalar nada ni crear ninguna cuenta, y, al utilizar SMS, el cliente conserva el hilo de la conversación en sus mensajes.

  • Multitenant por defecto

    Cada fila y cada archivo están limitados al ámbito de una organización en el propio Postgres, mediante la seguridad a nivel de fila y las URL firmadas, en lugar de un filtro en la capa de aplicación.

  • Suscripciones y facturación

    Los niveles de Stripe determinan a qué canales tiene acceso una cuenta y en qué medida puede utilizarlos, y ofrecen un portal de cliente para gestionar todo a partir del primer pago.

El reto

La respuesta está en el manual. El manual es un escaneo. El escaneo no permite realizar búsquedas, y nadie va a leer cuarenta páginas para encontrar una sola línea.

Las empresas disponían de documentos que ya contenían todas las respuestas que sus clientes solicitaban —manuales de productos, políticas, fichas técnicas, condiciones de devolución— en un formato en el que nadie podía realizar búsquedas. Cuando esos documentos eran fotografías de páginas en lugar de archivos digitales, ni siquiera una búsqueda de texto sin formato arrojaba ningún resultado. La solución provisional era una cola de atención al cliente: alguien se pasaba todo el día releyendo el mismo PDF y volviendo a escribir el mismo párrafo, mientras el cliente esperaba.

  • Documentos no indexables

    La información ya existía, en archivos PDF, y lo peor era que se trataba de imágenes de páginas, en las que ni siquiera la búsqueda de texto daba ningún resultado.

  • Tensiones en la puerta principal

    Cualquier cosa que pidiera al cliente que instalara una aplicación o creara una cuenta lo hacía perder de vista antes incluso de que se le planteara la pregunta.

  • Coste y aislamiento a gran escala

    El sistema debía seguir siendo rápido y económico al gestionar millones de documentos, al tiempo que garantizaba que ninguna organización pudiera leer los de otra.

Nuestra solución

Un único proceso: carga, OCR, división en fragmentos, incrustación, respuesta.

Todos los documentos siguen el mismo proceso. Se suben, se someten a OCR cuando es necesario, se dividen en fragmentos, se incorporan y se almacenan junto con sus vectores en Postgres. Las preguntas se incorporan de la misma manera y se responden a partir de los resultados obtenidos, citando la fuente. Sobre ese único proceso se asientan dos productos —TextGPT, para una persona con un documento, e IQR.Codes, para una empresa cuyos clientes tienen las preguntas— y dos vías de acceso: el chat web y los SMS, a los que se puede acceder a través de un código impreso en el embalaje.

Un proceso integral

Subir, OCR, dividir en fragmentos, incrustar, recuperar, responder con referencias — con reintentos y controles de calidad en los pasos en los que se producen errores debido a datos incorrectos, en lugar de al final del proceso.

Dos productos, un motor

TextGPT para uso personal e IQR.Codes para empresas, compartiendo la capa de ingesta y recuperación en lugar de que cada uno tenga su propia copia.

Seguro y sin servidor

Supabase con seguridad a nivel de fila y pgvector, en las funciones sin servidor de Vercel. Las políticas con ámbito limitado y las URL firmadas hacen que el aislamiento sea una característica intrínseca de la base de datos.

Cómo funciona

TextGPT: un documento y un personaje

The personal side of the platform: a chat window over whatever has been uploaded, with a persona that sets how the answers come back. The badge under the title is the one currently answering, and switching it is a sentence in the conversation rather than a trip to a settings page.

La ventana de chat de TextGPT con el personaje del «Doctor» activo, en la que se muestra una conversación en la que el asistente enumera los personajes a los que puede cambiar: asesor financiero, chef, guía de viajes, tutor, entrenador y médico.

IQR.Códigos para empresas

A team creates a product, drops in the PDF documentation, and optionally writes a system prompt that steers how the assistant answers about that one product. What comes out is a secure knowledge base and a QR code pointing at it — branded SMS or web chat, no support ticket in between.

El panel de control de IQR.Codes: un número gratuito compartido, el saldo de la cuenta y el plan actual en la parte superior, y un formulario para «Crear un nuevo producto» con un área de «arrastrar y soltar» para un PDF junto a los campos de nombre del producto, descripción y una indicación opcional del sistema.

Gestión de códigos QR

Every product has its own row, with codes to view, edit and download. That download is what actually gets printed — on packaging, on an event flyer, on a sticker beside the machine — so the customer with the question is one camera scan away from the answer.

La tabla «Productos y códigos QR», en la que aparecen tres productos con sus fechas de creación, el estado «Listo» en cada uno de ellos, así como códigos QR y la acción «Editar» en cada fila.

Una bandeja de entrada para cada canal

Web chat and SMS land in the same log, with the message, the time, the direction and the delivery status on a single line. It is what turns the chatbot from something a business hopes is working into something it can audit — and what shows which questions customers keep asking.

La pantalla «Registros de mensajes», que muestra diez mensajes del canal web con su texto, marca de tiempo, tipo (enviados o recibidos) y estado de entrega, paginados del uno al diez de un total de dieciséis.

Planes y lo que incluye cada uno

Three Stripe tiers, where the feature matrix is the product decision made visible. The entry plan is web chat reached from a printed code, the middle one adds SMS on a shared toll-free number, and the top one is a dedicated line for a brand that wants the number to be its own.

La pantalla «Elige tu plan», en la que se comparan los planes IQR Flash (a veinte dólares al mes), IQR Pro (a cuarenta) y Enterprise (a cien), aparece encima de una tabla de características que incluye el chat web a través de un código QR, la conversión de códigos QR a SMS, números gratuitos compartidos y exclusivos, y el enrutamiento basado en inteligencia artificial.

Impacto y resultados

Lo suficientemente rápido como para responder, lo suficientemente riguroso como para inspirar confianza.

La plataforma se basaba en cifras concretas, en lugar de en impresiones: el tiempo que tarda un documento en poder consultarse, el tiempo que tarda en aparecer una respuesta, qué porcentaje de un escaneo de mala calidad se conserva tras el OCR y a qué parte de los datos de una organización puede acceder otra.

Ingestión de principio a fin de un PDF de 10 MB
Recuperación de vectores (p. 95)
Precisión del OCR en los escaneos
Aislamiento de datos en entornos multicliente

Lo que había que resolver

Extracción de texto de archivos PDF basados en imágenes

Solution: Antes de que cualquier dato llegue al analizador sintáctico del LLM, se lleva a cabo una etapa de preprocesamiento mediante OCR y una ronda de limpieza heurística, con reintentos y controles de calidad posteriores. Esa combinación es lo que ha permitido que la precisión en escaneos difíciles y de baja calidad haya pasado de ser inaceptable a fiable.

Búsqueda en menos de un segundo a gran escala

Solution: Índices pgvector optimizados, escrituras por lotes y similitud coseno sobre ámbitos filtrados en lugar de sobre todo el corpus, con un almacenamiento en caché ligero de metadatos para las consultas que se repiten.

Aislamiento estricto entre inquilinos

Solution: Un esquema impuesto por RLS con segregación de roles de servicio, y Supabase Storage al que solo se puede acceder a través de URL firmadas bajo políticas de ámbito limitado. Los datos de la organización están separados por la base de datos, no por el código que los consulta.

Preguntas

La plataforma ha sido diseñada, desarrollada y gestionada de principio a fin con gran orgullo por el equipo de expertos de CodeMyPixel para nuestro cliente, Modezilla LLC (EE. UU.).

¿Tienes documentos que nadie puede buscar?

Convirtámoslas en respuestas.