All articles
How-to

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.

Short answerGive every company one or more MasterFormat codes from a fixed list, store multiple codes per company in a filterable column, and delete the free-text trade column so nobody drifts back to it.

"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

  1. Trade names have no canonical spelling, and the moment a second person edits the list the spellings multiply.
  2. MasterFormat numbers are the same in every spec book in North America.
  3. 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.

CodeTrade
02 41 00Demolition
03 00 00Concrete
04 00 00Masonry
05 12 00Structural steel
05 50 00Metal fabrications, misc. metals
06 10 00Rough carpentry, framing
06 40 00Millwork
07 20 00Insulation
07 50 00Roofing
07 90 00Caulking, joint sealants
08 10 00Doors and frames
08 40 00Glazing, curtain wall
08 70 00Door hardware
09 29 00Gypsum board, steel stud
09 30 00Tile
09 51 00Acoustic ceilings
09 65 00Resilient flooring, carpet
09 90 00Painting
10 00 00Specialties
14 20 00Elevators
21 00 00Fire suppression
22 00 00Plumbing
23 00 00HVAC
26 00 00Electrical
27 00 00Communications, low voltage
28 31 00Fire alarm
31 00 00Earthwork
32 10 00Paving
32 90 00Landscaping
33 00 00Site 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

  1. Freeze the list. Nobody edits for two days. Take one copy; that is now the copy.
  2. Add a Codes column. Keep the old trade-name column for reference, for now.
  3. Sort by the old trade name. The variants cluster, which makes coding fast.
  4. Assign codes from the fixed list using a dropdown or lookup. Two people, two hours, for about 400 companies.
  5. 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.
  6. Delete the old trade-name column. If it stays, people keep filling it in.
  7. 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.

Read next

Sending invitations by hand?

Invite All sends a tracked invitation to every trade on a scope from your own inbox. Four quick taps to see if it fits your team.