Inspiration
Most AI interior design tools produce the same room for everyone: a beige sofa, a monstera, a vaguely Scandinavian lamp. They're technically capable but culturally blind. Your taste isn't a style keyword you type into a box. It shows up in the films you rewatch, the music you save, the cafes you keep going back to, and the posts you bookmark at 2 a.m.
We wanted a designer that actually knows you. Ptah is named after the Egyptian god of craftsmen and builders. The idea: hand it your cultural footprint, and it builds you a room that feels like yours, using real products you can actually buy.
What it does
Ptah turns your taste into a furnished 3D room.
- You share your taste. Upload your Instagram data export (saved posts, likes, saved music) and/or add things you love with a Qloo-powered search.
- An agent works out what you love. It reads through your posts (over a thousand in our test export, mostly memes) and finds the lasting themes underneath. In our case: Studio Ghibli and Joe Hisaishi, climbing, NYC, manga, eclectic music, art. Every entity it keeps is checked against Qloo.
- Qloo turns taste into a design brief. This is the cross-category step that only Qloo makes possible: from films and music to decor and ambience (Classic, Rustic, Cozy, Artistic…), NYC places with interiors you'd love, local shops that fit your taste, a ranking of home brands for you, and discovery picks you haven't saved yet.
- Ptah designs the room. A palette, materials, lighting mood and a list of pieces, each with a "why" chain. For example: Spirited Away + Joe Hisaishi → Classic decor (Qloo affinity 0.83) → walnut sideboard.
- It finds real products. Every piece is matched to real listings through Google Shopping, scored for cohesion with the room (palette, materials, scale, and art chosen as a set), with direct store links and alternatives you can swap in.
- It lays out and lights the room. A constraint solver places furniture around doors, windows and walkways. Lighting is designed in ambient, task and accent layers and checked scene by scene (Evening, Reading, Night).
- You explore it in 3D. Orbit the room, switch lighting scenes, turn the warmth dial and watch the bulb glow, change the floor and wall color, click any piece to see why it was chosen and where to buy it.
While it works, a live progress screen shows each stage, with indicators that pulse whenever the agent is talking to Qloo, the LLM or the shopping search.
How we built it
- Taste extraction: a DSPy Recursive Language Model (RLM) that explores the full Instagram export in a sandboxed Python REPL instead of stuffing it into a prompt, with Qloo search tools it calls to verify every candidate.
- Qloo: entity search, Insights with explainability, taste analysis on decor and ambience tags, place recommendations with location and category filters, and brand ranking with
filter.results.entities(Qloo has no furniture category, so we rank a curated home-brand catalog against your taste). - Products: SerpApi Google Shopping, with a cohesion scorer using CIEDE2000 color distance against the room palette, material and style matching, artwork cut-out and aspect fitting for prints, and a strict gate so a real product only replaces a designed piece if it fits.
- Layout: a solver inspired by Holodeck and LayoutVLM. The design step produces spatial intent ("against a wall," "in front of the sofa," "on shelf 2"), and deterministic code enforces collisions, door swing, window and walkway rules.
- Lighting: an approximate light-level model on a floor grid, evaluated per scene and per layer, with focal-point checks for accent lighting.
- Frontend: React, Vite, three.js and react-three-fiber. Furniture is procedural, sized from real dimensions and colored from the product photo. Lamps are real light sources. The visual identity, "Ostracon," presents the app as an architect's drawing set.
- Backend: FastAPI with a background job pipeline and Server-Sent Events for live progress.
Challenges we ran into
- LLMs inventing results. A free model sometimes wrote its own fake "Qloo results" instead of waiting for the real tool output. We made it impossible to submit invented entities: the output schema validates every ID against what Qloo actually returned during that run, and rejections go back to the model as type errors it has to fix.
- No furniture in the taste graph. Qloo knows films, music, places and brands, not sofas. The breakthrough was taste analysis on Qloo's decor and ambience tags, plus ranking home brands, to bridge cultural taste and interiors.
- Noisy data. 830 saved posts came from 775 different accounts, so grouping by account was meaningless. Taste lives in captions and hashtags, not in who posted.
- Cohesion versus "best match." Early on, a real product replaced our designed indigo sofa with a cream one. We rebuilt product selection around cohesion with the whole room, not single-item relevance.
- 3D lighting bugs. A subtle rendering issue turned the whole scene white whenever you hovered over anything. We tracked it down to the environment lighting being rebuilt on every update.
Accomplishments that we're proud of
- The room genuinely reflects a person's taste, and every piece explains why it's there, traced back to Qloo signals.
- Lighting treated as design, not decoration: three layers, scene-by-scene checks, and controls that feel physical (a warmth dial with a bulb that glows as you turn it).
- Real products with direct store links, chosen as a cohesive set rather than one search result at a time.
- A guardrail system that makes hallucinated entities structurally impossible, not just discouraged.
- A distinctive visual identity instead of the default AI-app look.
What we learned
- Taste is cross-category. The most interesting design signals came from music and film, not from posts about interiors. That's exactly where Qloo shines.
- LLMs should decide intent, and deterministic code should enforce reality: for layout, for physics and for which entities actually exist.
- "Cohesive" beats "relevant." A room of individually great matches can still look wrong together.
- Showing the agent working (stages, pulsing service indicators, "why" chains) builds trust far more than a spinner does.
What's next for Ptah
- Scan your real room with an iPhone (Apple RoomPlan) and design for your exact walls, doors and windows.
- More taste sources: YouTube history, Spotify and Pinterest.
- Taste directions: several readings of the same person ("Warm analog," "Tokyo minimal") to compare side by side.
- Real 3D models for hero pieces from image-to-3D, and AR preview in your actual room.
- Budget-aware design and shopping-list export.
Built With
- dspy
- fastapi
- llm
- openrouter
- python
- rlm
- serpapi