Launching Tabbit

Feb, 15 2023

In a classic case of "this should only take a weekend to build", one month later I am finally ready to launch my latest side project: Tabbit.

The concept is a SMS based bot that will help with shared group expenses. I have seen these apps come and go.

My hypothesis with Tabbit is that these apps die because it is difficult to convince everyone in your group to download a new app simply to divvy up expenses.

I wanted to build an experience that is untethered from native apps.

So, I settled on SMS using Twilio. I figured that since you would be texting your group of friends a picture of the receipt anyway, why not just text the picture it to Tabbit instead?

SMS idea

Initially, I was hoping you could just include Tabbit's phone number in the group chat with your friends and have Tabbit send a text back with an itemized list.

Users in the group chat could then respond with an itemized list. However, this concept fell apart when I found out that Twilio no longer supports group messages due to changing SMS standards.

After some thinking, I settled on the idea of a mobile first web app to display the items from the receipt.

UI sketch

The process would be as follows: send a text to Tabbit with an image of your receipt, get a unique link as a response, then forward that link to the group you plan to split the bill with.

That's all well and good, but if I can't get an itemized list from a picture there's no use in building this.

I have some experience in machine vision from building my coffee grind analysis app, but I really didn't want to have to spin up an OCR up from scratch.

Searching around I came across AWS's Textract service and was blown away by its accuracy. Textract could handle almost everything I threw at it.

Sample receipt

With most of the open questions solved, I started to piece them together. The final architecture:

(1) User sends a text message to Twilio with receipt picture

(2) Twilio calls my serverless webhook

(3) The serverless function runs the OCR and makes the database entry with the receipts details

(4) A link is sent back to the user for a NextJS webpage that displays each line item

(5) Once on the webpage, "saving your order" makes another serverless call to update the receipt details in the database

After a bunch tweaking with the UI, we are now live. Now how do I market this thing?

Sample UI