Caso di studio sull'AI SaaS

TextGPT + IQR.Codes

Una piattaforma che trasforma un PDF — comprese le scansioni che nessuno può cercare — in qualcosa su cui le persone possono porre domande, tramite chat online, SMS o puntando la fotocamera del telefono su un codice QR stampato sul documento oggetto della domanda.

  • SettoreAI knowledge and support SaaS
  • ClienteModezilla LLC, USA
  • RecuperoUnder a second at p95
  • ServiziProduct Design, Development, AI
TextGPT + IQR.Codes: piattaforma di conoscenza basata sull'intelligenza artificiale

Panoramica

TextGPT + IQR.Codes sono due prodotti integrati in un’unica piattaforma, realizzati per Modezilla LLC. TextGPT rappresenta il lato personale: basta caricare un documento, scegliere un personaggio e porgli delle domande. IQR.Codes è la parte dedicata alle aziende: un’azienda carica i propri manuali e le proprie politiche, stampa un codice QR e ogni cliente che lo scansiona avvia una conversazione in cui le risposte sono già pronte.

Il flusso di lavoro sottostante è lo stesso in entrambi i casi: caricamento, OCR, suddivisione in blocchi, incorporamento, recupero, risposta con riferimenti bibliografici. Ciò che ha reso il tutto difficile è lo stato in cui si presenta effettivamente un PDF. Un’esportazione digitale pulita è un problema risolto; una fotografia di una pagina tratta da un manuale vecchio di quindici anni non lo è, e sono proprio questi i documenti di cui dispongono effettivamente le aziende.

Il resto dell'architettura deriva da due requisiti stabiliti prima ancora di scrivere la prima riga di codice: una risposta deve essere restituita in meno di un secondo e nessuna organizzazione deve mai poter visualizzare i documenti di un'altra. Il secondo requisito viene garantito in Postgres tramite la sicurezza a livello di riga, anziché affidandosi all'applicazione che si ricordi di applicare i filtri.

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

Video del progetto

textgpt + iqr.codesCarica un PDF. Ottieni un chatbot.

Una guida passo passo a TextGPT e IQR.Codes, dall’inserimento di un PDF nella dashboard fino alla scansione di un codice stampato da parte del cliente e alla ricezione della risposta tramite SMS.

Funzionalità chiave

  • Acquisizione di file PDF con OCR

    I documenti vengono inseriti così come sono, scansioni incluse. Prima che qualsiasi dato raggiunga il parser, vengono eseguiti un processo di OCR e una fase di pulizia, in modo che una pagina fotografata diventi ricercabile anziché essere ignorata.

  • Risposte con riferimenti bibliografici

    Una chat potenziata dalla ricerca che fornisce risposte attingendo dai documenti caricati e indica da quale di essi proviene la risposta, anziché basarsi su ciò che il modello già riteneva vero.

  • Canali QR e SMS

    Scansionando un codice si apre una chat web con il marchio dell'azienda o una conversazione via SMS. Non occorre installare nulla né creare un account e, grazie agli SMS, il cliente conserva la conversazione nella propria rubrica.

  • Multi-tenant per impostazione predefinita

    Ogni riga e ogni file sono limitati a un'organizzazione all'interno dello stesso Postgres, tramite la sicurezza a livello di riga e gli URL firmati, anziché tramite un filtro a livello di applicazione.

  • Abbonamenti e fatturazione

    I livelli di Stripe determinano quali canali sono disponibili per un account e in che misura è possibile utilizzarli, con un portale clienti a disposizione per tutte le operazioni successive al primo pagamento.

La sfida

La risposta si trova nel manuale. Il manuale è una scansione. La scansione non è ricercabile e nessuno si metterà a leggere quaranta pagine per trovare una sola riga.

Le aziende disponevano di documenti che contenevano già tutte le risposte richieste dai propri clienti — manuali dei prodotti, politiche aziendali, schede tecniche, condizioni di reso — in un formato che non consentiva alcuna ricerca. Laddove tali documenti erano costituiti da fotografie delle pagine anziché da file digitali, persino una ricerca nel testo semplice non restituiva alcun risultato. La soluzione provvisoria era una coda di assistenza: qualcuno che rileggesse lo stesso PDF e riscrivesse lo stesso paragrafo, tutto il giorno, mentre il cliente aspettava.

  • Documenti non ricercabili

    Le informazioni c'erano, in formato PDF — e le peggiori erano immagini di pagine, in cui persino la ricerca testuale non restituiva alcun risultato.

  • Attrito alla porta d’ingresso

    Qualsiasi richiesta che chiedesse al cliente di installare un’app o di creare un account lo faceva perdere prima ancora che gli venisse posta la domanda.

  • Costi e isolamento su larga scala

    Il sistema doveva rimanere veloce ed economico anche con milioni di documenti, garantendo al contempo che nessuna organizzazione potesse leggere quelli di un’altra.

La nostra soluzione

Un unico flusso di lavoro: caricamento, OCR, suddivisione in blocchi, incorporamento, risposta.

Ogni documento segue lo stesso percorso. Viene caricato, sottoposto a OCR se necessario, suddiviso in blocchi, incorporato e archiviato insieme ai relativi vettori in Postgres. Anche una domanda viene incorporata allo stesso modo e riceve risposta in base ai risultati ottenuti, con citazione della fonte. Su questa unica pipeline si basano due prodotti — TextGPT per chi ha un documento, IQR.Codes per le aziende i cui clienti hanno delle domande — e due modalità di accesso, chat web e SMS, entrambe raggiungibili tramite un codice stampato sulla confezione.

Una pipeline end-to-end

Caricamento, OCR, suddivisione in blocchi, incorporamento, recupero, risposta con riferimenti bibliografici — con tentativi ripetuti e controlli di qualità nelle fasi in cui si verificano errori a causa di input errati, anziché alla fine del processo.

Due prodotti, un unico motore

TextGPT per uso personale e IQR.Codes per uso aziendale, condividendo il livello di acquisizione e recupero dei dati invece che gestirne ciascuno una propria copia.

Sicuro e senza server

Supabase con sicurezza a livello di riga e pgvector, su Vercel Serverless Functions. Le politiche con ambito limitato e gli URL firmati rendono l'isolamento una proprietà intrinseca del database.

Come funziona

TextGPT — un documento e un personaggio

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 finestra di chat di TextGPT con il personaggio del "Dottore" attivo, che mostra una conversazione in cui l'assistente elenca i personaggi tra cui può passare: consulente finanziario, chef, guida turistica, tutor, coach e medico.

IQR.Codici per le aziende

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.

La dashboard di IQR.Codes: in alto, un numero verde condiviso, il saldo dell'account e il piano attuale; in basso, un modulo "Crea nuovo prodotto" con un'area "trascina e rilascia" per un file PDF accanto ai campi relativi al nome del prodotto, alla descrizione e a un messaggio di sistema facoltativo.

Gestione dei codici 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 tabella “Prodotti e codici QR”, che elenca tre prodotti con le rispettive date di creazione, lo stato “Pronto” per ciascuno di essi, i codici QR e le azioni di modifica in ogni riga.

Un'unica casella di posta per ogni canale

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 schermata "Registri dei messaggi", che mostra dieci messaggi del canale web con il relativo testo, la data e l'ora, il tipo (inviato o ricevuto) e lo stato di consegna, impaginati da uno a dieci su sedici.

I piani e cosa prevede ciascuno di essi

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 schermata "Scegli il tuo piano", che mette a confronto IQR Flash a venti dollari al mese, IQR Pro a quaranta e Enterprise a cento, sopra una tabella delle funzionalità che include la chat web tramite codice QR, la conversione da QR a SMS, numeri verdi condivisi e dedicati e l'instradamento basato sull'intelligenza artificiale.

Impatto e risultati

Abbastanza veloce da rispondere, abbastanza rigoroso da ispirare fiducia.

La piattaforma è stata lanciata sulla base di dati numerici concreti piuttosto che di impressioni: quanto tempo impiega un documento a diventare ricercabile, quanto tempo occorre per ottenere una risposta, quale percentuale di una scansione di scarsa qualità viene riconosciuta dall’OCR e a quanti dati di un’organizzazione può accedere un’altra.

Acquisizione end-to-end di un PDF da 10 MB
Recupero vettoriale (pag. 95)
Precisione dell'OCR sulle scansioni
Isolamento dei dati in ambienti multi-tenant

Cosa c'era da risolvere

Estrazione di testo da PDF composti da immagini

Solution: Una fase di pre-elaborazione OCR e un ciclo di pulizia euristica prima che qualsiasi dato raggiunga il parser LLM, con tentativi ripetuti e controlli di qualità a valle. È proprio questa combinazione che ha permesso di portare l’accuratezza delle scansioni difficili e di bassa qualità da un livello inutilizzabile a uno affidabile.

Ricerca in meno di un secondo su larga scala

Solution: Indici pgvector ottimizzati, scritture in batch e similarità coseno su ambiti filtrati anziché sull’intero corpus — con una cache di metadati leggera a supporto delle query ricorrenti.

Rigoroso isolamento multi-tenant

Solution: Uno schema imposto da RLS con separazione tra servizi e ruoli, e Supabase Storage accessibile solo tramite URL firmati nell’ambito di politiche con ambito limitato. I dati aziendali sono separati dal database, non dal codice che li interroga.

Domande

La piattaforma è stata progettata, sviluppata e gestita con orgoglio dall’inizio alla fine dal team di esperti di CodeMyPixel per conto del nostro cliente, Modezilla LLC (USA).

Hai dei documenti che nessuno può consultare?

Trasformiamole in risposte.