Casestudy over AI-SaaS

TextGPT + IQR.Codes

Een platform dat een PDF — inclusief de scans waarin niemand kan zoeken — omzet in iets waar mensen vragen over kunnen stellen, via webchat, via sms of door de camera van hun telefoon te richten op een QR-code die is afgedrukt op het voorwerp waarover ze vragen stellen.

  • IndustrieAI knowledge and support SaaS
  • KlantModezilla LLC, USA
  • OpvragenUnder a second at p95
  • DienstenProduct Design, Development, AI
TextGPT + IQR.Codes: AI-kennisplatform

Overzicht

TextGPT + IQR.Codes zijn twee producten in één pijplijn, ontwikkeld voor Modezilla LLC. TextGPT is de persoonlijke kant: upload een document, kies een persona en stel vragen. IQR.Codes is de zakelijke kant, waar een bedrijf zijn handleidingen en beleidsregels uploadt, een QR-code afdrukt en elke klant die deze scant een gesprek start waarin de antwoorden al bekend zijn.

Het proces erachter is in beide gevallen hetzelfde: uploaden, OCR, in stukken verdelen, insluiten, ophalen, beantwoorden met bronvermeldingen. Wat het lastig maakte, is de staat waarin een PDF daadwerkelijk binnenkomt. Een schone digitale export is een opgelost probleem; een foto van een pagina uit een vijftien jaar oude handleiding is dat niet, en dat zijn juist de documenten waar bedrijven in de praktijk mee te maken hebben.

De rest van de architectuur vloeit voort uit twee vereisten die al vóór de eerste regel waren vastgelegd: een antwoord moet binnen een seconde worden teruggestuurd, en geen enkele organisatie mag ooit de documenten van een andere organisatie inzien. De tweede vereiste wordt in Postgres afgedwongen door beveiliging op rijniveau, in plaats van dat de applicatie zelf moet zorgen voor het filteren.

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

Projectvideo

textgpt + iqr.codesUpload een PDF. Ontvang een chatbot.

Een stapsgewijze uitleg over TextGPT en IQR.Codes: van het uploaden van een PDF naar het dashboard tot het moment waarop een klant een afgedrukte code scant en het antwoord via een sms ontvangt.

Belangrijkste functies

  • PDF-import met OCR

    Documenten worden in hun oorspronkelijke vorm ingevoerd, inclusief scans. Voordat er iets bij de parser terechtkomt, worden er een OCR-bewerking en een opschoningsstap uitgevoerd, zodat een gefotografeerde pagina doorzoekbaar wordt in plaats van te worden overgeslagen.

  • Antwoorden met bronvermeldingen

    Een chatfunctie die is uitgebreid met informatieopvraging, waarbij antwoorden worden gegeven op basis van de geüploade documenten en wordt aangegeven uit welk document het antwoord afkomstig is, in plaats van op basis van wat het model al dacht te weten.

  • QR- en SMS-kanalen

    Als de code wordt gescand, wordt een webchat met het merk of een sms-gesprek geopend. Er hoeft niets te worden geïnstalleerd en er hoeft geen account te worden aangemaakt; via sms bewaart de klant het gespreksverloop in zijn of haar berichten.

  • Standaard multi-tenant

    Elke rij en elk bestand wordt binnen Postgres zelf aan een organisatie gekoppeld, via beveiliging op rijniveau en ondertekende URL’s, in plaats van via een filter op applicatieniveau.

  • Abonnementen en facturering

    De Stripe-abonnementsniveaus bepalen welke kanalen een account krijgt en in welke mate deze mogen worden gebruikt, met een klantenportaal voor alle zaken na de eerste betaling.

De uitdaging

Het antwoord staat in de handleiding. De handleiding is een scan. De scan is niet doorzoekbaar, en niemand gaat veertig pagina’s doorlezen om één regel te vinden.

Bedrijven zaten op documenten die al alle antwoorden bevatten waar hun klanten om vroegen — producthandleidingen, beleidsregels, specificatiebladen, retourvoorwaarden — in een formaat waarin niemand zoekopdrachten kon uitvoeren. Wanneer die documenten foto’s van pagina’s waren in plaats van digitale bestanden, leverde zelfs een zoekopdracht in platte tekst geen resultaten op. De tijdelijke oplossing was een supportwachtrij: iemand die de hele dag dezelfde PDF opnieuw las en dezelfde alinea opnieuw intypte, terwijl een klant daarop moest wachten.

  • Documenten die niet doorzoekbaar zijn

    De kennis was wel degelijk aanwezig, in PDF-bestanden — en het ergste was dat het vaak afbeeldingen van pagina’s betrof, waarbij zelfs een tekstzoekopdracht geen resultaten opleverde.

  • Wrijving bij de voordeur

    Alles waarbij de klant werd gevraagd een app te installeren of een account aan te maken, zorgde ervoor dat ze afhaakten nog voordat de vraag überhaupt was gesteld.

  • Kosten en isolatie op grote schaal

    Het systeem moest snel en goedkoop blijven, ook bij miljoenen documenten, en tegelijkertijd garanderen dat geen enkele organisatie de documenten van een andere organisatie kon inzien.

Onze oplossing

Eén proces: uploaden, OCR, in stukken verdelen, insluiten, beantwoorden.

Elk document volgt hetzelfde traject. Het wordt geüpload, indien nodig door OCR verwerkt, in stukken opgedeeld, ingebed en samen met de bijbehorende vectoren opgeslagen in Postgres. Een vraag wordt op dezelfde manier ingebed en beantwoord op basis van de teruggekoppelde informatie, waarbij de bron wordt vermeld. Bovenop die ene pijplijn zitten twee producten — TextGPT voor een persoon met een document, IQR.Codes voor een bedrijf waarvan de klanten de vragen hebben — en twee manieren om toegang te krijgen: webchat en sms, die beide bereikbaar zijn via een code die op de verpakking is afgedrukt.

Een end-to-end-pijplijn

Uploaden, OCR, in stukken verdelen, insluiten, ophalen, beantwoorden met bronvermeldingen — met herpogingen en kwaliteitscontroles bij de stappen die mislukken door onjuiste invoer, in plaats van aan het einde.

Twee producten, één motor

TextGPT voor persoonlijk gebruik en IQR.Codes voor zakelijk gebruik, waarbij de invoer- en opvraaglaag wordt gedeeld in plaats van dat elk systeem zijn eigen exemplaar daarvan heeft.

Veilig en serverloos

Supabase met beveiliging op rijniveau en pgvector, op serverloze functies van Vercel. Dankzij beleidsregels met een beperkt toepassingsgebied en ondertekende URL’s is isolatie een inherent kenmerk van de database.

Hoe het werkt

TextGPT — een document en een persona

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.

Het TextGPT-chatvenster met de persona ‘Dokter’ actief, waarin een gesprek te zien is waarin de assistent de persona’s opsomt waarnaar hij kan overschakelen: financieel adviseur, chef-kok, reisgids, bijlesdocent, coach en dokter.

IQR.Codes voor bedrijven

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.

Het IQR.Codes-dashboard: bovenaan een gedeeld gratis telefoonnummer, het accountsaldo en het huidige abonnement, en een formulier ‘Nieuw product aanmaken’ met een drag-and-drop-gebied voor een PDF naast velden voor de productnaam, de beschrijving en een optionele systeemmelding.

Beheer van QR-codes

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.

De tabel ‘Producten en QR-codes’, waarin drie producten worden weergegeven met hun aanmaakdatum, de status ‘Klaar’ bij elk product, en QR-codes en bewerkingsacties in elke rij.

Eén inbox voor elk kanaal

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.

Het scherm ‘Berichtenlogboeken’, waarop tien berichten van het webkanaal worden weergegeven met hun tekst, tijdstempel, type (verzonden of ontvangen) en bezorgstatus, gepagineerd als één tot en met tien van zestien.

Plannen, en wat iedereen koopt

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.

Het scherm ‘Kies uw abonnement’, waarop IQR Flash voor twintig dollar per maand, IQR Pro voor veertig dollar en Enterprise voor honderd dollar met elkaar worden vergeleken, boven een functietabel met onder meer webchat via een QR-code, QR-naar-SMS, gedeelde en exclusieve gratis nummers en AI-gestuurde routering.

Impact & resultaten

Snel genoeg om te reageren, streng genoeg om te vertrouwen.

Het platform leverde prestaties op basis van concrete cijfers in plaats van impressies: hoe lang het duurt voordat een document doorzoekbaar wordt, hoe lang het duurt voordat een antwoord wordt teruggegeven, hoeveel van een slechte scan de OCR-verwerking overleeft, en in hoeverre de gegevens van de ene organisatie toegankelijk zijn voor een andere organisatie.

End-to-end-invoer van een PDF-bestand van 10 MB
Vectoropvraging (p. 95)
OCR-nauwkeurigheid bij scans
Gegevensisolatie bij multi-tenant-opstellingen

Wat er op te lossen viel

Tekst extraheren uit PDF-bestanden die op afbeeldingen zijn gebaseerd

Solution: Er vindt een OCR-voorbewerkingsstap plaats, gevolgd door een heuristische opschoningsronde, voordat er iets de LLM-parser bereikt, met daarachter herhalingspogingen en kwaliteitscontroles. Dankzij die combinatie is de nauwkeurigheid bij moeilijke scans van lage kwaliteit verbeterd van onbruikbaar naar betrouwbaar.

Zoekresultaten binnen een fractie van een seconde op grote schaal

Solution: Geoptimaliseerde pgvector-indexen, batchgewijze schrijfbewerkingen en cosinus-gelijkenisberekeningen op basis van gefilterde bereiken in plaats van het volledige corpus — met lichtgewicht metadata-caching voor de terugkerende zoekopdrachten.

Strikte isolatie tussen verschillende tenants

Solution: Een door RLS afgedwongen schema met scheiding tussen services en rollen, en Supabase Storage dat alleen toegankelijk is via ondertekende URL’s binnen het kader van specifieke beleidsregels. Organisatiegegevens worden gescheiden door de database, niet door de code waarmee ze worden opgevraagd.

Vragen

Het platform is van begin tot eind met trots ontworpen, ontwikkeld en beheerd door het deskundige team van CodeMyPixel voor onze klant, Modezilla LLC (VS).

Heb je documenten die niemand kan doorzoeken?

Laten we er antwoorden van maken.