Vivek Raman

Software Developer

Itemize Receipts - A chromium extension to scan and automate receipts management.

Itemize Receipts

A chromium extension to scan and automate receipts management.


This is a weekend project I put together because of the overwhelming number of receipts I accumulated over the summer holiday.

I haven’t really set up a landing page for this because it is mostly for me (and my flatmates, I guess). What I did set up is a little video demonstration. Check it out!

Privacy

This extension does not collect any user data. Your settings are stored on your browser. Your API key is encrypted and stored on your browser.

Your receipts are sent to your LLM provider and model directly - I do not see or store any of it. Please refer to the privacy policy of the model provider of your choice. They may or may not be used for training purposes; this is outside of my control.

Motivation

I live with a lot of flatmates. We usually share our supplies, and each person decides if they are willing to split each item. We use Splitwise for this, because it works for our use-case very well. It has a feature called itemized splits, where we can add each line item from a receipt and decide who wants a part of it. Here’s an example of how we split a bill.

Example of how we split a bill

However, just filling in the data gets quite cumbersome. This became a huge issue this summer, where I accumulated over 80 receipts without entering a single one. I decided to try automating it.

What it does

This is a chromium extension that provides a convenient way to access your receipts in a tablular format. It opens a sidebar on your browser where you can upload an image of your receipt. Then it uses AI to extract the items in the receipt.

Scanned receipt

If you open Splitwise, the extension provides a convenient autofill button that copies over all of the scanned content into Splitwise.

Autofilled items on Splitwise

Implementation

Extension

I considered the Splitwise API at first, but glancing through the API documentation, I couldn’t find a way to create the itemized splits I wanted. Besides, the splitwise UI is good enough and I had no intention of essentially recreating it. So I decided to create a Chromium extension that could directly insert data into the splitwise UI.

AI

The next obvious question was: how do I get the data itself? I obviously wanted to avoid spending money and time on this project. My first idea was to find and deploy a fine-tuned transformer - surely somebody has one of these.

Alongside this, I considered just sending it off to a general LLM to see how it did. Even on the no-cost models through OpenRouter, I found that the results were good enough. So, I benched the previous idea and rolled with LLM integration.

Users can configure their own API key and providers in the extension settings.

AI configuration

Timeline

Again, this was a project I did not want to spend time in perfecting. 80 receipts is not actually that many, so spending too long on this would be counter-productive.

  • I spent one Sunday working on the main flow.
  • Then I spent a few hours over the following week working on settings, error handling, and just making it useable.
  • Working on media for the extension store page took a couple more hours. One could argue that this isn’t essential, but I wanted the extension synced on all my devices so I decided to publish it.

Future scope

There are a few more directions this project can go.

  • Splitwise has a limit on entries per day. Maybe this can enqueue a bunch of receipts and insert them in the following days.
  • It could always use some CSS love.
  • I could integrate with other finance management web apps.
  • Maybe some line items that have obscure names could be manually mapped to readable text. Walmart and Costco receipts can have unreadable line items, and this could help increase clarity. This could be a lookup table or even a real-time API from the stores themselves.

View posts by tag

#extended-reality #sjsu #project #chromium #automation #productivity #university #research #unity #spring #work #vuejs #react #gcp