How to organize your subcontractor list by CSI division
A practical walkthrough for coding your trade list with CSI MasterFormat, with a 30-code starter list, how to handle subs that span divisions, and the seven-step rebuild.
"Find everyone who does drywall" should be a five-minute filter. On most trade lists it's an archaeology project, because the trade column contains "Drywall," "Dry wall," "Gyp," "Steel stud & drywall," "Interior systems," and "ask Paul."
CSI MasterFormat fixes that. Your specs are already organised by it, your estimate probably is too, and once your trade list is, "who do we invite for 09 29 00" is a filter rather than a conversation.
Why codes and not trade names
- Trade names have no canonical spelling, and the moment a second person edits the list the spellings multiply.
- MasterFormat numbers are the same in every spec book in North America.
- Codes let you filter, count and invite by scope in one step.
You don't have to love MasterFormat. You just have to agree to use it.
Division or section? Decide per trade
MasterFormat has divisions (two digits, like 26 Electrical) and sections under them (like 26 51 00 Interior Lighting). Coding everything to the section is overkill; coding everything to the division is too coarse for the busy divisions.
The rule: division level by default, section level only where you invite different companies.
- Division 26 Electrical: division is fine.
- Division 09 Finishes: no. Drywallers, painters, tile setters and flooring companies are different firms. Use sections.
- Division 23 HVAC: usually division; add 23 09 00 if you invite controls separately.
- Division 03 Concrete: division for most; add 03 30 00 (cast-in-place) and 03 40 00 (precast) if those are different subs in your market.
A 30-code starter list for a commercial GC
Adjust to your market. The point is a finite list to choose from, not codes typed freehand.
| Code | Trade |
|---|---|
| 02 41 00 | Demolition |
| 03 00 00 | Concrete |
| 04 00 00 | Masonry |
| 05 12 00 | Structural steel |
| 05 50 00 | Metal fabrications, misc. metals |
| 06 10 00 | Rough carpentry, framing |
| 06 40 00 | Millwork |
| 07 20 00 | Insulation |
| 07 50 00 | Roofing |
| 07 90 00 | Caulking, joint sealants |
| 08 10 00 | Doors and frames |
| 08 40 00 | Glazing, curtain wall |
| 08 70 00 | Door hardware |
| 09 29 00 | Gypsum board, steel stud |
| 09 30 00 | Tile |
| 09 51 00 | Acoustic ceilings |
| 09 65 00 | Resilient flooring, carpet |
| 09 90 00 | Painting |
| 10 00 00 | Specialties |
| 14 20 00 | Elevators |
| 21 00 00 | Fire suppression |
| 22 00 00 | Plumbing |
| 23 00 00 | HVAC |
| 26 00 00 | Electrical |
| 27 00 00 | Communications, low voltage |
| 28 31 00 | Fire alarm |
| 31 00 00 | Earthwork |
| 32 10 00 | Paving |
| 32 90 00 | Landscaping |
| 33 00 00 | Site utilities |
How to handle subs that do more than one thing
Give the company every code it should be invited under. An interiors firm might carry 09 29 00, 09 51 00 and 09 90 00. Filter to ceilings, they show up; filter to painting, they show up.
- In a spreadsheet: a Codes column with codes separated by commas, filtered with "text contains 09 29." Crude, but it works.
- In a directory tool: a multi-select field, and the filter just works.
The wrong way is a separate row per code per contact. You end up inviting the same person three times.
Coding the list by CSI division in 7 steps
- Freeze the list. Nobody edits for two days. Take one copy; that is now the copy.
- Add a Codes column. Keep the old trade-name column for reference, for now.
- Sort by the old trade name. The variants cluster, which makes coding fast.
- Assign codes from the fixed list using a dropdown or lookup. Two people, two hours, for about 400 companies.
- Look for companies with only one code that you know do more. Add the others. This is the step people skip and then wonder why the ceiling filter returns two firms.
- Delete the old trade-name column. If it stays, people keep filling it in.
- Put the code list on a second tab so everyone knows what to pick.
Two edge cases
Trades that don't map cleanly. Building envelope firms that do air barrier, insulation and cladding: give them every relevant section, or add a house code (07 00 00 "envelope, general") and document it on the code tab. Don't leave it blank.
Cross-border or regional numbering. Keep MasterFormat as your internal key and translate at the spec. Your list is for you.
What you get on bid day
Once the list is coded, inviting a scope is: filter to the code, filter to the region, select all, send. Whether that "send" is forty emails from Outlook or one click in a tool, you've removed the archaeology. That filter-and-send is exactly how Invite All's directory works (Invite All is our product), and it imports a coded spreadsheet directly. The coding is the work, though, and a spreadsheet gets you most of the benefit.
If the list is rough beyond the trade column, rebuild the database first, then come back here.