I Built a Thing. It's Live. Let's Talk About It.

I SHIPPED IT TO THE ACTUAL INTERNET

Last month I introduced Yum4Less like a proud parent showing ultrasound photos. Cute. Hypothetical. Running on my machine.

Today it has a real domain.

yum4less.com

Not a staging URL. Not “works on my laptop if the stars align.” A public site, tunneled through Cloudflare, living on my TrueNAS homelab like every other questionable life choice I’ve made since October.

Yum4Less live Settings landing with ZIP, radius, and Find stores CTAs

If nobody reads this either: cool. At least the app is out there judging grocery prices without me.

WHAT “LIVE” ACTUALLY MEANS

It means I can open a phone browser, type a ZIP, and the thing behaves like a product instead of a science fair project.

Setup starts in Settings. Enter a ZIP, pick a radius, then — because ZIP centroids lie sometimes — you drop a search-center pin on a map before it goes hunting for stores. Confirm the pin. Then it finds nearby chains. Flip on multi-store and it gets honest about coverage.

Save. Continue. Welcome screen asks for a spending limit and dietary focus for this visit only — because Preferences That Haunt You Forever is someone else’s product strategy.

Yum4Less Welcome screen with $20 spending limit and dietary focus Anything

THE PART WHERE IT STOPS BEING A DEMO REEL

Deals is the “show me the receipts” tab. Sale items, estimated or directional prices, and which store the signal came from. No coupon-clipping carnival. No Instacart cosplay.

Deals tab listing sale ingredients with lowest found prices and trust labels

Then ingredients: use everything on sale, or pick manually. Pantry check for what you already have this session. Then ranking.

And then — dinner recommendations. On the live site. With the giant “heads up about these prices” box that refuses to let anyone pretend this is a checkout total.

Click any screenshot to enlarge. I took these straight off the live site with Playwright, because if I’m going to claim it’s live, the screenshots should not be from a local Docker fantasy land.

THE UNCOMFORTABLE HONESTY SECTION

Yum4Less is still a beta. Continental US ZIPs. A limited set of chains. Prices that are estimated or directional on purpose. Saved dinners are… let’s call that “aspirational UI.”

There’s a feedback form if something looks wrong. Anonymous. No receipts. No “please dump your home address into my Postgres.”

I also kept the trust copy mean to me, not soft for marketing. No “save money!” badges. No fake confidence meters. If the data is from a weekly ad syndicated feed, it says so. If Kroger is doing most of the heavy lifting because other stores have thin coverage this week, it says that too.

Settings after you’ve configured everything still looks like Settings — ZIP, radius, multi-store, the whole ritual — because I am not rewriting the product every time I feel productive.

WHY THIS MATTERS (TO ME, ANYWAY)

Part of this is still unemployment math. Applications into the void. Homelab as both therapy and resume padding. Cursor + agents + rules + CI until the thing stops lying to itself.

But the other part is simpler: dinner is a daily problem. “What’s on sale near me, and what can I cook from that without inventing a shopping list from vibes” is more useful than another half-finished media-server side quest.

So I put it on the internet.

Go poke it: https://yum4less.com/

Repo (for the people who read READMEs for fun): github.com/sfh1980/Yum4Less

If it breaks, tell the feedback form. If it works, make dinner. If neither: welcome to software.

ANYWHO, as always… If you’d like to support my work, you can donate via PayPal.