# Service-estimate calculator specification and worksheet Proposed companion guide: https://www.overskill.com/learn/design-a-service-estimate-calculator This is an editable specification, not a working browser calculator. All Clear Desk amounts are fictional USD inputs for arithmetic, not market rates or a price offer. No quote is saved, sent or accepted by completing this worksheet. ## 1. Define your estimate's scope Service / one job the estimate covers: Included work / excluded work: Currency / rate version / person responsible for rates: Inputs the customer knows: Inputs needing inspection or human review: Supported ranges and the reason for each: Where the minimum applies (base only or after options): Money precision / rounding policy: Next step after a provisional estimate: Sample: one routine office-cleaning visit. Exclude travel, parking, tax, exterior glass, specialist work and conditions requiring inspection. Version sample-2026-10-09. Use one currency, USD, with rates expressed to at most two decimal places. Rates may be explicitly zero, never blank; the reference limit is $10,000.00 per setting, a technical limit rather than a suggested price. ## 2. Record the inputs | Field | Sample | Allowed sample values | Your choice | | --- | --- | --- | --- | | Floor area | 900 | Whole square feet, 1–5,000 | | | Bathrooms | 2 | Whole count, 0–12 | | | Interior glass panes | 8 | Whole count, 0–30 | | | Breakroom deep clean | Yes | Explicit Yes or No | | | Specialist work / uncertain scope | No | Yes requires review; choice required | | | Area rate | $0.08 | Nonnegative USD, max two decimals | | | Bathroom rate | $18.00 | Same | | | Minimum base-visit charge | $95.00 | Same | | | Glass-pane rate | $3.50 | Same | | | Breakroom option price | $25.00 | Same | | Missing or incorrectly typed input is not zero. Quantities below their lower bound or fractional quantities need correction. Otherwise valid quantities above the sample maximum need review. Do not extrapolate an automatic total. ## 3. Freeze the calculation Convert each rate to exact integer cents. Whole quantities × cent rates require no rounding under this specification. Reject more precise rates such as $0.085. 1. area_line = area × area_rate 2. bathroom_line = bathrooms × bathroom_rate 3. base_subtotal = area_line + bathroom_line 4. minimum_adjustment = max(0, minimum_base − base_subtotal) 5. glass_line = panes × glass_rate 6. breakroom_line = breakroom_price when selected; otherwise 0 7. total = base_subtotal + minimum_adjustment + glass_line + breakroom_line Validate required types and values first. If valid, check maximum quantities and specialist/uncertain scope. Only then calculate. Any correction or review outcome has no numeric total. Clear a previous valid result when an input becomes invalid. ## 4. Reproduce the itemized result | Line | Ordinary visit: 900 sqft, 2 baths, 8 panes, breakroom Yes | Small visit: 400 sqft, 1 bath, 0 panes, breakroom No | Small plus 8 panes | | --- | ---: | ---: | ---: | | Area | $72.00 | $32.00 | $32.00 | | Bathrooms | $36.00 | $18.00 | $18.00 | | Base subtotal | $108.00 | $50.00 | $50.00 | | Minimum adjustment | $0.00 | $45.00 | $45.00 | | Glass | $28.00 | $0.00 | $28.00 | | Breakroom | $25.00 | $0.00 | $0.00 | | Provisional total | **$161.00** | **$95.00** | **$123.00** | Specialist/uncertain scope is No in all three examples. The minimum applies to the base visit before options. Keep the subtotal visibly separate from charge lines; do not add it a second time when totaling the displayed itemization. Your input quantities / choices: Your rate version: Your itemized calculation: Your total or reason no total is supplied: Your exclusions / next action: Reviewer / date: ## 5. Compare test cases Each change below starts from the ordinary visit unless the row says otherwise. An unspecified rate uses the sample rate sheet. No observed app results are claimed. | ID | Inputs or change | Expected | Observed / evidence | | --- | --- | --- | --- | | E01 | Ordinary visit | Provisional $161.00 | Not tested | | E02 | 400 sqft, 1 bath, 0 panes, breakroom No | Provisional $95.00 | Not tested | | E03 | E02 plus 8 panes | Provisional $123.00 | Not tested | | E04 | 900 sqft, 0 baths, 0 panes, breakroom No | Provisional $95.00; zero optional counts accepted | Not tested | | E05 | Area 0 | Needs correction; no total | Not tested | | E06 | Bathrooms −1 | Needs correction; no total | Not tested | | E07 | Area 900.5 | Needs correction; no total | Not tested | | E08 | Panes missing | Needs correction; no total | Not tested | | E09 | Area 5,001 | Needs review; no total | Not tested | | E10 | Specialist/uncertain scope Yes | Needs review; no total | Not tested | | E11 | 5,000 sqft, 12 baths, 30 panes, breakroom Yes | Provisional $746.00 | Not tested | | E12 | Area rate −$0.08 | Setup needs correction; no total | Not tested | | E13 | Minimum setting missing | Setup needs correction; no total | Not tested | | E14 | Area rate $0.085 | Setup needs correction; no silent rounding | Not tested | | E15 | All five rates explicitly $0.00 | Provisional $0.00; show the deliberately zero rates | Not tested | | E16 | Specialist/uncertain-scope choice missing | Needs correction; no assumed No | Not tested | | E17 | Panes 31 | Needs review; no total | Not tested | | E18 | Rate setting exceeds $10,000.00 | Setup needs correction; no total | Not tested | Also test: a valid result followed by a blank field must clear that result; changing only E02's pane count from 0 to 8 changes $95.00 to $123.00; no personal information is required to see the answer. Test phone/keyboard use in the actual app. Build version / tested at: Failed or untested case / owner / next action: Saving quotes, downloading a quote, sending messages, payments and reservations are outside this specification. If added, define and test them separately. No arithmetic result alone proves those features work.