I recently built an AI quoting workflow for a client and it handed me more lessons than I signed up for. Some about AI, some about people and one about what happens when a server goes down for maintenance and nobody tells you.

First, some background. The client sells commercial equipment and parts and quote requests show up in their shared inbox all day long. A contractor emails a set of drawings and asks for a quote or sends a bid list with eleven projects on it and a link to a folder somewhere. The attachments are a glorious mix of PDFs, spreadsheets, scanned drawings and emails that just say "here's my list, figure it out."
Before the project, a person handled every one of those by hand. Open the email, figure out whether it's even a real quote request, dig through the attachments for the project name, what they want quoted and all the details in-between, then type all of that into a spreadsheet and forward the email to the right internal groups. A few hundred times a month. Tedious, error-prone and exactly the kind of work people assume AI will handle with a wave of the hand.
So that's what we built. An n8n workflow that watches the inbox, uses a language model to spot the real quote requests and pull the key details out of the attachments, logs each one and routes it to the right person, with a human checking anything it isn't sure about.
AI did not handle it with a wave of the hand. But we got there, and I picked up six lessons on the way.
The biggest decision wasn't which model to use. It was deciding where the AI belongs in the workflow and where it doesn't.
It's tempting to picture the fully automated version. AI reads the request, AI builds the quote, AI sends the quote, humans sip coffee. That's a lot of ways for something to go wrong before a person ever sees it. What worked was a human gate at the end. The workflow runs on its own, and anything it's confident about goes straight through. Anything it's unsure of, a missing bid date, an engineer it can't match, a document it couldn't read, lands in a review queue where a person makes the call. That kept the team in control of the judgment calls and quietly erased half my edge cases, because a reviewer handles them in five seconds instead of me coding around them for a week.
The other half of the decision is being disciplined about where AI doesn't go. Most of this workflow isn't AI at all. Pulling attachments, checking file types, matching an engineer to a salesperson, writing rows to a spreadsheet, posting a notification. That's custom code, webhooks and lookup tables, because those steps have one right answer and a language model only adds cost and the chance of a creative interpretation. The model handles the two steps where the input is messy and judgment is needed. Everything else is simple code and it should be.
One more reason to keep AI out of certain steps. This thing opens attachments and follows links from strangers all day, which is exactly what every security training tells you not to do. So every file gets scanned for malware before anything reads it, every link is checked against a list of allowed hosts and the model never executes anything, it only reads. That also means when IT runs one of their internal phishing tests the workflow doesn't take the bait. It just flags the email and moves on, which is more than I can say for some humans.
There are roughly a thousand ways to tackle a project like this and about four of them are good. Discovery is how you find the four.
The initial wish list was long. Parse every document type, handle every customer's quirks, price everything automatically and integrate with their CRM. All technically possible. Almost none of it the right first move. Discovery answers two questions honestly. Which piece delivers the most impact and which piece can be done in a reasonable amount of time? The overlap is your project. Everything else goes in a parking lot labeled "Phase 2," where roughly half of it discovers it was never that important.
The other trap is rules. "But for repeat customers we do it this way." "But that product line has a surcharge." Each one sounds small. Fifteen small rules later you've built something nobody can explain, including you. A simple tool people use beats a clever tool people route around.
Nobody puts this in the demo video. AI is excellent on the happy path and shaky to lost the moment you step off it.
The happy path worked almost immediately. Then reality showed up. A customer using their own part numbers instead of ours. A request for "the same units as the last job" with no hint of which job that was. A quote for a project out of town that follows a completely different flow. None of those handled themselves. Every one had to be uncovered in discovery, explained by someone who knew the business and then written into the code as an actual rule. The exceptions you find in the room beforehand cost an hour. The ones you find in production cost a week. The model doesn't know what it doesn't know and it will confidently produce an answer either way, which is arguably worse than a crash.
The first 80% took a weekend. The last 20% took the rest of the project. That ratio isn't a bug. It's what building real tools looks like.
Having just told you it isn't magic, I'd like to contradict myself.
Partway through I hit a stack of manufacturing documents that I, a person with a functioning brain and a decent amount of caffeine, could not make sense of. Dense spec sheets. Tables that had clearly been through a fax machine at some point. Abbreviations that meant something to an engineer in 2009 and nobody since. I stared at them for an afternoon and got nowhere. The model ran through them like it was reading the back of a cereal box, pulled out the specs, matched the cryptic abbreviations to the right fields and handed back something clean. I checked it against the parts I could decipher. It was right.
Both things are true at once. It needs constant supervision and it does things I can't. Managing that contradiction is basically the whole job.
You can have the cleanest workflow and the smartest prompts in the world and none of it matters if you can't get read access to the mailbox where the quote requests live.
A surprising amount of this project was not engineering. It was explaining, more than once, what the tool does, where the data goes, which data it touches, which it doesn't and why none of that is a security incident waiting to happen. Those are fair questions. IT's job is to be suspicious of new things that want access to company email, and "it's AI" is not the reassuring phrase some people think it is.
What helped was showing up with answers before they asked. A one-pager on exactly which permissions were needed and why, what gets stored and what leaves the building. A clear line on where the human gate sits (lesson 1 turns out to be a great security argument too). And the patience to go through the process properly because sneaking around it is how you end up with a tool that works great right up until someone revokes your credentials.
Start the access conversation on day one and plan for it to take weeks, not days. The code was ready long before the credentials were and a finished tool that can't reach the inbox is just a very expensive screensaver.
This one's on me. AI was a useful sounding board throughout the build, and it gave a solid answer to every question I put to it. Here's the question I didn't put to it. "What happens to emails that arrive while the workflow is down?"
The answer, which I discovered the fun way, is nothing. The trigger that watches the inbox keeps a cursor of where it left off and every restart, redeploy or bit of server maintenance quietly reset it. Any quote request that landed during that window just never existed as far as the tool was concerned. No error, no alert, no sad emoji. Just silence, which is the worst possible failure mode for something whose whole job is "don't miss the quote request."
The fix was straightforward once I knew to build it. A catch-up sweep that runs every few minutes, asks the system which recent emails it has never seen and feeds those through. Plus a heartbeat alert if the workflow goes quiet for too long. The pivot took a day. Learning I needed to pivot took an uncomfortable moment of staring at an inbox that had more emails in it than my spreadsheet did.
The lesson isn't "AI should have warned me." It's that AI answers the question in front of it, so keep asking. Ask what happens when this breaks. Ask what happens when it restarts. Ask what it's assuming that you haven't checked. Most of the answers will be boring, and then one of them won't be and that's the one that would have bitten you in production.
Put the AI where it helps and keep a human at the gate. Scope ruthlessly in discovery. Expect the exceptions to be most of the work. Enjoy the moments where it does something you couldn't. Start the conversation with IT before you write a single line. And ask what happens when it breaks, because the AI might not bring it up for you.
The tool works. Quotes go out faster with fewer "wait, that can't be right" moments, and I came out of it with a much better sense of what AI is actually good for in a real business. Which is a lot, as long as you're honest about what it isn't good for too.
If you're staring at a pile of quote requests and wondering whether this could work for you, I'm happy to talk through it.
Want to see the flow rather than read about it? Try the RFQ intake demo →
