Mijn finance-app FinMan VHWorx leest energiemeters, tankbonnen en bankafschriften uit foto's en bestanden. Al deze functies draaien op vision/text LLM's via OpenRouter — en veel ervan op gratis modellen.
Gratis modellen zijn geweldig, behalve voor één ding: ze veranderen constant. Ze verschijnen, verdwijnen, worden hernoemd of stilletjes gedeactiveerd. Hardcodeer een model-id, en je functie sterft stilletjes op een willekeurige dinsdag.
Dus FinMan is gestopt met het behandelen van modellen als constanten. Modellen zijn gegevens:
- Een dagelijkse taak synchroniseert de live modellenlijst van OpenRouter. Nieuwe gratis visionmodellen worden automatisch toegevoegd; verdwenen modellen worden gedeactiveerd.
- Betaalde back-ups worden dagelijks hergeclassificeerd op prijs. De Gemini Flash-familie ondersteunt de gratis laag, de goedkoopste eerst — zodat een failover de rekening nooit verrast.
- Herkenning loopt de prioriteitenlijst. Als een model een fout heeft of verdwenen is, neemt de volgende het over. Eén dood model breekt nooit de foto van een gebruiker.
- De app upgrade zichzelf. Een aparte taak pin de topmodel van een openbare community leaderboard als prioriteit #1 — zodat teksttaken stilletjes verhuizen naar wat momenteel het beste is.
- Wijzigingen ping me op Telegram. Geen dashboards om te controleren.
Het resultaat na maanden in productie: ik heb sinds dien geen model-id aangeraakt. Elke golf van deprecatie ging onopgemerkt voorbij — door mij en door gebruikers.
Als je op LLM's bouwt (vooral gratis niveaus), is dit de meest impactvolle kleine verandering die ik ken: modellen als gegevens, niet constanten. Een tabel, een dagelijkse cron, een prioriteitenlijst. Dat is de hele truc.