AI for Construction Contractors: Bid Invitations and Follow-Up

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for Construction Contractors: Bid Invitations and Follow-Up.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for Construction Contractors: Bid Invitations and Follow-Up.

Log every invitation in one sheet, score it against a short bid/no-bid list, and let AI draft the replies: a four-line acknowledgement for jobs you will price, a numbered clarification list where the documents conflict, and a polite decline for the rest. After you submit, chase on a fixed ladder of dates rather than from memory.

AI reads and drafts. It does not decide, and it should not see everything. Bid documents often carry confidentiality terms, so check the invitation before uploading drawings. For triage, the text of the invitation email is enough.

Follow me on Instagram@sagnikteaches

One log for every invitation: the fields that matter

Our example is a 12-person commercial interiors contractor (ceilings, partitions and joinery) that prices packages for main contractors. It sees around 25 invitations in a week, by email, through bid platforms and by phone. None of the figures here come from a real firm. They are there to show the arithmetic.

Connect on LinkedInSagnik Bhattacharya

Triage starts with one place where every invitation is written down, whatever route it took. A phone call gets a row too. The discipline is simple: no invitation exists until it has a row.

Subscribe on YouTube@sagnikteaches
FieldWhat goes in itWho fills it
IDA running number such as B-0412; addenda reuse the same IDThe sheet
ReceivedThe date the invitation arrivedA person
Sender and query contactCompany, named estimator, and who handles questions if that is someone elseA person, with a draft from the assistant
Project and packageOne line: what it is and which of your packages it coversThe assistant drafts, a person checks
Closing date and timeExactly as the invitation words itA person
Query deadline and site visitDates, or "none"A person
RequirementsForms, bonds, insurance levels, safety pre-qualificationThe assistant lists, a person checks
DocumentsLink, or "not received"A person
Score and decision0 to 12, then price, clarify or declineThe assistant proposes, a person decides
Status and next action dateNew, acknowledged, clarifying, pricing, submitted, awarded, lost, withdrawnA person

The rule on dates matters more than anything else on the sheet. A person types them, from the sentence in the invitation. The assistant may quote that sentence back, but it does not own the field, because a missed closing time costs you the bid, and a misread one costs you the bid without anyone noticing why. If the invitations also arrive in a crowded general inbox, managing your inbox with AI covers the sorting habits that sit underneath this sheet.

If you want the log to fill itself later, automation tools such as Zapier or Make can watch a mailbox label and add a row. I would paste by hand for the first two weeks anyway, because that is how you learn which fields you actually use.

Invitations from bid platforms need one extra step. The email is usually only a notification, while the closing date, the documents and the question channel sit on the platform. Paste the project page text into the prompt rather than the notification, record the platform's own reference in the log, and if the two show different dates, ask the sender which one governs and log the answer. A phone invitation gets a row with "verbal" in the documents column and a same-day email asking for the details in writing, because a closing date heard on a call is the easiest one to get wrong.

Two-minute scoring, and the one rule that overrides the total

The score sheet has six criteria, each marked 0, 1 or 2, so totals run from 0 to 12.

  • Fit: 2 for work you do well, 1 for adjacent work, 0 for work you do not do.
  • Size: 2 inside your usual range, 1 for a stretch, 0 for far too big or too small to be worth the pricing time.
  • Timing: 2 if the closing date leaves time to price properly given your workload, 1 if tight, 0 if it cannot be done.
  • Sender: 2 for someone who has dealt fairly and paid on time, 1 for unknown, 0 for a record of late payment or bid-shopping.
  • Documents: 2 for complete drawings and a clear specification for your package, 1 for partial, 0 for vague.
  • Terms: 2 for payment, retention and risk you can live with, 1 for some concerns, 0 for terms you would not sign.

Nine or more: price it. Six to eight: send clarification questions before committing estimating time. Five or fewer: decline. And one override: a zero for timing or terms ends the discussion whatever the total, unless the sender agrees to change the date or the terms. These are starting values. Adjust them after about 20 scored invitations, using the results table near the end. A fuller bid/no-bid screen adds margin and win-probability checks; this is the two-minute version for a full inbox.

Here is the instruction block the firm uses. Note what is left out: the assistant is not asked to score the sender, because it cannot know your history with a company.

You are the bid desk assistant for a 12-person commercial interiors
contractor. Today's date is [date]. Our workload for the next six weeks:
[two lines on booked work and free crews].
Below is the text of one invitation to bid (no attachments).

1. FACTS: sender, project, our likely package, closing date and time, query
   deadline, site visit, and any forms, bonds, insurance levels or
   pre-qualification requirements. For every date, copy the exact words from
   the invitation.
2. SCORE 0, 1 or 2 on fit, size, timing, documents and terms. Give one line
   of reasoning for each, quoting the invitation. Do not score the sender:
   write "from log".
3. FLAGS: anything missing, contradictory or unusual.
4. Do not decide. Do not draft a reply yet.

For invitation B-0413, a retail unit where the firm would supply only the joinery, the reply looks like this (illustrative, trimmed):

FACTS
Sender: [main contractor], estimator [name]. Project: retail unit fit-out.
Package: joinery only (counter, shelving, feature wall).
Closing: "Thursday 20th, 14:00" (paragraph 2). Query deadline: "queries by
Monday 17th" (paragraph 3). Site visit: none mentioned.
Requirements: insurance certificates; safety pre-qualification form (footer).
SCORE
Fit 2: joinery is a core package ("bespoke counter and wall units").
Size 1: "approx. 14 weeks on site" is longer than our usual joinery job.
Timing 1: six working days to close; joinery drawings "to follow".
Documents 1: specification attached, drawings not yet issued.
Terms 1: "retention 5%, payment 45 days from invoice".
Sender: from log.
FLAGS
Drawings to follow: the price cannot be completed without them.
Payment at 45 days is longer than our standard 30.

The person reading it checks two things. Did the dates come from the right paragraphs, and do the flags match what a skim of the email shows? Here the "to follow" drawings keep the documents score at 1 and give the clarification list its first question. Nobody has priced anything yet, and the whole exercise took about four minutes.

After the sender score is added from the log, four invitations from one week look like this:

InvitationPackageFitSizeTimingSenderDocsTermsTotalDecision
B-0412Office refit, ceilings and partitions22222111Price
B-0413Retail unit, joinery only2111117Clarify first
B-0414New-build clinic, full interiors1010114Decline
B-0415Warehouse mezzanine, partitions22022210Decline unless the date moves

B-0415 shows the override at work. It scores 10, but it closes in three working days and both estimators are booked, so timing is 0. The firm sends one message asking whether the closing date can move by a week. If the answer is no, it declines.

Three faults turned up in the first fortnight, all fixable in the instructions:

  1. The assistant misread a date. The invitation said "Friday 14th, 12 noon" and an addendum moved it to Monday. The fix was to paste every addendum into the same prompt, ask which date governs, and have a person confirm it.
  2. It scored an unknown sender as "reputable" because the email was polite. That is why the sender column now says "from log" and is filled from the firm's own records.
  3. It summarised the requirements as "standard" and missed a safety pre-qualification form mentioned only in the email footer. The fix was a separate requirements list in the output, which a person checks against the footer.

The acknowledgement: four lines that promise nothing

An acknowledgement does four jobs: it confirms receipt and your intention to price, names the package, tells the sender about any documents you could not open, and says when your questions will arrive. It commits you to no price and no programme.

Left to itself, the assistant writes something like this first draft:

Dear [first name], thank you so much for inviting us to tender for this prestigious project. We have carefully reviewed the drawings and specification and are confident we can offer a highly competitive price. We would be delighted to work with you and look forward to a long and successful relationship.

There are three problems. It says the drawings were reviewed when nobody has opened them yet. It implies a competitive price before any pricing exists. And it asks for nothing and promises nothing the sender can use. Here is the version that goes out:

Hello [first name], thank you for the invitation to price the ceilings and partitions package on [project]. We intend to submit by [closing date and time]. We could not open [drawing set B] from the link, so could you resend it? Any questions will reach you by [query deadline]. Kind regards, [your name]

The decline is just as short and keeps the door open:

Hello [first name], thank you for thinking of us for [project]. We cannot give it the attention it needs in the time available, so we are declining this one. We would like to price your next [package type] job, so please keep us on the list. Kind regards, [your name]

Both live in the project as templates, and the assistant fills the square brackets from the log row. The rule on the first draft is "use only facts in the row". Anything that sounds like a claim about work done is a flag for the person reading.

Clarification questions: number them, cite them, state your assumption

Gaps and conflicts in bid documents are normal, and a good clarification list is one of the cheapest ways to protect your margin. Each question should be closed (something the sender can answer in a line), tied to a reference, and followed by the assumption you will price on if no answer comes. That last part turns silence into a position instead of a hole.

The firm pastes text only: the drawing schedule, the scope sections for its package and any addenda. It does not upload the drawings. The prompt:

Below are extracts from the drawing schedule, the specification sections for
our package and the addenda. Draft numbered clarification questions for
ceilings, partitions and joinery only. Ask only where documents conflict, are
silent or leave scope ambiguous. For each: cite the drawing or clause exactly
as written in the extract, ask one closed question, and state the assumption
we will price on if there is no reply. Do not invent references. If you cannot
cite, put the question under GENERAL.

A trimmed version of what comes back (illustrative):

No.ReferenceQuestionAssumption if no reply
1Drawing A-201, rev C, and section A-AThe plan shows a 2,700 mm ceiling void and the section 2,550 mm. Which governs?Priced at 2,700 mm
2Specification, ceilings sectionThe tile is described as "Class A" with no product named. Is a named product or a performance specification intended?Priced a standard mineral-fibre tile
3Addendum 2, item 4The addendum moves the closing date to Monday 12:00 but the invitation email still says Friday. Please confirm.We will submit by Friday
4Programme, page 6Level 3 access starts in week 5. Is out-of-hours working expected?Priced for normal hours
5GeneralThe invitation mentions "security" but gives no figure. Is a bond required?Priced without a bond cost

Before it goes out, a person opens every cited drawing and clause. Assistants occasionally cite a reference that does not exist, or merge two drawings into one. A wrong reference makes you look careless to the person who has to answer. Then three habits: send the list once, before the query deadline, rather than as a drip of one-line emails; send it through the channel the invitation names; and number continuously so replies can say "Q3". For a single trade's version of this work, see bid clarifications and RFIs for electrical contractors.

The follow-up ladder after you submit

Once your price is in, the main contractor compares bids, which takes longer than anyone admits. Chasing from memory goes wrong in both directions: too little, and you fall off their radar; too much, and you become the estimator they avoid. The ladder below fixes the dates in advance. It starts from the submission date, then switches to the sender's own decision date if the invitation gave one.

WhenMessagePurpose
Submission dayConfirmation that the bid is attached, with the date your price stays validProof of delivery and a clear validity period
3 working days laterReceipt check, only if nobody has acknowledgedMake sure it arrived and was opened
10 working days laterOffer to clarify anything for their comparison, and ask for the decision dateLearn the timetable
2 working days after the stated decision dateShort check on where the programme standsPrompt an update, whatever the outcome
Then every 3 weeks, three times at mostOne line asking whether the project has movedStay visible without nagging
After thatClose the row as no response; check again when the project starts on siteStop spending time

The submission-day message carries the most weight, because it fixes what your price is based on:

Hello [first name], our price for [package] on [project] is attached, with our assumptions and exclusions. It is based on the documents in the attached schedule, up to and including addendum [number], and on your answers to our clarification questions dated [date]. The price is valid for [number] days, until [date]. Please could you confirm you have received it? Kind regards, [your name]

The assistant fills the brackets from the log row and the clarification sheet. Check two of them by hand: the addendum number against the last addendum you actually priced, and the validity date against a calendar. A price that quietly assumes addendum 2 when addendum 3 changed the ceiling grid is exactly the kind of gap the main contractor's comparison will find, and the one line naming the addendum is what shows which documents you priced.

The day-10 message, as a template:

Hello [first name], we submitted our price for [package] on [date]. If anything in it needs clarifying for your comparison, I can turn an answer round the same day. Do you have a date in mind for decisions? Kind regards, [your name]

The assistant's first attempt at a follow-up tends to read like this: "Just following up again on our submission, any news? We're really keen to get this one." It says nothing the reader can act on. The version above gives them a reason to reply and a question they can answer in a line.

Three limits apply to every message on the ladder. Do not ask what other bidders priced. Do not suggest your price might change unless the invitation allows revised pricing. And follow the contact rules in the invitation: some name one person or a portal for all communication, and invitations from public bodies often bar contact during evaluation. It also helps to know what happens at their end, because the next stage is usually a side-by-side comparison; what bid levelling catches and misses explains why your exclusions and assumptions page gets read closely.

A Monday routine, the sums and the tools

The routine takes about 30 minutes. Filter the sheet for rows whose next action date is today or earlier. For each one, paste the row into the project and ask for the message that fits the ladder step. Read it, correct it, send it, and move the date. A formula puts the next date in for you, with the submission date in column I and the status in column J (it works in Excel and Google Sheets):

=IF(J2="Submitted", WORKDAY(I2, 10), "")

What does the routine save? Time one ordinary week by hand first, then compare. Here are the example firm's numbers, for a week with 25 invitations of which six are priced:

TaskMinutes by handWith an AI draft and a human checkWeekly volume
Read, log and score an invitation12425
Acknowledgement836
Clarification list35156
Follow-up message6212 (two touches a bid)
Weekly total630232

That is 398 minutes a week, about 6 hours 38 minutes, handed back to estimating. The sum is 300 + 48 + 210 + 72 = 630 by hand, and 100 + 18 + 90 + 24 = 232 with the assistant. Your own timings will differ, which is the reason to measure.

After the first month, four checks tell you whether the routine is working, and the sheet answers all of them. Every invitation that arrived has a row, phone calls included. No closing date was missed or misread. Every invitation you priced was acknowledged within one working day. And on a Monday morning, the filter for overdue next-action dates comes back empty or close to it. If that last check keeps failing, the ladder has more steps than you have time for, so cut a step before you blame the drafting.

On tools, a personal ChatGPT or Claude plan at about $20 a month (list price) is enough for one person to run the triage. A shared bid desk needs more thought. ChatGPT's project sharing is available on every plan, while Claude's is limited to Team and Enterprise, and the business plans from both vendors start at two seats. If invitations live in Outlook or Gmail, the built-in assistants (Copilot Chat in Outlook on Microsoft 365 business plans, Gemini in Gmail on Workspace plans) can summarise a thread; check what your own plan includes, because that changes often. The habit matters more than the product. For follow-up wording at the quote stage rather than the bid stage, automated quote follow-ups for trades businesses and ChatGPT prompts for general contractors are good neighbours.

Five ways the bid drafts went wrong

Five illustrations of the usual failures, not reports of real firms:

  • The date trap. The assistant summarised the first email and ignored the addendum that moved the closing time. Log addenda under the same ID and paste them in.
  • The false claim. "We have reviewed the drawings" appeared in an acknowledgement sent before anyone opened them. Read every message for claims about work you have not done.
  • The wrong contact. A follow-up went to the estimator named in the first email, while the invitation said a different person handled post-submission queries. Keep a query-contact column.
  • The over-chase. One draft schedule had five reminders in two weeks. The ladder fixes the cadence, so the assistant never chooses it.
  • The leak. A full drawing set was pasted into a personal-plan chat although the invitation restricted the documents to bidding use. For triage, paste the invitation text only, and check the terms before anything else goes in.

Win and loss notes that change next month's scoring

When a decision arrives, the row gets four more entries: the result, the reason the sender gave, what you think you could have done differently, and whether you would price for them again. A lost bid is also the right moment to ask for a debrief:

Hello [first name], thank you for letting us know about [project]. If you have a few minutes, I would value any feedback on our submission, particularly on programme or scope. It will help us price your next package better. Kind regards, [your name]

Once a month, export the log without client-confidential details and ask the assistant to look for patterns: which senders convert, which packages lose most often, where the score did not predict the outcome. The counting rules belong in the prompt:

Below is our bid log for the month, with client names replaced by codes.
Count only bids with status won or lost; leave out rows still open.
1. Win rate by score band (9-12, 6-8, 5 or lower) and by package.
2. Win rate for any sender with five or more decided bids.
3. List patterns, but mark any based on fewer than five bids "too few".
Show the counts behind every percentage.

An earlier version without those rules went wrong twice. It divided wins by every invitation received instead of by bids priced, so each win rate came out at about a quarter of its real size, and it announced that one sender "never awards to us" on the strength of two lost bids. Asking for the counts behind each percentage exposes both mistakes: you can see the denominator, and you can see that two is not a pattern. Then check the score bands against results. For the 23 bids the firm priced in one month, once each had a decision, the table looks like this:

Score bandPricedWonWin rate
9 to 1211545%
6 to 89111%
5 or lower (priced against the rule)300%

On those figures the firm would stop pricing the middle band unless clarification questions raise the score, which frees about nine pricing slots a month for invitations that win nearly half the time. A month's data is a thin sample, so treat it as a prompt for a conversation, not a law. If it keeps the same shape for a full quarter, change the threshold.

Questions contractors ask about AI and their bid inbox

Can AI send the follow-ups without me approving them?

It can if you connect a mailbox and allow sending, but I would not start there. Keep it to drafts you read and send yourself for the first month. A wrong date, a wrong contact or a false claim in a bid message costs more than the two minutes saved. Check the permissions screen before connecting any mailbox.

How many follow-ups should I send before I stop?

A sensible starting pattern is a confirmation on the day, one check at around ten working days, one just after the stated decision date, and then no more than three further touches about three weeks apart. After that, close the row as no response and diarise a check for when the project starts on site.

Should I upload the drawings so the assistant writes better questions?

Only if the invitation's confidentiality terms allow it. Many say the documents are for bidding use only. A safer habit is to paste just the scope sections and drawing schedule for your package. Business plans from the main AI vendors do not train on your content by default, while personal plans have a setting you control.

Can I ask a main contractor how our price compares with others?

Ask for the decision date and whether anything needs clarifying. Do not ask what others bid or hint at changing your price unless the invitation allows revised pricing. Some invitations, especially from public bodies, bar contact during evaluation except through a named channel, so read the contact rules first.

Further reads

Sources: Anthropic's help pages on Claude Projects; OpenAI's help pages on ChatGPT Projects and sharing; ChatGPT and Claude pricing pages; Microsoft Learn on Copilot Chat in Outlook; Google's Workspace pages on Gemini in Gmail (all as of October 2026). Time and score figures are illustrations.

Want your bid inbox sorted out properly?

On a 1:1 call we'll map how invitations reach you now, pick the step worth automating first, and decide whether your mailbox and a spreadsheet can carry it.

Book a 1:1 call with me