[{"data":1,"prerenderedAt":328},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fconstruction-agents":34,"posts":290},[4],{"title":5,"path":6,"stem":7,"children":8,"page":33},"Blog","\u002Fblog","blog",[9,13,17,21,25,29],{"title":10,"path":11,"stem":12},"On an EPC Job, 'Sure, No Problem' Is the Most Expensive Sentence Onsite. An Agent Would Have Checked the Contract First.","\u002Fblog\u002Fconstruction-agents","blog\u002Fconstruction-agents",{"title":14,"path":15,"stem":16},"I Spent $5K on GPUs Just to Learn That One GPU Was Enough","\u002Fblog\u002Flocal-ai-rig","blog\u002Flocal-ai-rig",{"title":18,"path":19,"stem":20},"I Spent a Saturday Trying to Replace My Local AI to Save on Tokens. The Server Voted No.","\u002Fblog\u002Flocal-ai-upgrade","blog\u002Flocal-ai-upgrade",{"title":22,"path":23,"stem":24},"Building a Roguelike Game with Amazon Q","\u002Fblog\u002Fq-roguelike","blog\u002Fq-roguelike",{"title":26,"path":27,"stem":28},"I Spent 22 Years Programming Just to Fail at Making a Skeleton Swing a Sword","\u002Fblog\u002Fthundoria-architecture","blog\u002Fthundoria-architecture",{"title":30,"path":31,"stem":32},"Build First - Learn Later","\u002Fblog\u002Fvectly-scaling","blog\u002Fvectly-scaling",false,{"id":35,"title":10,"author":36,"body":37,"date":272,"description":273,"draft":33,"extension":274,"image":275,"meta":276,"navigation":277,"path":11,"seo":278,"seoTitle":279,"sitemap":280,"stem":12,"tags":282,"updated":288,"__hash__":289},"blog\u002Fblog\u002Fconstruction-agents.md","Tony Costanzo",{"type":38,"value":39,"toc":260},"minimark",[40,45,49,52,55,58,61,65,68,91,94,97,101,104,107,121,124,128,131,137,140,143,146,150,153,156,188,195,199,202,228,231,235,238,241,244,247,251,254,257],[41,42,44],"h2",{"id":43},"the-tuesday-morning-favor","The Tuesday Morning Favor",[46,47,48],"p",{},"A client rep walks up to your superintendent on a Tuesday morning and asks him to relocate a few skids of pipe spool from laydown yard 3 over to laydown 7. Small ask. Friendly tone. The kind of thing you say yes to without thinking, because they're the customer, and keeping the customer happy is sort of the entire job.",[46,50,51],{},"So he says sure.",[46,53,54],{},"He pulls two fitters and an operator off their IWP, grabs a forklift, and spends the better part of the day moving material that, as it turns out, was never in his scope to touch. No harm done. Good relationship, happy client, easy day.",[46,56,57],{},"Now run that Tuesday back every week for eight months.",[46,59,60],{},"That's the part nobody clocks in the moment. The single favor is free. The pattern is a number with commas in it, and by the time anyone goes looking for that number, the crew that did the work has rolled off, the timesheets are buried, and the date it started is a guess.",[41,62,64],{"id":63},"what-your-super-is-actually-supposed-to-do","What Your Super Is Actually Supposed to Do",[46,66,67],{},"Here's the dirty secret of that \"small favor\": there's a whole governance loop that's supposed to fire before that first skid ever moves. On a well-run EPC job, the superintendent is supposed to stop and run the play:",[69,70,71,79,85],"ul",{},[72,73,74,78],"li",{},[75,76,77],"strong",{},"Call the commercial manager:"," \"Is relocating client material even in our scope of work, or is this a change?\"",[72,80,81,84],{},[75,82,83],{},"Loop in change management:"," \"If it's a change, do we issue an FCN, do we back charge, how many hours are we eating before this becomes a claim?\"",[72,86,87,90],{},[75,88,89],{},"Ping project controls:"," \"Give me the unit rates so I can put an actual estimate against this instead of a shrug.\"",[46,92,93],{},"That's the textbook. That's what the org chart promises happens.",[46,95,96],{},"You already know what actually happens.",[41,98,100],{"id":99},"nobody-convenes-a-meeting-to-move-some-pipe","Nobody Convenes a Meeting to Move Some Pipe",[46,102,103],{},"No superintendent on Earth is going to halt a friendly client request to spin up a three-party commercial review over a forklift and an afternoon. It would feel insane. It would make him look like the contractor who lawyers up over a handshake. So he eats it, because eating it is cheaper than the awkwardness.. today.",[46,105,106],{},"The cost doesn't disappear. It just gets deferred to the worst possible venue: a claims meeting six months later where everyone is trying to reconstruct reality from memory.",[69,108,109,112,115,118],{},[72,110,111],{},"Which crew actually did the work? (They charged to their normal cost codes.)",[72,113,114],{},"How many times did this happen? (Vibes.)",[72,116,117],{},"What were the loaded rates back in Q1? (Let me find the right rev of the estimate.. eventually.)",[72,119,120],{},"Was it ever in scope to begin with? (Somebody go read 400 pages of contract.)",[46,122,123],{},"The favor was free. The forensic accounting to claw it back is anything but. We absorbed the labor, then we paid a second time in margin trying to prove the labor happened.",[41,125,127],{"id":126},"what-if-he-could-just-ask","What If He Could Just Ask?",[46,129,130],{},"Picture the same Tuesday. Client makes the same ask. Except now the super pulls out his phone, opens a chat, and types:",[46,132,133],{},[134,135,136],"em",{},"\"Client wants me to relocate the spool in laydown 3 to laydown 7. Is that in our scope?\"",[46,138,139],{},"And the agent answers. Not with a vibe. With the actual contract clause, the relevant RFIs, whether this is covered scope or a change, a rough hours estimate against the current rates, and a one-line \"if you do this, log it against change event so-and-so so we can back charge it.\"",[46,141,142],{},"Done. Ten seconds. He still gets to say yes to the client and keep the relationship warm. The difference is the company is now protected on the back end, the work is logged the second it happens, and there is no claims-meeting archaeology in six months because the paper trail wrote itself.",[46,144,145],{},"The super didn't become a commercial manager. He just got one in his pocket.",[41,147,149],{"id":148},"the-agent-already-has-the-whole-file","The Agent Already Has the Whole File",[46,151,152],{},"Here's the thing.. every input that governance loop needed already exists on the project. It's just scattered across a dozen systems and nobody can pull it all at conversation speed. An agent can.",[46,154,155],{},"Give it the context that a senior commercial lead would have in their head after years on the job:",[69,157,158,164,170,176,182],{},[72,159,160,163],{},[75,161,162],{},"The contract and all its exhibits"," so \"in scope\" is a lookup, not an argument",[72,165,166,169],{},[75,167,168],{},"Every RFI and its response"," so the agent knows what's already been clarified",[72,171,172,175],{},[75,173,174],{},"Every change order and FCN"," so it knows what's already been priced and approved",[72,177,178,181],{},[75,179,180],{},"The current unit rates and rules of credit"," so any estimate ties back to how the project actually earns and measures progress",[72,183,184,187],{},[75,185,186],{},"The schedule and the IWP backlog"," so it knows what a crew-day actually costs you in float",[46,189,190,191,194],{},"That's not science fiction. That's retrieval over documents you are legally required to keep anyway. The contract isn't going anywhere. The RFI log isn't going anywhere. We're just letting people ",[134,192,193],{},"talk"," to it instead of spelunking for it.",[41,196,198],{"id":197},"it-really-doesnt-stop-at-the-superintendent","It Really Doesn't Stop at the Superintendent",[46,200,201],{},"Once you see it for the commercial use case, you start seeing it everywhere on the job. The superintendent agent is just the demo. The franchise is specialized agents, each armed with the right documents and the right tools to search them:",[69,203,204,210,216,222],{},[72,205,206,209],{},[75,207,208],{},"Quality:"," an agent that knows the ITRs, the spec, and every lesson learned from the last three jobs, so the same weld rejection doesn't get re-discovered a fourth time",[72,211,212,215],{},[75,213,214],{},"Completions:"," an agent that can tell a turnover coordinator exactly which punch items are blocking a system walkdown and which subsystem they belong to",[72,217,218,221],{},[75,219,220],{},"Estimating:"," an agent that pulls historical productivity and actuals so the next bid isn't built on someone's gut and a spreadsheet from 2019",[72,223,224,227],{},[75,225,226],{},"Project controls:"," an agent that can answer \"what's our earned vs burned on CWP-1400\" without three people exporting reports at each other",[46,229,230],{},"Different domain, same shape every time. The knowledge exists. The expert who could find it fast is busy, expensive, or rolled off to the next project. So we hand the expertise to everyone, on demand, in plain language.",[41,232,234],{"id":233},"the-real-villain-is-a-hundred-sharepoint-sites","The Real Villain Is a Hundred SharePoint Sites",[46,236,237],{},"Let's name the actual enemy here, because it isn't a lack of information. We are drowning in information.",[46,239,240],{},"The enemy is a hundred SharePoint sites with folder structures only the guy who built them understands (and he left). It's the procedure doc that exists in four revisions across three sites, two of which quietly contradict each other. It's \"the answer is definitely in there somewhere,\" which is functionally the same as the answer not existing when a crew is standing around at 7am waiting on a call.",[46,242,243],{},"That's the gap. Not knowledge. Access to knowledge at the speed the field actually moves.",[46,245,246],{},"We don't need more documents. We've got documents coming out of our ears. We need to stop making a field engineer play hide-and-seek with a 12-level folder tree to find out whether he's allowed to move some pipe.",[41,248,250],{"id":249},"so-yeah-i-want-to-build-this","So, Yeah, I Want to Build This",[46,252,253],{},"The whole idea fell out of one conversation, which is a deeply on-brand way for me to acquire a new obsession. I spent years living in AWP, work packaging, and project controls before I spent years building RAG pipelines and agents, and I'd somehow never let the two halves of my brain talk to each other until someone asked the right question.",[46,255,256],{},"The pitch is almost embarrassingly simple. Take the thing every EPC company already does badly with people and SharePoint, and do it well with a conversation. Protect the margin. Run leaner. Stop paying twice for the same crew-day.",[46,258,259],{},"The problem with implementing these solutions is not the models, the AI companies, the RAG strategies or anything else. The problem is the lack of imagination and investing the time to implement them.",{"title":261,"searchDepth":262,"depth":262,"links":263},"",2,[264,265,266,267,268,269,270,271],{"id":43,"depth":262,"text":44},{"id":63,"depth":262,"text":64},{"id":99,"depth":262,"text":100},{"id":126,"depth":262,"text":127},{"id":148,"depth":262,"text":149},{"id":197,"depth":262,"text":198},{"id":233,"depth":262,"text":234},{"id":249,"depth":262,"text":250},"2026-06-02T00:00:00.000Z","A client asks your superintendent for a small favor. He says yes. Months later it's a claim nobody can reconstruct. The case for AI agents on EPC jobs.","md","\u002Fimages\u002Fblog\u002Fconstruction-agents\u002Fhero.webp",{},true,{"title":10,"description":273},"AI Agents for EPC: The Hidden Cost of 'Sure'",{"loc":11,"lastmod":281},"2026-06-02",[283,284,285,286,287],"AI","Agents","Construction","EPC","Project Controls",null,"t1wC7-2IqebLsKSYqoo1TYTkcT-N3X-nm5Xi3cXPzpk",[291,293,300,306,314,322],{"title":10,"author":36,"date":272,"draft":33,"description":273,"image":275,"tags":292,"navigation":277,"path":11,"stem":12,"id":35},[283,284,285,286,287],{"title":18,"author":36,"date":294,"draft":33,"description":295,"image":296,"tags":297,"navigation":277,"path":19,"stem":20,"id":299},"2026-04-28T00:00:00.000Z","Six hours, five models, one IPMI reboot, zero upgrades -- a field report on why the bleeding edge of local LLM hosting is mostly bleeding.","\u002Fimages\u002Fblog\u002Flocal-ai-upgrade\u002Fhero.webp",[283,298],"Self Hosting","blog\u002Fblog\u002Flocal-ai-upgrade.md",{"title":14,"author":36,"date":301,"draft":33,"description":302,"image":303,"tags":304,"navigation":277,"path":15,"stem":16,"id":305},"2026-03-25T00:00:00.000Z","Four RTX 3090s, an EPYC server, and a 122B parameter model -- the journey from underwhelming to overkill and back to surprisingly elegant.","\u002Fimages\u002Fblog\u002Fai-server\u002Fhero.webp",[283,298],"blog\u002Fblog\u002Flocal-ai-rig.md",{"title":26,"author":36,"date":307,"draft":33,"description":308,"image":309,"tags":310,"navigation":277,"path":27,"stem":28,"id":313},"2025-08-27T00:00:00.000Z","REST APIs to roguelikes: How I'm using a smaller game to learn the fundamentals before building my dream MMORPG. A honest indie gamedev journey.","\u002Fimages\u002Fblog\u002Fthundoria\u002Fhero.webp",[311,312],"Game Development","Nuxt","blog\u002Fblog\u002Fthundoria-architecture.md",{"title":30,"author":36,"date":315,"draft":33,"description":316,"image":317,"tags":318,"navigation":277,"path":31,"stem":32,"id":321},"2025-06-25T00:00:00.000Z","Building an AI app with zero knowledge of AI, hitting deployment walls, and evolving architecture to meet real-world needs.","\u002Fimages\u002Fblog\u002Fvectly\u002Fhero.webp",[283,319,320,312],"Web Development","Side Projects","blog\u002Fblog\u002Fvectly-scaling.md",{"title":22,"author":36,"date":323,"draft":33,"description":324,"image":325,"tags":326,"navigation":277,"path":23,"stem":24,"id":327},"2025-06-17T00:00:00.000Z","Using Amazon's AI coding assistant, Q, to build a browser-based roguelike with Nuxt.js — the potential and the limits of AI-assisted development.","\u002Fimages\u002Fblog\u002Fq-roguelike\u002Fhero.webp",[283,311,312],"blog\u002Fblog\u002Fq-roguelike.md",1780412314262]