Resources • quotes • pricing • CSV

Pricing and quotes: line-item setup with CSV

A practical guide to mapping inspection outcomes to quote line items, keeping pricing consistent, and using CSV workflows for bulk maintenance.

7‑day trial. No card required. Cancel anytime.

Last updated:

Pricing & quotes · CSV

Consistent inspection findings produce consistent quote scope —
without retyping

A practical guide to mapping inspection outcomes to quote line items, keeping pricing consistent across inspectors and buildings, and using CSV workflows for safe bulk maintenance.

Goal 01

Map outcomes

Tie common fail reasons to quote line items so the same finding always produces the same scope, wording, and pricing. Consistent mapping removes the "which line item should this be?" decision from every inspector on every job.

Finding → line item · automatic
Gap at bottom >3mm Closer defective Seal missing Replace bottom seal — per door Adjust / replace closer — per door Replace intumescent seal — per door Consistent ✓

Goal 02

Bulk update

Use CSV export/import for controlled bulk changes — editing pricing, descriptions, and units across many line items at once. Export first as a dated snapshot, edit in a spreadsheet, then import back. Safe, versioned, and reversible.

Export · edit · import safely
Export snapshot + date Edit spreadsheet keep cols Import additive safe ✓ Dated export = versioned backup before any change

Goal 03

QA before sending

Review totals, units, and evidence links before issuing PDFs. The mapping gets you most of the way — but a quick check that line items reflect the actual findings, and that any client-specific rules are applied, catches errors before they reach a client.

Check · confirm · send
Quote v1 · 17 doors Replace bottom seal × 9 Adjust closer × 4 Investigate frame [TBC] QA passed ✓ Totals · units · evidence checked · ready to issue

Teams quoting from findings

Map inspection outcomes to line items so the same issue produces the same scope — no "which line item is this?" decision on every job.

Operations leads

Enforce naming and units so totals and exports stay comparable across sites — and quote outputs don't drift depending on which inspector captured the findings.

Anyone maintaining pricing

Use CSV exports as versioned snapshots for safe bulk changes — edit in a spreadsheet, import back, and spot-check outputs before the next job.

Line item mapping

The same finding always produces the same suggested
scope, wording, and pricing

Three components working together: inspection outcomes as inputs, a mapping rule that connects each reason to a line item, and consistent quotes as outputs. Set it up once — every building benefits.

Inputs → mapping rule → outputs

Step 01 · Inputs

Inspection outcomes & fail reasons

Captured on site: the outcome (pass/fail), the fail reason ("gap at bottom exceeds threshold", "closer not self-closing"), and the door identity. These are the raw inputs that the mapping turns into scope.

Pass / Fail Fail reason Door ID + location

Step 02 · Mapping

Rule linking reason to line item

A rule that connects each fail reason to a quote line item — description, unit, and price. "Gap at bottom" maps to "Replace door bottom seal — per door — £X". The same reason always maps to the same line item, by every inspector, on every job.

Reason → description Reason → unit Reason → price

Step 03 · Outputs

Consistent quotes and PDFs

Scope that reads the same way across buildings, inspectors, and time — comparable totals, consistent wording, and pricing that clients recognise across jobs. Approvals get faster when clients have seen the same line items before.

Consistent wording Comparable totals Faster approvals

Start with your top 20 fail reasons — the ones that appear on every building. Full coverage comes later; minimum coverage makes the first building go smoothly.

Inspection outcome → mapping → quote line item 01 · Site capture · FD-027 FAIL Gap at bottom exceeds 3mm High mapping rule applied 02 · Mapping rule · applied automatically Fail reason Description Unit · price Gap >3mm Replace bottom seal per door Closer defective Adjust / replace closer per door quote line item generated 03 · Quote line item · FD-027 Replace door bottom seal per door evidence: FD-027 £45.00 Same finding → same line item Every inspector · every building · every time 20 Start with top 20 fail reasons Covers the majority of scope on most buildings

Naming convention · line item descriptions

Four parts · in this order · every description

Part 01

Action

Start with the verb

What will be done to the door or component.

Adjust · Replace · Repair · Install

Part 02

Component

Name the part

The specific component being worked on — not the whole door.

closer · smoke seals · intumescent

Part 03

Unit

Make units explicit

Keep "per door" vs "per leaf" vs "per item" unambiguous — mixed units create totalling errors.

per door · per leaf · per item

Part 04

Stability

Keep wording stable

Avoid near-duplicates that look the same but use different phrasing — they fragment reporting over time.

No: "Replace seal" + "Seal replacement"

Quick start checklist

Get minimum viable pricing in place for your first building —
then iterate

Three steps that get you from "no mapping" to "quoting your first building cleanly." You don't need perfect coverage before the first job — you need enough to quote the most common findings without rebuilding scope manually.

Three steps · start lean · iterate after

Step 01

Agree units and naming

Decide how work is priced before building any mappings — this decision shapes everything downstream. Inconsistent units create totalling errors that are tedious to find later.

Use short, client-readable descriptions — not internal codes.
Avoid mixing "per door" and "per leaf" without a clear rule for when each applies.
Agree whether work is priced per component, per door, per hour, or per item — write it down.

Step 02

Map common fail reasons

Link your most common inspection outcomes to the quote items you want suggested automatically. Start with remedials you actually deliver — gap seals, closers, hinges, intumescent strips — not an exhaustive catalogue.

Start with the top 20 fail reasons that appear on most buildings.
Keep "investigate / open up" as a separate line item — never fold it into other scope.
Document any client-specific pricing exceptions now, before they become tribal knowledge.

Step 03

Run your first building

Create a quote from real findings and review where the mapping under- or over-suggested scope. First-building feedback is the fastest way to improve mappings — better than trying to build a perfect setup in advance.

Check that wording and units matched client expectations.
Iterate on descriptions and units based on real outputs.
Add any client-specific pricing rules discovered on the first job.

You don't need to get pricing perfect before the first job. A minimum viable set for common fail reasons, run once, generates better feedback than a week of planning in advance.

Minimum viable pricing · building up Step 1 · Units + naming agreed per door ✓ per item ✓ investigate sep. ✓ Short · client-readable · no internal codes Step 2 · Top fail reasons mapped Gap at bottom >3mm → Replace bottom seal · per door Closer defective → Adjust / replace closer · per door Intumescent seal missing → Replace intumescent seal · per door Hinges defective → Replace hinges · per door Unknown / investigate → Investigate / open up [TBC] ! + 16 more mapped · top 20 complete Step 3 · First building · Riverside Estate 17 doors mapped scope 1 manual override Feedback → iterate MVP pricing ready Consistent quotes from findings · no retyping
CSV workflow

Export first as a dated snapshot — edit —
then import back safely

Use CSV for controlled bulk changes when you have many line items to update at once. The export is your backup and your audit point; the import is additive so existing live mappings stay intact.

Three steps · export · edit · import

Step 01

Export a dated snapshot

Before making any bulk changes, export the current state as a CSV. Treat it as a versioned backup — date the filename, store it alongside your other exports. If anything goes wrong with the import, you have a clean restore point.

Export first · always Date the filename Backup before changes

Step 02

Edit in a spreadsheet

Open the export in a spreadsheet, make your changes, then save back as CSV. Keep the column order intact and do not edit IDs — changing either breaks the import. Keep descriptions simple; avoid commas inside field values.

Keep column order Do not edit IDs No commas in fields

Step 03

Import — additive, not destructive

Fire Door App imports are additive — new rows are added, duplicate rows are skipped, and existing live mappings are left untouched. To edit an existing mapping, use Settings directly. Spot-check 5–10 rows in the UI after every import.

Adds new · skips dupes Existing rows safe Spot-check after import
CSV lifecycle · export → edit → import Live pricing settings · 47 mappings Replace bottom seal · per door · £45.00 Adjust closer · per door · £38.00 … Export CSV csv pricing-2026-01-28-snapshot.csv 47 rows · dated · backup ✓ Open in spreadsheet Editing · keep columns intact id · fail_reason · description · unit · price 12 · Gap >3mm · Replace bottom seal · per door · 47 13 · Closer · Adjust closer · per door · 38.00 … Do not edit IDs ✗ Keep col order ✓ Import back Import result · additive 3 added new rows 44 skipped dupes Existing safe ✓ untouched Spot-check 5–10 rows in the UI after every import

Safety checks · before you import

Five checks that prevent the most common import failures

Column order intact. Keep the exported columns in the same order — reordering columns is the most common cause of import failures.

IDs unchanged. Do not edit existing ID values — changing them creates orphaned rows that can't be reconciled with existing settings.

Units and currencies consistent. Mixed units ("per door" and "per leaf" in the same column without a rule) create totalling errors in quotes.

No commas inside field values. Commas inside a description field (e.g. "Adjust, replace or install") break CSV parsing. Keep descriptions simple in CSV; use the UI for complex wording.

Spot-check after import. Generate a test quote from sample findings and review that totals, descriptions, and units look right before the next job.

Line item naming · recommended convention

Action · component · unit · keep wording stable

Part 01

Action

Start with the verb

Adjust · Replace · Repair · Install — makes the scope immediately clear.

Part 02

Component

Name the part

closer · smoke seals · intumescent · hinges — not "door work" or "general repairs".

Part 03

Unit

Explicit units

per door · per leaf · per item — keep it unambiguous so totals stay correct.

Part 04

Stability

Stable wording

Avoid near-duplicates — "Replace seal" and "Seal replacement" create fragmented reporting over time.

Maintenance, pitfalls & FAQ

Pricing drifts unless you choose a simple rule
for changes and stick to it

Three maintenance habits, four pitfalls that cause the most pricing pain, and quick answers on bulk mapping, CSV failures, regional variations, and platform scope.

Ongoing maintenance

Three habits that keep pricing consistent over time

1

Version the change

Keep a dated CSV export every time you do bulk changes — it's both a backup and an audit record. "What did pricing look like before we updated it in February?" becomes answerable.

2

QA after updates

Generate a test quote from sample findings and review totals, descriptions, and units after any change. The import might have worked; the mapping might still be wrong.

3

Keep exceptions explicit

Document client-specific uplifts and regional variations so they're not tribal knowledge. When the person who "knows" the rule leaves, the exception becomes a mystery.

Common pitfalls · where pricing breaks down

CSV integrity

Breaking CSV imports

Wrong column order, commas or quotes inside field values, edited IDs, or inconsistent unit spellings are the most common causes. Fire Door App imports are strict — a single malformed row can prevent the whole file being accepted.

Fix: keep the exported column order, avoid commas inside descriptions, don't touch ID values, and spot-check in the UI after every import.

Units

Mixed units in quotes

Mixing "per door" and "per leaf" without a clear rule means totals drift depending on which inspector mapped the finding. A two-leaf door quoted per leaf costs twice what the client expected if the rule isn't explicit.

Fix: agree a unit rule before mapping — "all fire door work is per door unless the component is priced per leaf" — and document it.

Exceptions

Untracked client exceptions

Client-specific uplifts — a 10% premium for out-of-hours, a negotiated rate for a housing portfolio — become tribal knowledge when they're not documented. Quote accuracy depends on whoever "knows" the exception being involved.

Fix: keep a short exceptions log alongside your CSV exports — client, rule, date agreed. Versioned so you can see when the rate changed.

Consistency

Ad-hoc scope creep

When the same type of work gets quoted with different line item descriptions across jobs — because the mapping wasn't found or didn't exist — reporting becomes inconsistent. "Replace seal" and "Door seal replacement" are the same work, priced differently.

Fix: if ad-hoc line items become common, add them to the mapping. Review after each new building type and fill the gaps.

Common questions · quick answers

Yes — CSV export/import is designed for this. Imports are additive: existing mappings are skipped, new rows are added. This means you can seed a fresh workspace, extend an existing set, or add a batch of new fail reason mappings safely without risk to live settings.

To edit existing mappings — change a price, update a description — use Settings directly. The CSV import only adds; it doesn't overwrite. Export first, make additions in the spreadsheet, import back, and spot-check.

Import = additive only Edit existing → use Settings Export first · always

In order of frequency: wrong column order (reordering columns in the spreadsheet breaks parsing even if the data is right), commas or quote marks inside field values (a description like "Adjust, replace or install closer" contains a comma that splits the field), edited ID values, and inconsistent units or currencies.

The simplest rule: only edit the value columns (description, unit, price). Leave ID and structural columns untouched. If you need a complex description, enter it via the Settings UI after the import, not in the CSV.

Column order #1 cause Commas in fields #2 Only edit value columns

Start with one baseline set, then agree a rule for variations before exceptions accumulate. Common approaches: client-specific uplifts applied as manual overrides on individual quotes; regional presets as a separate named set; or separate workspaces for distinctly different pricing models.

The key is keeping the rule documented — not assumed. "We add 15% for out-of-hours" is a rule. "Mike knows what to charge for that client" is a risk. Write the rule, version it when it changes, and make it findable by anyone quoting.

One baseline · variations documented Override at quote level Version rule changes

In pricing settings (where you manage mappings, import/export CSVs, and set defaults) and in quote building (where mapped fail reasons appear as suggested line items when you convert inspection findings to scope).

Fire Door App supports the workflow — consistent mapping, consistent suggestions, consistent outputs. It does not replace your commercial judgement on pricing levels, client negotiations, or what scope is appropriate for a given finding.

Pricing settings + quote builder Platform: workflow support Your team: commercial judgement

Quick facts

Pricing & CSV at a glance

Mapping

Fail reason → description + unit + price. Same finding = same line item, every time

Naming

Action · component · unit. Stable wording — no near-duplicates

CSV workflow

Export dated snapshot → edit (keep cols) → import additive → spot-check

Safety

Never edit IDs · no commas in fields · keep column order · spot-check after import

Maintenance

Version changes · QA after updates · keep exceptions documented not tribal

Platform scope

Workflow support — not commercial judgement. Pricing decisions remain yours

Get started

Quote consistently across one real building

Set up a baseline mapping, run a pilot inspection, then generate a quote without rebuilding scope in spreadsheets.

7-day trial No card required Cancel anytime
Get started

Quote consistently across one real building.
Baseline mapping, pilot inspection, then quote from the record.

Set up a baseline mapping, run a pilot inspection, then generate a quote without rebuilding scope in spreadsheets.

7‑day trial No card required Cancel anytime