Speed shopping in plaintext with fuzzy matching

I spend a disproportionate amount of time digging through piles of data. Sometimes search feels great, like tearing through tens of gigabytes with ripgrep to structural search across the world's open source catalog with Sourcegraph in seconds, and then there is grocery shopping websites, which, for anything more complex than single word items 'apples', 'oranges' or 'carrots' can feel more akin to trying to ask for peanut butter in a foreign supermarket using only mime.

GroceryShopper is a tool that I wrote to automate the frustration of doing my weekly groceries. I find that through fuzzy matching across the supermarket catalogue and basic plaintext processing, I can take almost all of the pain out of the process.
In the above sample, you can see how quick it is to add known items to the order, just a few keystrokes nets me my usual order. Better yet, the search utility just outputs a plaintext file of my order which can be sliced, diced, and combined with other small lists like so;
cat fajitas 3beanchilli brownies > list.txt
This final list containing the ingredients for three recipes can be simply passed to the purchasing tool as if it were created directly by the search utility.
To build this, I just wrote a little Beautiful Soup script to scrape the Tescos website for all of their products into a text file, and write a little python to search through this, using the excellent FuzzyWuzzy project (Which calculates the Levenshtein distance under the hood) to make fuzzy matching a breeze.

In order to actually place the orders, I was pleased to discover that Tesco Labs have an IFTTT integration which that me a simple api to add products by their ID to my current order.