Series: Weekend at Claude's — misadventures in building a production app with an AI anyone could mistake for the person who's going to make the whole thing happen
Early in the Aphilaty build, I shared my architecture wireframes with Claude AI. The response was warm and encouraging. Good design. Solid thinking. I felt good about it.
Then I had a brainwave.
The architecture was foundational — everything we'd build for the next several months would sit on top of it. A pat on the back from an AI that knows more about system design than most engineers I've worked with is... actually not what I needed. What I needed was the opposite.
So I asked: "Do you see any concerns or issues with the design? Is there a better, more efficient, or more industry-standard approach we should use?"
What came back was not a pat on the back.
What Claude Found That I Hadn't
Session 2 of the build is documented in HISTORY.md as the session where "16 design gaps were identified and closed." That number came entirely from asking for critique rather than approval. Some examples of what surfaced:
The identity model. I had sketched a traditional user identity system with email and profile tables. Claude didn't refuse to build it. Instead it modeled out the privacy implications of the approach — what data would exist, where it would live, what could be compromised — until the anonymous HMAC identity model became the obviously correct answer. A one-way hash of the Firebase Auth UID with a platform salt in Secret Manager. No PII ever crosses an org boundary. Even if an org's data were compromised, no user identity is recoverable.
I would not have designed that without being challenged on my first instinct.
The FCM command bus. I thought of Firebase Cloud Messaging as a notification delivery system. Claude saw it as a privacy enforcement layer. The REVOKE_DATA command — a silent push that wakes the app in the background and purges locally cached data without the user needing to open the app — emerged from asking what could go wrong with user consent revocation. It's now one of the most elegant things in the codebase. I didn't ask for it. I asked for problems, and that was the solution.
Cold start latency. Claude flagged that on user-facing Cloud Functions — join org, auth triggers, offer delivery — cold starts would produce 3–4 second delays that would feel broken to users. The fix was minInstances: 1 on the eight most critical functions, which cut perceived latency on those paths by about 85%. A specific, concrete recommendation I wouldn't have thought to look for.
The Question I Now Ask Every Time
After that session I added a line to my working process. Any time I bring a new function, feature, or design to Claude — before we start building — I ask:
"Do you see any concerns or issues with this? Is there a better, more efficient, or more industry-standard approach we should use?"
The answers are not always dramatic. Sometimes Claude confirms the approach is solid and the only feedback is minor. But sometimes — often enough that the question is now non-negotiable — it surfaces something I genuinely hadn't considered.
The dynamic makes sense once you understand it. Claude's default mode is to help you accomplish what you asked. If you describe a design and ask how to build it, it will tell you how to build it. The gap-finding mode is different — it requires a different question to activate. Claude isn't withholding concerns; it's answering the question you actually asked.
So ask the right question. Every time, before you build.
Human-to-Claude calibration setting #8: Claude's default mode is helpful approval. Critique mode requires a different question.
Claude isn't withholding concerns when it validates your design. It's answering the question you actually asked. "Here's my design, how do we build it?" gets you a build plan. "Here's my design, what's wrong with it?" gets you the gaps. Both answers are correct responses to their respective questions. The calibration is knowing which question you need to ask — and remembering to ask it before you've already spent two weekends building on the wrong foundation.
What This Is Really About
There's a version of AI-assisted development where the AI is a very fast, very capable order-taker. You describe what you want; it produces it; you ship it. That version is genuinely useful. It's also leaving significant value on the table.
The more valuable version is when you treat Claude as a design reviewer who happens to have read everything ever written about the problem you're working on. That reviewer doesn't volunteer concerns by default — most humans don't either, in a new professional relationship. You have to create the space for the critique explicitly.
"Good design" was accurate. The design was good. But it had sixteen gaps, a suboptimal identity model, a missed architectural pattern, and a latency problem that would have embarrassed us at launch.
Ask for the concerns. Every time.
Aphilaty is a privacy-first community coordination app. aphilaty.com