Everybody Lies

My First Real Wall

By Joey Bess··3 min read·
Wall

When I started building Everybody Lies, I had a very clear picture in my head.

A small town. A crime. A handful of suspicious citizens. Everyone with secrets. An investigation board where you try to make sense of it all. The kind of game I would happily play on my phone with a cup of coffee and too much confidence.

The whole point was that the town would be created by AI. Not just a fixed mystery I wrote once. Every town, every citizen, every secret, every crime would be generated fresh.

That sounded magical.

And then, fairly quickly, it broke.

My first real wall was the town generation. The app needed the AI to return a town in a shape the rest of the app could understand. Names, people, relationships, secrets, clues — all the ingredients of the mystery.

But the builder was being very strict about what it expected back. Too strict, as it turned out. If the AI gave something in a slightly different shape than expected, the whole thing could fall over.

This is where I have to pause and say: I do not have a coding background. So when something breaks, I am not looking at it with calm professional eyes. I am looking at it like a raccoon who has found a toaster.

There were words on the screen that clearly meant something. I could tell there was a problem. I could even tell roughly where the problem lived. But I did not yet understand the difference between “the idea is broken” and “the plumbing is being fussy.”

That distinction matters.

At first, it felt like the whole project was too ambitious. Maybe asking AI to create an entire mystery town was silly. Maybe this was one of those ideas that sounds good in a notebook and then collapses in real life. Maybe I had already reached the edge of what a non-technical person could do.

That feeling is surprisingly physical. A little heat in the face. A little tightness in the chest. A lot of staring.

The hardest part was not the error itself. It was not knowing whether I was one small fix away or miles off course.

Eventually, the issue turned out to be about the rules the app was using to check the AI’s answer. The rules were too narrow. The AI was not always wrong; sometimes it was just giving an answer that did not fit the tiny box I had built for it.

The fix involved loosening that box. In plain English, I had to let the app be more forgiving about what came back, and then gently turn it into the shape it needed. The technical note in my build log says the schema was too strict and was fixed with something called z.any and coerce.

That sentence would have meant absolutely nothing to me a short time ago.

Now I understand it enough to say this: I had built a bouncer at the door who was rejecting guests for wearing the wrong shoes. The fix was to stop being so precious at the entrance and tidy things up once they were inside.

What surprised me most was how emotional that first wall felt. Not dramatic emotional. Just quietly discouraging. The kind where you close the laptop and think, “Well, that was a nice little fantasy while it lasted.”

But I came back to it.

And once the town generation started working again, the whole project felt different. Not finished. Not easy. Definitely not under control. But possible.

That was the shift.

I did not suddenly become technical. I did not suddenly understand everything the app was doing. But I learned that a broken thing is not always a dead thing. Sometimes it is just asking for a different kind of patience.

And honestly, that may be the main skill I am learning here.

Not coding.

Not yet, anyway.

Patience with confusion.

Small takeaway: the first wall is not always a stop sign. Sometimes it is just the place where the real learning starts.