Interior design software startup
Furniture placed automatically in any room layout, scored against five design rules
A 3D interior design product needed rooms furnished without a designer arranging each scene. We built the module that evolves candidate layouts and scores each on five explicit design rules, so the product team can see why a layout wins.
Retail & E-commerceFurniture layout optimization moduleEngineering delivered by Datics
The challenge
Every room scene in a 3D interior design product had to be arranged by hand, and good layouts follow many soft rules at once.
What we did
We built a Python genetic algorithm that evolves furniture layouts through designer style moves and scores each one against five explicit interior design rules.
The outcome
The product gained a backend module that proposes furniture placements for any room. The client extended the work after the first task and rated it five stars.
- What we built
- Furniture layout module in Python, inside their software
- Method
- Genetic algorithm with designer style moves
- Scoring
- Five explicit interior design rules
- Rating
- 5 stars, after a first task led to a longer contract
The starting point
An early stage startup was building automated interior design and 3D visual shopping software for home decor retailers. The client owned the product, the 3D visuals and the frontend.
What had to change
Someone had to arrange the furniture in every room scene by hand. The software needed to place objects in any layout, a bedroom or a TV lounge, so the result follows design principles and still looks good.
What could not break
- Pure backend logic that plugs into the client's own software
- Processing time kept low, so the starting population stays small and fixed
- The client's product decides how layouts are shown
The calls we made
We treated a good room as a search problem with many soft rules, not a single formula.
- 01
A genetic algorithm for a huge search space
Positions and orientations combine into far too many options to check one by one, so candidate layouts evolve and the best survive.
Ruled outChecking every position and orientation in turn.
- 02
Design moves as mutations
Each change is a move a designer would make: snap to the closest object or wall, connect to a parent object, add children to it, add or remove an object, align, or shift position and orientation.
Ruled outPurely random changes that ignore how designers work.
- 03
Explicit rules as the score
A rule based fitness function scores each layout on clearance, circulation, group relationships, alignment, and distribution and rhythm, so the product team can see why a layout wins.
Ruled outA single formula for the best arrangement.
- 04
A small, fixed population
We kept the starting population small and fixed to hold processing time down; a population that fails the score goes back to generation.
How the system fits together
What we built
Layout generator
A Python module that builds candidate layouts for a given room and changes them through designer style moves.
Design rule scoring
A fitness function that checks free space in front of objects, reachability, distance between objects of the same type, alignment to walls and other objects, and overall rhythm.
How it works
Room in
The client's software passes in a room layout and the objects to place.
Generate
The module creates a small, fixed set of candidate layouts.
Mutate
Each candidate changes through design moves such as snapping, aligning and grouping.
Score
Every layout is scored on the five design rules, and failing populations go back to generation.
Layout out
The best layout is returned, and the client's product decides how to show it.
A closer look
What changed
The client's software gained a backend module that proposes furniture placements for any room, scored against explicit design rules instead of a designer arranging each scene by hand. After the first task the client kept us on for a longer contract and rated the work five stars.
Under the hood
- Datics role
- Engineering delivered by Datics
- Integration
- Backend Python module delivered into the client's own interior design software.
- Boundary
- The algorithm only proposes layouts scored against explicit design rules; the client's product decides how they are shown.
Apps and APIs
Also in the stack
How it shipped
Fixed first task
A short, fixed scope optimization task to prove the approach on real room layouts.
Further iterations
The client extended the optimization work, and we kept refining the moves and the scoring.
Backend only, their product
We delivered pure backend logic into the client's own software, while the client kept the product, the frontend and the 3D visuals.
A fixed task first
A short fixed scope task came first, and the client then extended the optimization work with us in further iterations.
What this unlocked
Because the rules are explicit, new design principles can be added to the score without changing how layouts are generated.
Related work
Have a product with the same kind of constraints?
Tell us what already exists and what you want it to do. We will tell you what it takes.
