A Bruket product · iPhone & Android

KVITT

Know what you actually buy.

KVITT turns a photographed receipt into clean, item-level data — what you bought, how often, and how your habits change over time. Not budgets or balances. Behavior.

KVITTKVITTOESTRELLA CHIPS24,90RB ZERO 25CL18,50STARKÖL 33CL13,00MJÖLK 1.5L17,95TOTAL74,35ChipsEstrella GrillchipsEnergy drinkRed Bull ZeroBeerStarköl
Receipt text → normalized categories and canonical product names.
How it worksSee the statusIn active development

The problem

Receipts are rich. Then they’re thrown away.

You know roughly what you spent this month. You rarely know what you actually bought — across stores, brands, and categories. The detail that explains your spending is sitting on receipts that get ignored the moment you leave the till.

Most finance apps stop at totals and balances. They tell you that money left your account, not which habits keep pulling it out.

What KVITT is

Behavioral spending intelligence, read from receipts.

KVITT is built around a single idea: your receipts already know your habits. Scan one and KVITT reads it at the product level, normalises the messy text into something consistent, and turns it into insight you can actually act on.

Item-level, not total-level

See every product you buy, not just the sum at the bottom.

Behavior, not budgets

Habits and patterns over time — not envelopes, categories, or savings goals.

Receipts first

No bank connection required to start. A photo of a receipt is enough.

How it works

From a crumpled receipt to clean data.

  1. 01

    Scan

    Capture a receipt with your camera, or add a purchase manually. Uploads queue and retry if you’re offline.

  2. 02

    Read

    A configurable OCR runtime (Azure Read in production) extracts the probable line items from the image.

  3. 03

    Normalise

    Messy Swedish retail lines become stable categories and canonical product names with confidence metadata.

  4. 04

    Understand

    Item-level history feeds search, monthly pace, and detected recurring purchases and patterns.

The hard part

Making sense of messy Swedish retail.

Receipt text is abbreviated, store-specific, and inconsistent. KVITT’s normalization engine is hybrid by design — deterministic Sweden-specific rules for high-precision cases like alcohol, nicotine, candy, chips, and pant, an alias and brand repository for variants and private labels, a local semantic classifier for the long tail, and an optional model-backed fallback.

ESTRELLA GRILLCHIPS 185G
ChipsEstrella Grillchips
RB SUGARFREE 25CL
Energy drinkRed Bull Zero
STARKÖL 33CL FLASKA
BeerStarköl

Every decision carries confidence, source, and candidates — so you can switch between a generic view (Chips, Energy drink, Beer) and a specific one (Estrella Grillchips, Red Bull Zero, Starköl) without losing the reasoning behind it.

Inside the app

Four surfaces, one focus: your behavior.

Hem

utgifter

Scan, pending uploads, expenses, and product search in one place.

Översikt

oversikt

Your month’s spending pace — not savings goals or envelope budgets.

Mönster

monster

Behavior analysis and detected recurring purchases over time.

Konto

konto

Premium, plan details, settings, and connected data sources.

On purpose

What KVITT deliberately isn’t.

KVITT stays sharp by refusing to become a generic budgeting app. These are intentional non-goals, not missing features.

  • No category budgets, envelopes, or savings goals
  • No forecasting or moralising about your spending
  • No bank-first dashboard — receipts come first
  • No partner-gated store integrations claimed before access is real

Platform & privacy

Real infrastructure, honest about its edges.

Per-user isolation

Supabase-backed auth with server-side verification and strict per-user data isolation. Guest mode works on-device.

Premium billing

Cross-platform purchases via RevenueCat, with backend-verified entitlements and server-side gating.

Bank data, opt-in

A real GoCardless bank-data adapter when you connect it — never required to use KVITT.

Honest integrations

ICA, Coop, Kivra, and Billo adapters stay explicitly disabled until partner access exists, instead of pretending to work.

Current status

Where KVITT actually is.

KVITT is a real, working monorepo — an Expo mobile app and a FastAPI backend — that passes its backend tests and mobile typecheck. It is not yet polished for a public launch.

Receipt capture and upload, manual entry, OCR, normalization, search, analytics surfaces, authentication, premium gating, and a real bank-data adapter all exist today. The goal right now is a careful, staged release — not a launch-day spectacle.

Real today

  • Receipt scan, upload queue, and manual purchase entry
  • Config-driven OCR with Azure Read in production
  • Hybrid product normalization for Swedish retail
  • Search, monthly pace, and recurring-purchase detection
  • Supabase auth, RevenueCat premium, GoCardless bank data

Your receipts already know your habits.

KVITT just makes them readable — clearly, at the item level, and honestly about what it can and can’t see.