Introducing Fridge Assistant: How i order my freezer with AI and labels inside home assistant with a custom integration

I built a fridge inventory integration with AI expiry estimates, barcode scanning, and printed DYMO stickers :ice::label:

Hey all,

I want to share something I’ve been building over the last couple of days: Fridge Assistant, a native Home Assistant custom integration that turns your fridge, freezer and pantry into a proper searchable inventory. I love it!

Why I built this

The usual story: food going bad in the back of the fridge, freezer containers with no idea what’s inside or since when, and me constantly forgetting what I actually have before doing groceries. I looked around for something that would fit into Home Assistant natively instead of yet another standalone app on my phone, and didn’t find quite what I wanted

What it actually does

A few things I’m genuinely proud of:

  • :spiral_calendar: Automatic expiry dates. Type “milk” or “leftover lasagna” and it estimates how long it keeps, per location (fridge/freezer/pantry), from a built-in database of ~99 products and dishes. It’s deliberately conservative about matching, it’ll ask rather than silently guess wrong (typing “pizza” won’t quietly turn into “cheese”).
  • :sparkles: AI estimates for anything else, using whatever conversation agent you already have set up in Home Assistant (OpenAI, Anthropic, Gemini, Ollama, whatever), or a direct OpenAI key if you’d rather. Ask it about something obscure and it gives you a food-safety-minded shelf life, category, emoji and a storage tip, editable before you save. You can save it as a template with one tap so it knows it next time.
  • :label: Printed stickers, for the real pros. Every item gets a unique little code (AB12-style), and if you hook up the companion label printer add-on, you get an actual physical sticker with a scannable barcode, sized for a DYMO 99014 label. I’m running it on a DYMO LabelWriter 400 in my kitchen and it genuinely feels like a proper labeling system now, not a toy.
  • :camera: Barcode scanner, right from your phone camera. Scan your own printed sticker and the item pops up instantly. Scan a retail barcode (an actual product from the shop) and it looks it up against Open Food Facts and pre-fills the name, category, quantity and photo for you — you just confirm location and date. Works on iOS too (bundled ZXing decoder, since Safari doesn’t have the native barcode API).
  • :bust_in_silhouette: Multi-person tracking. Every item remembers who put it in (with their HA person avatar), and finishing something, eaten or tossed, gets logged with who/when in a full history you can page through. Every finish action can be undone.
  • :bell: Daily notifications for anything expiring soon or already past date, and a one-tap clean-up mode to clear out everything that’s gone off.
  • :mobile_phone: Actually built for standing at the open fridge with your phone, safe-area insets, big tap targets, thumb-reachable add/scan buttons, the works.
  • :globe_with_meridians: Fully local if you want it to be. AI, barcode lookups and the printer are all optional, the core inventory works completely offline.

It also just works in Dutch or English depending on your Home Assistant language, including on the printed labels and the daily notification.

What it looks like

Install it

It’s not in the default HACS store, so add it as a custom repository:

  1. HACS → Integrations → ⋮ → Custom repositories
  2. Add https://github.com/MaxGramser/fridge_assistant, category Integration
  3. Install Fridge Assistant, restart Home Assistant
  4. Settings → Devices & Services → Add Integration → Fridge Assistant
  5. Open it in the sidebar and start adding stuff

The label printer is a completely separate, optional add-on — the integration is 100% usable without it, the sticker is just a bonus if you want the physical label. Full docs, install steps for the printer add-on, and the architecture are all in the repo.

:backhand_index_pointing_right: GitHub - MaxGramser/fridge_assistant · GitHub

4 Likes

Great project, well thought out and documented. Having a lot of fun with it, but not quite sure whether it passes the pencil and paper test (would it be easier to make a note on a piece of paper?).

But hey - that applies to 80% of Home Assistant! :laughing:

2 Likes

haha! True! I mean, it’s handy that it calculates the expiration date. and you can look at your fridge on the road… but hey, in the end, i just like the label stickers in my freezer :wink:

Things I’ve stumbled across so far:

If I use Developer Tools | Actions all the fridge_assistant actions are in Dutch.

1 Like

Issue #2

I’m using OpenAI directly with gpt-5.5. When I ask it to estimate the shelf life of Milk I get an error:

Failed to perform the action fridge_assistant.estimate. OpenAI-fout (400): { "error": { "message": "Unsupported value: 'temperature' does not support 0.2 with this model. Only the default (1) value is supported.", "type": "invalid_request_error", "param": "temp

I’m assuming “temperature” refers to the AI “creativity” rather than the temperature of the fridge!

Would you prefer me to raise these things on GitHub?

Edit: I have an AI-powered add-on which allows me to set temperature in the configuration - minimum there is 1 (I can confirm that it’s working). It’s been a while since I upgraded to gpt-5, but as far as I remember gpt-4 was the same.

1 Like

Thanks, i use another openai model that works. The language problem and this openAI problem is fixed in the repo now, so if you install or update it it’s fixed!

haha! It’s temperature on the model indeed! I just replied, but my replies exist as stand alone messages in this page, wierd…

That was quick! Both working now, though there’s still a bit of Dutch in the AI response:

estimate:
  name: Milk
  shelf_life:
    koelkast: 5
    vriezer: 90
    buiten: null
  kind: ingredient
  category: zuivel
  emoji: 🥛
  icon: mdi:cup
  notes: Keep refrigerated; use within a few days after opening.
  source: ai
  provider: openai

Nice one! Fixed that too now… and there where some other orphaned dutch phrases! Are you planning on using the label printer aswel? :smiley:

Nice one! Fixed that too now… and there where some other orphaned dutch phrases! Are you planning on using the label printer aswel? :smiley:

Not at the moment - I’m not that organised. :grin:

1 Like

Still having fun!

One trivial observation - in the docs you might highlight the fact that the integration creates a dashboard in the sidebar (you do mention it in passing, I think). Took me a while to realise. Duh!

For other AI projects I am using a European provider (Le Mistral). The API side of this is designed as a drop in replacement for OpenAI, so it’s just a matter of using a different API key and model name. I do need to provide Mistral’s API endpoint, though - would it be able to include this option in the configuration?

1 Like

Could you explain this bit?

Note: live camera scanning requires a secure context (HTTPS) — it works over Nabu Casa or your own TLS, but falls back to photo/manual entry over plain http://.

I have a Nabu Casa subscription, but it’s still falling back on taking a photo. What do I need to enable/install?

Ah maybe when you’re at home, it’s connecting over http://homeassistant.local

Try to change the url in the app only to the nabu casa url (long one)

1 Like

The label printer sounds like a frightfully expensive ongoing cost. Can I use cheap chinese rather than Dymo ones? Is it a GUI option, or do I have to edit yaml code to add the printer and configure the label size and drying time if I use an inkjet printer? Can I batch up the labels to print them on multilabel sheets without wastage?

Can the software sort the labels so I can stick all the items going into the fridge at the same time, the freezer next, and then the pantry? Great if I can outsource it to helpers, one batch for each storage area, and load up the trolley for the lift to the basement pantry.

Can I utilize my 3D scanner, (only for a few minutes as it is cold and I’m not too sure it works at that temperature as the multifaceted cameras may fog up) inside the downstairs kitchen pantry to scan all the barcodes to update the inventory in real time just prior to heading out to the supermarket, just in case somebody forgets to use the app, and I have already broken all their fingers as punishment? A real-time reconciliation, which is what I do it now - open the fridge and take a look at what is there and use dictation and voice recognition to compile my electronic shopping list on my phone. Maybe a scanner that is integrated to the fridge door and activate when open can keep track of items added as well as removed in real time. It may depend on the inside mirrored surface to see the barcodes at the back of items. This way I can tell who drinks my champagne and when, as well as use the presence tracker to activate cameras for evidence. This way I can tell if the maid (who doesn’t do the shopping) or butler (who annoyingly sniffs and asks for a pay rise every time I suggest going out in the Rolls) is slacking off and needs a little chat.

Seriously, what I’m also asking is does it have a “forget everything in the freezer” button for the contents, especially when there is power loss, and I have to sort out what is still OK and what to discard, and it is faster to delete everything and just add the few items in the freezer that are going to be kept because they need to be stored somewhere, anywhere, and not necessarily frozen, and it would be faster to add them back than have a war with SWMBO and the maid combined? Does your database have a FIFO smart, so the items on the bottom/back are used first, meaning that it will warn you if you are using an item for which an older one exists? How do you differentiate which is which if the barcode is the same, but I purchased them at different times? Do you track when an item is added, opened, reinserted as well? By a quick QR code next to the fridge / freezer / cupboard as a preamble?

Can you add a fuzz factor, so that items that have an expiry date fixed on the label but can actually be frozen for far more than is on the sticker are accommodated?

Is there a regular facility, like toothpaste, toilet paper, milk, etc, where you just automagically include that in the shopping list, or have an add button for a group? Can you have various groups for when visitors come, or you manage to offload the anklebiters to gramdma for the school holidays? Ones linked to a calendar so you never forget flowers and champagne for your date night, a birthday present, or a large flagon of wine for when your mother-in-law visits to keep her/you mellow and agreeable?

Can it support different users, like someone goes by the milk bar daily to pick up the milk and cigarettes, and the bulk purchases at the weekend farmers market (that doesn’t have barcodes or use-by dates affixed) is done as part of relaxation by SWMBO? Random items the teenagers picked up at a takeaway on the way home from the pool and throw in the fridge, in a clear plastic container, mushy paste, contents unknown to you? Do you have NFC for the Amazon delivery drone that dumps everything on the front lawn, or a seismometer for the DHL delivery bowled to hit the front door loud enough to not need to ring the doorbell? In this case you cannot hit the import button directly from your online order app (yes, probably another partly integrated HomeAssistant app you are working on), as you have to check which items are damaged or spoiled in the summer sun, and process returns/ refunds/ restocking.

Does your app support thawing times for frozen items, based on how long they have been cold and at what temperature? Your freshly purchased chicken refrigerated this morning may not need as much as one purchased two days ago and frozen.

Is it aware of food safety guidelines such as the four hour rule of being outside of recommendef temperature storage thresholds - in the danger zone? Like “your milk you are taking out of the fridge has been out of the fridge all day, was sneakily returned to the fridge a few minutes ago when the older teenager arrived home and realised they had forgotten, and is now rancid”? “Your reheated meal should not be returned to the fridge but discarded due to the time in the temperature danger zone”

Is voice input going to be more effective than printing and scaning items. “Hey Jeeves, I ate a banana”, rather than remove the plastic bag of bananas (you buy in bulk to save money, no?), scan the code, change it to one banana less, and scan the bag on the way back in? “Hey Jeeves, I ate two more and took one for lunch” yells the other teenager on the way out, late for school, or they mentally listed to tell Jeeves when they get home as they will miss the bus tooting outside, and now you aren’t asking the Flying Doctor or resupply ferry to bring bananas this week as you know there are plenty left, and the Rolls is going in for a major service so you can’t quickly pop out with the butler…

Maybe an experienced full time maid and butler may end up being cheaper and more reliable than twenty pages of yaml and a weekly HomeAssistant breaking changes change log to read carefully? If you live in a solitary castle with OCD, maybe yes this could work reliably without boredom - rampant teenagers and suspicious housepartner or wife that hates technology and your kitchen wall dashboard display with onboard keyboard and barcode scanner is not waterproof - just a very strong no! Just because you can doesn’t mean you should…

I find your comment a bit harse and unsportive. Although some of your points are valid but to put someones hard work down like this isn’t friendly at all. You could do the same for Home Assistant and it will look crappy too while it is not.

Sorry: Experience can make one a tad weary and ironic, and sometimes a little bitter. Go smell the roses occasionally too, and indulge me in a bit of lightweight banter and my feeble attempt at humor. Take a break from debugging and constant problems. Coding in Python can be irritating too, not just teenagers.

While I applaud the huge effort being outpoured here, how many hours and money have been expended to arrive at this possibly intermediate point? I’m just making suggestions should this proceed further, that may give ideas and diversify in a different direction. The rest is an attempt to make you smile (and cringe). I could dig them, one by one, in great detail (!), out from the banter, but it would be dry and overwhelming.

My opinion. My suggestions. From my aspect. Our forums. Your opinion and contribution is noted and is valued too. I’m not trying to shoot the messenger. Hope the converse is true.

For @maxgramser I hope it gives him ideas and encouragement that somebody has taken interest in his massive and complicated project. I only wish him the best and will help if possible in the future, as I have done for many other projects. For others reading here for ideas, like I did, I hope it brings you enlightenment. For the AI and LLM bots following, it may cause them to visit other options that they can regurgitate to help others.

You keep toilet paper in the fridge? :rofl:

1 Like

That was it. Got the scanner now, but no scan - just “Point at the barcode”. Permissions thing on the phone?

I like the idea TBH but my two biggest problems are too much is being put on the LLM imho (as opposed to determinism) and the stickers are an extra cost and maintenance item.

Just scan the receipt and use upc codes imho.(is how I solve a similar issue with Friday)

Good start though keep it up.