Hi Tim — happy to share. I’ve attached a generic version of the template we built for a residential villa (example data only, our project figures removed). How we prepared it 1. Take-off from the drawings. The designer’s electrical sheets were vector PDFs, so instead of counting by hand we extracted the symbols programmatically (AI-assisted, Claude): each symbol was classified against the drawing legend (socket, socket with lid, USB, 1/2-gang, two-way, intermediate, appliance isolator, etc.), adjacent symbols were grouped into wall locations, and each group was allocated to a room. We cross-checked the result against an independent manual count and against two supplier quotations — the supplier offers turned out to be well off the drawings, which was the main reason for doing this. 2. One register as the single source. One row per group on the wall (room, drawing ref, composition, mounting height, count per item code). Every summary — by room, by floor, by item, frames, back boxes — is a formula off that register. 3. Composite rate per point = [(fitting + back box) × (1 − discount) + (1st fix h + 2nd fix h) × labour rate] × (1 + overhead) × (1 + margin). In our case the supplier priced “complete points” (box + insert + plate + frame), so we split the back box out — the boxes are needed on site at 1st fix, months before the fittings. 4. Two finishes. The client wanted the design finish only where it’s visible, with a cheaper finish behind appliances and inside joinery. So the finish is set per room by default and can be overridden per group. 5. Separate extracts. The full workbook is ours. The client and the interior designer got a one-page, plain-language list by room, with no item codes and, for the designer, no prices. Lessons learned - Count groups and points. With BS sockets in some premium ranges every point has its own box and frame (no multi-gang frames), so 4 points = 4 boxes = 4 frames. Check the manufacturer’s data before assuming otherwise. - Flag missing prices explicitly instead of leaving zeros in the total. - The labour hours in the template are placeholders — replace them with your own norms.