← All work

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.

  1. 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 out

    Checking every position and orientation in turn.

  2. 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 out

    Purely random changes that ignore how designers work.

  3. 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 out

    A single formula for the best arrangement.

  4. 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

room and objectscandidate layoutsfailed, regeneratebest layoutInterior design softwareClient product, 3D visuals andfrontendLayout generatorBuilds and mutates candidatelayoutsDesign rule scoringClearance, circulation,grouping, alignment, rhythm
Client's existing systemBuilt by DaticsAI modelThe module only proposes layouts scored against explicit rules; the client's product decides how they are shown.

What we built

Layout generator

A Python module that builds candidate layouts for a given room and changes them through designer style moves.

02

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

Python

Also in the stack

Genetic algorithmsRule based fitness functions

How it shipped

  1. Fixed first task

    A short, fixed scope optimization task to prove the approach on real room layouts.

  2. 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.

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.

Book a 30-minute Product Review