OWN-01Made-to-measure wallpaper

Inchwall: the last panel is where the trade is won or lost.

Wallpaper is sold in rolls. A wall is never a whole number of rolls. This store sells printed area to the inch, which means the arithmetic is the product: how the wall splits into panels, what that costs, and what a fixed-panel shop would have made you buy instead.

OWN-01-AScope of work

What the business does.

Wallpaper and murals printed to the size of one specific wall, in Sacramento, California. The customer enters a wall width and height, sees the panel layout on that wall, and pays for printed square feet rather than for rolls.

Three buyers, and each of them has its own route in the application: a homeowner doing one room, a designer or installer on a trade programme with its own samples and specification pages, and a commercial job for an office, a restaurant or an event, which is run as a project rather than as a basket.

The problem shape.

A roll is a fixed width and a wall is not a multiple of it. Buy rolls and you pay for what you throw away; buy fixed panels and the last one at the edge is a sliver that everybody in the room can see.

So the calculation is the offer, and it is not a calculation any storefront product has. It has to know what a roll is, what an overlap is, what bleed is, what a minimum order is, and what a print file has to look like at the end of it.

OWN-01-BDetail callouts

What was built.

A layout and pricing engine of pure functions, fed by material parameters from the database, with the tests beside it. The storefront is the thin part.

01

A layout engine that knows what an offcut is

The wall splits into vertical panels, each a roll wide except the last, which is the remainder plus the overlap it carries onto its neighbour. One constant decides the interesting case: a last panel under eight inches is an offcut rather than a panel, and the same printed width is then divided evenly across the same number of panels. A ten by eight foot wall on a twenty-four inch material arrives as six panels of twenty and a half inches instead of five full ones and a three inch sliver. No product you can rent has an opinion about this, because no product you can rent knows what hanging one feels like.

Proof

lib/engine/layout.ts · BALANCE_BELOW_IN

02

Balancing is free, and that is the point

The evenly divided version has the same total width, the same printed area, the same billable square footage and the same price to the cent. Only the cuts move. The decision is made entirely in favour of whoever has to hang it, and it costs the customer nothing, which is why it can be the default rather than an upsell.

Proof

lib/engine/layout.ts · layoutPanels

03

The remainder is handed out a hundredth of an inch at a time

When the panels are balanced the leftover width is spread across them one hundredth of an inch at a time rather than piled onto one. That keeps two invariants the rest of the pipeline depends on: no panel can come out wider than the roll it prints on, and no two panels differ by more than a hundredth of an inch, so every seam carries exactly one overlap and the print step can infer that overlap from the first pair.

Proof

lib/engine/layout.ts · balanced branch

04

Material parameters live in the database, not in the code

Roll width, overlap, bleed, maximum panel length, price per square foot and minimum order are properties of a material, read at runtime. Adding a material is a row. The engine itself is pure functions over those numbers, which is why each one has a test file next to it: layout, pricing, waste, quote, units, placement and print specification.

Proof

lib/engine/pricing.ts · lib/engine/types.ts

05

The comparison quotes the competitor's own published rate

A separate module works out how much material a fixed-panel shop would have made you buy for the same wall, and returns the waste in square feet and as a percentage. The rate it compares against is defined once, used by the home page, the calculator and the comparison page alike, and carries a note saying it is a representative published price for two by four, two by eight and two by twelve foot panels as of September 2026, not one named shop. The pages repeat that in words.

Proof

lib/engine/waste.ts · lib/engine/fixed-offer.ts

06

The trade discount is a rule, not a favour

The designer and installer programme has its own sections for samples and specification, and its discount is a field on the price rules that the pricing engine applies. Nobody types a number into a quote, which is the difference between a trade programme and a habit of knocking something off.

Proof

lib/engine/pricing.ts · PriceRules.tradeDiscountPct

OWN-01-CReference

Where this lives.

Read from the repository on 16 September 2026. Every capability above names the file that implements it, and the engine's behaviour is pinned by tests in the same directory.

This sheet claims no traction, because there is none to claim yet. The business is deliberately in validation before it buys its printer, with a written evidence threshold and a decision rule, and it has no orders, no revenue and no reviews to publish. What it demonstrates is that the studio designs product and manufacturing logic rather than storefronts. It is also not a client: Inchwall is Eugene Romanov's own business, Orium Studios built its store and its engine, and it does not change the number of paying clients quoted anywhere on this site.

System
Inchwall
Repository
inchwall store
Trade
Made-to-measure wallpaper

Files named on this sheet

  • lib/engine/layout.ts
  • lib/engine/layout.test.ts
  • lib/engine/pricing.ts
  • lib/engine/waste.ts
  • lib/engine/fixed-offer.ts
  • lib/engine/print-spec.ts
  • components/site/footer.tsx

This one is not a CRM and shares no code with the studio's CRMs. What it shares with them is a habit: the rule the money depends on lives in one module, as pure functions with tests beside them, and the storefront reads it rather than reimplementing it.

Back to the drawing index

OWN-01-DWhat it costs

What a system like this costs.

A custom CRM built around how your business actually works starts at $4,500. One of the systems that already runs, fitted to your process, starts at $2,500. Both are floors, and the build is priced by the work.

Custom CRM
From $4,500
Fitted System
From $2,500

SHT-10Issued for construction

Start with the free check.

Three questions, one page the same day, and a 15-minute call if you want one. If the answer is that you do not need us yet, the page says that.

  • Where your business shows up, and where it does not, including what ChatGPT answers
  • The three biggest leaks on the path from the search to the booked job
  • The one thing to fix first, and whether you can do it yourself
  • What the next step would be, with its published price
Check my business →

About a minute · one page the same day · no card