You need to learn the laws regarding public bidding in your state. It can be confusing at first but once you know the procedure, it is not hard like anything else.
In Massachusetts, projects estimated to be over 100k a GC must be registered and certified with the State - Dept of Capital Asset Management. (DCAM Certified). If a sub trade is estimate to be over $20k on that job the subs bidding must be DCAM certifed also.
The filed sub bids are due about a week before the GC bids. The GC's have to use one of the sub bids from each trade.
they take a number from each sub trade and add their numbers to it to come up with a total bid for the job. They do not have to use the lowest bid but most of the time they do. GC's can restrict against subs and subs can restrict against GC's.
For example - as a EC sub I can say my price is X amount - this price can be used by anyone except xxx contruction , or this price can be used only if xxx construction gets the job. same thing for GC's
The GC is awarded the job based on the lowest total contract price and deemed a responsible bidder. The subs are awarded the job based on what sub company the GC carried on their bid- they can't change the sub after they win their bid.
The prevailing wage only evens the playing field with open and union shops so everyone is using the same labor wage.
In private work there is plenty of preferred subs and last looks going on all day every day - right or wrong, honest or dishonest.
in public work bidding that is called collusion and is against the law.
If the project sub trades are not estimated to be over 20k then the bidding gc's can get their own subs to provide prices to them directly as there is no filed sub bid in that situation. If the project is under 100k - any GC can bid it - that is a free for all - as long as they pay prevailing wage they are good to go.
I am not sure if they have to list their subs at bidding time for that situation - they may not and I suppose last looks happen there - but to get beat up by a regular GC for $200- $800 or so kind of gets old quick.