Skip to content
← All solutions
Division 22 · PlumbingAvailable now

Plumbing takeoff & estimating

Fixtures, runs, risers, and waste - typed from the plumbing sheet.

Plumbing takeoff is half symbol counting, half network topology. Kamai counts the fixtures and reconstructs the supply, waste, and vent network as a typed graph.

Fixture units, pipe lengths, riser counts, and roof-vent terminations - each lives in a different sheet, drawn in a different convention. Kamai stitches them together.

The output is a structured plumbing model: every fixture, every run, every connection - keyed back to the room, the riser, and the sheet of origin.

What Kamai parses

Inputs Kamai reads on plumbing work.

Plumbing floor plans (P-series)
Fixtures, drains, traps, cleanouts, vents.
Riser diagrams
Domestic hot/cold, sanitary, vent - reconstructed as a typed graph.
Plumbing schedules
Fixture, equipment, and water-heater tables.
Isometric drawings
When isos are present, Kamai reads them - and reconciles against the plan.
Symbols typed automatically

Every device, every fixture, every member - keyed to the legend.

Kamai reads the legend on the plumbing sheet and types each symbol it counts.

Water closet
Lavatory
Kitchen sink
Floor drain
Cleanout
Hose bibb
Shower
Tub
Urinal
Mop sink
Water heater
Backflow preventer
Output schema

What lands in your pipeline.

Every plumbing detection emits a typed record. Here's the shape.

type PlumbingDetection = {
  fixture_id: string;
  type: string;
  room_id: string;
  system: enum(supply | waste | vent | gas | storm);
  size: string?;
  sheet: string;
};
Other trades

Other trades.

  • The same models, applied per trade.
  • Every detection carries provenance back to the sheet.
  • Drop-in via API, app, or direct integration.

Plumbing takeoff - minutes, not days.

Bring a plumbing sheet. See what Kamai extracts.

Minutes, not days. One real drawing. Sub-millimeter precision.