Palace Radio
My first build for this whole contest series had one feature I had to cut. Four competitions later, I finally shipped it.
This is my first submission for Built on Yesterday, the final week of Summer into AI.
The prompt was to take a prior submission — yours or someone else's — and meaningfully extend it. I went back further than this competition: to Spring into AI, an earlier sprint I ran before Summer even started. Week 3 of that one was Memory Palace, a Method-of-Loci app — you build a mental "house," pin things you want to remember to its furniture, and the vivid, weird associations do the actual memorizing. Week 4 added a broadcast layer, Palace Radio, that narrates your palace back to you — except it only had browser text-to-speech, which sounds different on every device and can't be downloaded or shared. That gap sat there for months
Wait, what is this?
Same idea, rebuilt from the studs. You still write a list, get vivid AI-generated associations, and plant them around a house. But now the house is a real, walkable 3D room — WASD to move, drag to look — and every claimed spot glows and carries a real object: a desk, a bed, a bookshelf, a door. Hit tune in and a real broadcast voice — the Keeper — narrates every claimed spot in order, in spatial audio tied to each object's actual position, or in a numbers-station cipher you decode yourself. The whole broadcast downloads as one real .wav file, or shares as a link that sounds identical for every listener — the exact feature the original Spring build had to cut.
The door that was the same size as a lamp
The room went through a lot of rounds before it looked right, and the honest one to tell is the scale bug. I'd pulled in real free 3D furniture models and normalized every one of them to roughly the same on-screen size — which meant a door ended up exactly as tall as a floor lamp. It looked like a dollhouse. So I stopped eyeballing it and actually measured the raw models — parsed the .glb files directly and read their true dimensions. The door came out to 0.49 × 1.01 meters. Real doors are about 0.98 × 2.02. Kenney's whole furniture kit, it turned out, is modeled at exactly half real-world scale — confirmed for good when the same single 2× multiplier also landed the desk at 0.76m tall, the textbook desk height, with zero per-object tuning. One number, not sixteen. The room's felt like an actual place ever si
Building toward Kyle's bar
I kept the room deliberately abstract at first — floating glowing beacons, no walls — specifically to dodge the scope trap of a full 3D room. But round after round, the pull to go further won out, and a lot of that was Kyle Sebeysten's doing: his 3D "Boomtown" build was the bar I kept trying to clear. So the room grew a piece at a time — real furniture, real walls and a ceiling, a working door, wallpaper — chasing that same ambition. Kyle's own read on Boomtown was that it got away from him a little; the lesson I took from it wasn't "go smaller," it was "keep the vocabulary bounded" — sixteen fixed spots, a claiming system with a graceful fallback, nothing generated on the fly to spiral out of control. Thanks for setting the bar, Kyle.
The cat that was a bird
The bug that taught me the most came from actually using the thing. The AI writes one vivid sentence per spot — "a sleek black cat lounges on the chair" — and I'd been showing that sentence next to a plain, unchanged chair. Nothing in the room ever grew the detail; you just had to trust the narration. So I gave the AI one more job: pick a single emoji for its own sentence, and I'd render that as a small real object — a cat, a candle, a crown — built from basic 3D shapes (spheres, cones, cylinders; no external models, no AI-generated geometry) sitting right at the spot. First pass, it picked a bird for the cat sentence, because a bird was in the shape library and a cat wasn't yet — an icon that flatly contradicted its own story. Fixed the instruction so accuracy always wins over convenience, then just built more shapes (36 now, animals included) so "cat" usually has somewhere to land. Even then the object floated near the ceiling, nowhere near the chair — so the last fix was the most literal: I measured the real height of every piece of furniture and now a cat actually sits on the seat, not hovering above it.
The part I built, then hid on purpose
There's an obvious next step past "hand-built shapes," and I kept circling back to it: why not just generate a real, unique 3D model for every item? A sculpted flamingo, not a stylized stand-in. So I actually built it — wired up a real text-to-3D API (Tripo), a server proxy so the key never touches the browser, a client cache in IndexedDB because the generated model URLs expire in a day, the whole path that drops a genuinely AI-sculpted mesh onto the right piece of furniture. It works.
And then I turned it off. Two reasons, both honest. Real text-to-3D is about 30 seconds and twenty cents an object, and — the deciding one — the service has no spend cap you can set on a key. A public "free AI sculpting" button with no ceiling is just an open hole in your own wallet; the only real cap is prepaying a fixed pack and letting it run dry. Days from a deadline, a button that promises "free" and could quietly drain a pack felt worse than a button that isn't there. It's the same lesson Kyle's build taught me, one more time: bounded and reliable beats impressive-but-fragile. So the whole generation pipeline ships in the code, dormant behind a flag, two settings away from live, with a bring-your-own-key path for anyone who wants to run it on their own dime.
What did ship is the honest, free-for-everyone version of the same idea: the AI now hands over the color it's describing, so a "fluffy pink flamingo" actually renders pink instead of a generic blue bird. Not a unique sculpt — but the room wears the detail the voice is describing, instantly, for free, for every visitor. If I had more time and a budget to point at it, the dormant path is exactly where it'd go: real, generated, one-of-a-kind objects for every spot. It's built and waiting. I just wasn't going to ship an uncapped bill to prove a point in a demo.
On the theme
Built on yesterday, twice over: this is a Summer-into-AI build extending a Spring-into-AI one, using lessons — real TTS, real 3D, measure-don't-guess — that only exist because of everything shipped in between. And thank you, Eric , for a theme that, on the last week of this whole thing, asked us to look back instead of just forward.
Walk the station
Live (walk around, tune in): https://summer-into-ai-2026-zxrm.vercel.app/
Source: https://github.com/myles-mf/summer-into-ai-2026/tree/main/week-4/palace-radio
Everything I've built for the contest: https://myles-mf.github.io/summer-into-ai-2026/
Also written up on my site: https://merlinforge.com/blog/palace-radio-signal-station-week-4/
The cut feature from the very first thing I ever shipped for this contest series finally made it in, four competitions and one very literal measuring tape later. That's turned out to be the actual arc of these weeks for me — not chasing bigger ideas, just finally finishing the old ones properly. This is the last week of Summer into AI. Thanks for making all of us ship it in public.

The golden orb glowing in the 3d scene is quite something!