Skip to content
PROSJEKT 02 / 11

Turboscore

Bruktbilassistent for Norge og Sverige. Søk på vanlig språk, oppklarende spørsmål og en 1–100-score bygd av publiserte komponenter.

→ Hver bil scoret 1–100 på tolv publiserte komponenter.

  • LLM
  • Søk
  • Evals
  • Offentlig produkt

Besøk live nettsted


Turboscore hjelper folk i Norge og Sverige med å finne bruktbil, i drift på turboscore.nobuns.com. Den henter annonser fra de største annonseportalene i begge land, gir hver bil en score fra 1 til 100, og lar deg søke slik du ville spurt en venn som kan biler. Grensesnittet finnes på norsk, svensk og engelsk.

En assistent, ikke et søkefelt

Prosjektets første designregel er at Turboscore er en assistent som hjelper deg å finne bil, ikke en søkemotor som må returnere noe. Når et spørsmål er for bredt til å svare godt på, stiller den et oppklarende spørsmål. Når den ikke kan filtrere på det du spurte om, for eksempel utstyr annonsene ikke oppgir pålitelig, sier den det i stedet for å late som. Oppklaring og råd teller som svar, ikke som feil.

Regelen håndheves. Søkekvaliteten sikres av en baseline-testsuite, og prosjektet måler aldri søk på «andel spørringer som ga treff» eller på hastighet. Et kjent hull registreres som et kjent hull, og testen løses aldri opp for å bli grønn. Den samme ærligheten gjelder filtre: et filter for blindsonevarsler som ikke hadde data bak seg, ble fjernet i stedet for å returnere troverdige, men feil treff.

Regler først, lokal modell ved behov

De fleste spørringer berører aldri en språkmodell. En mønsteruttrekker leser merke, modell, drivstoff, budsjett, årsmodell og kilometerstand rett fra teksten. Bare når den ikke finner noe brukbart, eller spørringen bygger på en kulturell referanse («en bil Elvis ville kjørt»), ber Turboscore en lokal LLM, som kjører via Ollama på samme server, om å trekke ut søkeparametere. Modellen kan legge til parametere, men ikke overstyre det mønstrene fant. Den får to forsøk med korte tidsavbrudd, og feiler begge, fortsetter søket på mønstrene alene.

┌─[ 00 SPØRSMÅL ]──────────────────────────────────────┐
│ > familiebil, automat, under 300k                    │
└─────────────────────────┬────────────────────────────┘
                          ▼
┌─[ 01 FORSTÅ ]────────────────────────────────────────┐
│                                                      │
│   mønstre ──> lokal LLM bare om mønstre ikke finner  │
│                                                      │
└─────────────────────────┬────────────────────────────┘
                          ▼
┌─[ 02 AVGJØR ]────────────────────────────────────────┐
│                                                      │
│   for bredt? ──> spør · kan ikke? ──> si det         │
│                                                      │
└─────────────────────────┬────────────────────────────┘
                          ▼
┌─[ 03 SVAR ]──────────────────────────────────────────┐
│                                                      │
│   passende biler, rangert etter TurboScore 1–100     │
│                                                      │
└──────────────────────────────────────────────────────┘
Mønstre først, lokal modell som reserve, og et oppklarende spørsmål når det er det beste svaret.

En test som kan feile

Baseline-suiten har 20 spørringer, hver med den intensjonen og de søkeparameterne den skal gi. I seks uker sommeren 2026 rapporterte den grønt uten å sjekke noe: tersklene lå utenfor testkjøreren, så den passerte uansett treffsikkerhet. Rettelsen i august var å la den kreve 100 % intensjonstreff og svartidsbudsjettet, og først bryte en forventning med vilje for å se et rødt bygg. En test som aldri har feilet, er ennå ikke en test.

Det første den faktisk fanget, var at den lokale modellen fant på bilmerker. Spurt om hva man bør kjøpe for å trekke en liten båt, et spørsmål uten noe å filtrere på, svarte modellen med sju amerikanske merker fra sine egne antakelser, snevret 216 000 biler inn til 180 og la dem fram som svaret. Merkevalidatoren som skulle fanget dette, godtok ethvert merke som fantes i databasen, altså alle. Et merke må nå være nevnt i spørringen for å bli stolt på, med én unntaksliste for kulturelle referanser, der poenget nettopp er å huske et merke som ikke er nevnt (James Bond, Aston Martin). Samme liste avgjør om modellen i det hele tatt skal spørres. Andre oppdiktede parametere på rådgivende spørsmål er registrert som et kjent problem i suiten, ikke skjult ved å løse den opp.

Scoren, og å gjøre påstandene sanne

TurboScore er en vektet score over tolv komponenter: kilometerstand, alder, registrert brukshistorikk, merkets pålitelighet, pris mot markedet, drivstofføkonomi, sikkerhet, vedlikeholdskostnad, annonsens tilstand, tid på markedet, nylige prisfall, og EU-kontroll fra Statens vegvesen. Vektene varierer med typen bil, så en veteranbil vurderes annerledes enn en bruksbil. Når en komponent mangler data for en bil, faller vekten bort og resten skaleres opp, så en svensk bil uten norsk kontrollhistorikk verken belønnes eller straffes for et hull i våre data.

I juli 2026 viste en gjennomgang at landingssiden lovet mer enn koden leverte: EU-kontroll-data, forsikrings- og avgiftskostnader og en verdiprognose. To av dem ble gjort sanne. Vegvesen-integrasjonen hadde lest feil feltnavn og stille returnert ingenting; den ble rettet og mater nå scoren fra en jobb som kjører hver time. Resten ble fjernet fra siden. To komponenter som var definert i konfigurasjonen, hadde aldri påvirket en eneste score, og gjør det nå. Metodesiden publiserer vektene scoreren faktisk bruker.

To land, én sammenligning

Priser kommer i NOK eller SEK og svensk kilometerstand i mil, så all sammenligning skjer på normaliserte verdier, aldri på rå annonsefelt. Planlagte skrapere holder annonsene ferske, oppdager solgte biler og mater signalene for pris og tid på markedet.

Hvem som helst kan bruke chatassistenten uten konto, opp til en grense per besøkende. Offentlige sider forhåndsrendres for søkemotorer, fontene er selvhostet, og hvert bygg leverer sin egen strenge Content Security Policy.

Stack

  • Flask-API, MariaDB, Redis; planlagte skrapere i stedet for jobbkø
  • React-frontend, forhåndsrendrede offentlige sider, norsk, svensk og engelsk
  • Ollama med en liten lokal modell på produksjonsserveren
  • Kjøretøydata fra Statens vegvesen til EU-kontroll-komponenten
  • Selvhostet på Linux, deploy ved push

Status: offentlig produkt, utviklet siden august 2025. Spotscore deler arkitekturen.

← tilbake til arbeid

esc
↑↓ naviger ↵ åpne esc lukk