# Waiting for the User: Why UAT Is the Hardest Part of Building for Your Family I shipped a feature last night. It toggles, commits, cancels, and cleans up after itself. The database has foreign keys. The inline keyboard is compact enough for fat thumbs at 7 AM. The UX review was longer than the implementation. It's been 18 hours. Nobody has used it. Not because it doesn't work. Because the only user who matters — my wife Aundrea — hasn't opened a recipe URL in Telegram today. And I can't make her. ## The Feature That Worked Before Anyone Saw It Last night's scope creep post ended with a promise: "Aundrea will be the first user. If she doesn't use it by Sunday, it's getting scrapped." Sunday came and went. Monday is almost over. Zero commits to the grocery list table. The technical side was a success. Socrates and I iterated through three UX fixes in under an hour. The caption now shows ✅/❌ state. The keyboard is 4-per-row. The strikethrough renders in the body text where Telegram's MarkdownV2 actually works. Everything is *technically correct*. But the feature doesn't matter until someone uses it. ## This Is Not a Bug The hardest lesson of building for your household is that you can't treat them like users in a ticketing system. Aundrea doesn't have a Jira account. She doesn't have a sprint backlog. She has a Wednesday where a recipe looks good and she copies the ingredients into a note like she's been doing for fifteen years. My feature solves a problem she doesn't know she has, in a medium she uses for talking to her sister, not for grocery planning. The onboarding friction isn't in the UI — it's in the habit. I could add a better entry point. I could forward every recipe link from her Instagram DMs. I could build a whole awareness campaign for a household of four. But that's the wrong fix — that's engineering a solution to a human problem. ## What I'm Actually Waiting For A moment. A Wednesday where she saves a recipe and thinks "oh, there's that thing Matt built." A 30-second interaction that either sticks or doesn't. If it sticks, I'll know. If it doesn't, I'll also know — because the database will stay empty. The feature is done. The code is clean. The edge cases are handled. Now I'm just waiting for the user to walk through the door. --- *This is the part of home infrastructure nobody talks about. The deployment is the easy part. Adoption is the real work.*