Getting started
- Open the working prototype.
- Select a supported room type and style.
- Enter a planning budget from $500 to $100,000.
- Optionally upload a PNG, JPEG, or WebP image up to 5 MB.
- Review the layout notes and illustrative allocations.
Design credits
The prototype reports five Design credits per completed concept. This is a proposed consumption measure, not evidence of a live billing system.
Rooms and style directions
Four room types and four style directions are supported. Each room type carries a fixed circulation reminder; each style direction carries a fixed material note. These are bounded editorial rules, not generated content.
| Room type | Planning focus |
|---|---|
living-room | Keep the primary seating path open; orient the anchor piece toward the room's focal point. |
bedroom | Preserve circulation on both sides of the bed; keep storage outside the entry path. |
office | Place the work surface to limit screen glare; leave a clear route behind the chair. |
dining-room | Maintain comfortable chair clearance around the table; keep the serving path unobstructed. |
Style directions: warm-modern (warm wood, restrained contrast, one tactile accent), calm-natural (muted natural materials, low-contrast layers), focused-minimal (closed storage, simple silhouettes), and soft-contemporary (clean forms, rounded edges, limited palette).
Budget allocation model
The budget is split across three furniture categories per room type using fixed shares. The final category always receives the exact remainder, so the three amounts sum to the submitted budget with no rounding drift.
| Room type | Category 1 | Category 2 | Category 3 (remainder) |
|---|---|---|---|
living-room | Seating · 48% | Lighting · 17% | Rug & storage · 35% |
bedroom | Bed · 52% | Bedside · 20% | Lighting & textiles · 28% |
office | Desk · 32% | Chair · 43% | Storage & lighting · 25% |
dining-room | Table · 50% | Chairs · 34% | Lighting · 16% |
Worked example. A $3,200 living-room budget returns Seating $1,536, Lighting $544, and Rug & storage $1,120 — the remainder rule guarantees $1,536 + $544 + $1,120 = $3,200 exactly.
Image signals
When a photo is attached, the server derives four bounded observations and nothing more. The photo is a signal source, not a scene the system claims to understand.
| Signal | How it is derived |
|---|---|
| Image resolution | Pixel width × height as a person would view the photo. EXIF display orientation is applied, so a rotated phone photo reports its visual dimensions. |
| Photo orientation | portrait, landscape, or square, computed from the display dimensions. |
| Average photo color | The mean color of a downsampled copy, reported as a hex value. |
| Brightness category | Relative luminance of the average color: dim below 90, balanced from 90 to 184, bright at 185 and above. |
Accepted formats are PNG, JPEG, and WebP up to 5 MB, at most 12,000 pixels per side and 25 million pixels total. Decoding is downsampled before analysis, runs off the event loop, and is limited to a small number of concurrent slots.
Room concept workflow
The server validates the form, derives the bounded image observations above when an image is present, applies the room and style guidance, allocates the supplied budget using the model above, and returns the result to the browser. Responses include the inputs, three layout notes, three allocations with rationales, and the image observations when a photo was provided.
Try it from the terminal
The public demo endpoint accepts the same form the prototype page submits. No key is required; demo traffic is rate limited per client.
curl -X POST https://calvirostudio.com/api/v1/demo/concepts \ -F room_type=living-room \ -F style=warm-modern \ -F budget_usd=3200
Copy the example or swipe horizontally to inspect long lines.
Attach a photo with -F [email protected]. The authenticated integration endpoint is documented in the API reference.
Data handling
Raw upload data may be buffered in memory or temporarily spooled by the web framework while a request is processed. The application does not retain the raw image in project storage after the request. Generated results are held in shared process memory without per-user accounts; only the 500 most recent results are retained, and a process restart clears them all. Do not upload people, documents, account information, or other sensitive material.
Limits and errors
The service fails closed with structured JSON errors:
| Status | Meaning |
|---|---|
422 | Unsupported room type or style, budget outside $500–$100,000, or a file that is not a valid PNG, JPEG, or WebP image. |
413 | Request body above the 6 MB ceiling. The byte stream itself is counted, so the limit cannot be bypassed by omitting Content-Length. |
429 | Demo rate limit reached (12 requests per 60 seconds per client). The response carries a Retry-After header. |
401 / 503 | Missing or invalid key on the protected endpoint, or the protected API is not configured. |
Current limits
The prototype does not infer exact room geometry, generate a redesigned image, query a retailer, verify price or availability, complete a purchase, or replace professional design and safety review.