A rough scale can help someone before consultation, but one area input cannot establish a site-specific quotation. I examined the actual consultation screen’s range calculation and wording to define the promise between those two stages.

Narrow the result name to the available input

The source screen calculates a range from area and selected conditions. Short input helps a first inquiry, but does not establish all location, installation or contract details. I wanted to preserve the low entry effort while preventing a rough result from reading as an agreed price.

The independent output therefore keeps quoteConfirmed false. Conditions remain for consultation. Before applying this pattern elsewhere, distinguish facts actually received by the calculation from facts still unknown; a convenient form should not imply that every cost was established.

Publish demonstrative coefficients, not market rates

The new estimate function accepts two synthetic rules. Basic uses coefficients two and three; extended uses three and five, in explicitly synthetic units. Area ten produces ranges twenty to thirty or thirty to fifty. These are fixed checks of rule selection rather than installation costs or claimed savings.

No industry coefficient was copied and presented as a current price. The result includes rule version demo-v1 so its basis remains inspectable. A real integration needs separately approved current rules and a clear account of where those rules apply.

Do not manufacture a result from missing input

Area must be a finite positive number within the example bound. Numeric strings, booleans and unknown rules fail at the core boundary. The demo converts its input explicitly and shows an error; an invalid recalculation also clears the previous handoff context so stale output cannot masquerade as the new result.

Silently substituting a default might look smoother, but it risks showing a calculation for conditions the visitor did not choose. I prefer an explicit calculability boundary here, making it easier to discuss the same number consistently during consultation.

What the endpoints do and do not establish

Two endpoints do not statistically guarantee that a real quote falls between them. This range is simply two declared coefficients multiplied by one area. It is neither a confidence interval nor market research, and its unit explicitly remains synthetic. Familiar range notation can otherwise suggest a stronger promise.

Changing area or rule requires regenerating the range, version and handoff together. Handoff recalculates and rejects a supplied result whose upper endpoint alone was changed. That is a local consistency check, not a server security signature.

A real service must decide how long to retain inputs and how a representative explains adjustments. Those operational policies are not hidden inside this module. A useful opening estimate should let both sides reconstruct the basis of the conversation.

Connect the next action without overstating the result

The shared screen can carry the result into a note, preserving an existing edit by returning a conflict instead of overwriting it. That avoids starting the explanation again while respecting the visitor’s words. No real inquiry or contact is submitted.

Seventeen core tests and bilingual inline-event stub checks passed. They do not validate a physical mobile screen or market quotation. The design aim is a consultation aid in which the range, its limitations and the next confirmation step remain readable together.

When consultation produces another range, explaining which newly confirmed condition changed is more useful than merely calling the first number wrong. That preserves the narrow promise of the opening tool while making the role of a later actual quotation understandable.