Voor Resumetrics hebben wij het door hun ontwikkelde data model gebruikt om een krachtige API te bouwen. Het gebruiken van zulke code kan problemen opleveren om direct te integreren, daarom hebben we gekozen om het verwerken van API calls in stappen te verdelen.
Deze twee stappen draaien extern, wat ons in staat stelt om de server resources voor de specifieke taken te optimaliseren. In dit ontwerp ontstonden dan de volgende, losstaande componenten:
- OCR component
- LLM component
- API component
- Applicatie / dashboard component
Voor het OCR component is gekozen voor een integratie met Google Cloud Vision, deze integratie geeft ons de mogelijkheid om niet alleen OCR te implementeren, maar dit in een later stadium ook uit te breiden met meer herkenningstechieken.
Het API component is geschreven in PHP met Laravel Forge voor API authenticatie. PHP gaf ons de mogelijkheid om deze API snel te realiseren, en van alle tooling gebruik te maken om de meerdere componenten effectief te combineren.
API first en credits per verwerking
Doordat we bij Resumetrics voor een volledige API first aanpak hebben gekozen, is elke functionaliteit door de API beschikbaar. Alhoewel deze functionaliteiten ook in het dashboard (gemaakt met Laravel Livewire) gebruikt kunnen worden, gaat alles uiteindelijk via de API, aangezien deze ook door het dashboard gebruikt kan worden.
In dit unieke stuk software loop je ook tegen een uniek probleem aan; verwerkingen met AI zijn niet goedkoop, en alles wat een gebruiker doet kost server kracht (en daar mee geld) om uit te voeren. In de meeste gevallen zal je in dit soort situaties uit verschillende abonnementen kunnen kiezen met elk hun eigen limieten. Dit is in principe een goed model, maar niet heel flexibel waneer er bijvoorbeeld een enkele maand is met een piek aan verwerkingen. Ook is het lastig om voor verschillende operaties verschillende limieten te stellen, wat wel de wens was.
Om deze flexibiliteit wel te kunnen bieden hebben we voor Resumetrics een eigen "credit" systeem ontwikkeld. Dit systeem geeft de gebruiker een aantal credits aan het begin van elke betalingsperiode, en deze kunnen dan binnen deze periode gebruikt worden. Dit zorgt er voor dat de gebruiker altijd inzicht heeft in zijn gebruik, ten alle tijden extra credits in kan kopen, en dat er variabele tarieven gehandhaafd kunnen worden, op basis van de complexiteit van de operatie.
Betalingssysteem en oplevering
Voor Resumetrics was de "time to market" van het aller grootste belang. De AI wereld veranderd snel, en elke dag dat je product niet online staat is er 1 te lang. We hebben voor Resumetrics dit complete product dan ook kunnen opleveren in drie weken, van concept tot oplevering. Dit hebben we kunnen doen door onze robuuste basis voor dashboarding tools, en door voor betaling een integratie met Stripe te bouwen.