Inspiration
Working for an electrical company, I know how much effort goes into preparing an estimate. It means opening a CAD file, spending hours going through the drawing, identifying components, checking quantities, and pricing each item. Then a revision arrives, and you have to go back through the project to work out what changed and how it affects the quote.
Factor grew out of that experience. I wanted to automate the repetitive work of preparing an estimate while keeping the person responsible for the quote in control of the final decision.
What it does
Factor helps electrical contractors turn CAD drawings into a draft proposal. It examines the drawing and supporting references, identifies electrical items, and applies the company’s pricing and estimating rules. When information is missing, it keeps those gaps visible and can include clearly marked estimates or budget allowances where company policy permits.
The estimator can check quantities against the drawing, review assumptions, and adjust the quote. Changes to pricing update the proposal without repeating unchanged drawing analysis. Once the estimator reviews and approves the final PDF and email, Factor sends that exact proposal to the customer.
How we built it
I built Factor with a React and TypeScript interface, a Python backend, and a .NET worker for reading DWG and DXF files. The workflow runs through a Strands Graph on Amazon Bedrock AgentCore, with Amazon Nova 2 Lite investigating drawing evidence and supporting references.
One important decision was to separate AI interpretation from calculation. Nova can suggest what a symbol or missing detail might mean, but code validates those suggestions and calculates quantities and costs using company rules.
Drawings and results are stored in S3, while DynamoDB keeps track of runs and approvals. The workflow pauses for the estimator’s final approval before Amazon SES sends the proposal. I used Codex throughout development to help implement features, investigate bugs, and build regression tests.
Challenges we ran into
Reading a CAD file was only the first step. A single electrical symbol can consist of several separate shapes, and a line connecting two devices may be schematic rather than a physical cable route. Distinguishing those cases was difficult, especially when trying to avoid counting the same device twice.
Missing information was another challenge. A drawing might show outlets without enough detail to price their wiring or distribution equipment. I needed Factor to offer useful estimating options while keeping assumptions visible and leaving unsupported quantities unresolved.
Revisions also made the workflow more complicated. A pricing change needed to produce a new calculation and PDF without repeating unchanged drawing analysis. At the same time, an approval for an earlier proposal could never authorize sending the updated one. Getting those pieces to work together took several rounds of testing and debugging.
Accomplishments that we're proud of
I'm especially proud that Factor can take the ETSU drawing from analysis to a reviewable proposal without asking the user to approve every symbol or estimating step. It investigates the drawing and supporting references, then applies company rules to build estimating scenarios and budget allowances where details are missing. Those assumptions remain visible for the estimator’s final review.
This workflow runs through a native Strands Graph on Amazon Bedrock AgentCore, with Nova handling evidence research. Getting the agent’s investigation, company policies, calculations, and final approval to work together was a major milestone.
We also completed three commercial revisions while reusing unchanged drawing analysis and research results, and verified that an outdated approval was rejected. In a controlled delivery test, the PDF sent through Amazon SES matched the exact document approved by the user.
What we learned
Building Factor made me realize how many estimating decisions I take for granted when looking at a drawing. Turning that experience into software meant being explicit about what the drawing actually shows, what can reasonably follow from a company rule, and what still needs someone’s judgment.
I also learned how much work sits around the model itself. The agent needs reliable tools, usable evidence, and clear rules for when it can proceed. Working with Strands and AgentCore pushed me to think through interruptions, revisions, and approvals as carefully as the initial analysis. A convincing result on screen is only one part of getting a proposal ready for a customer.
What's next for Factor
I want to improve how Factor connects the pieces of an electrical project: devices, circuits, panel schedules, and wiring routes. Better understanding of those relationships would help it prepare more detailed wiring estimates and identify missing scope with stronger supporting evidence.
Another priority is drawing revision comparison. When a customer sends an updated CAD file, Factor should highlight what was added, removed, or changed and show how those changes affect quantities and the quote.
I also want to expand company-specific symbol libraries and assemblies, and connect supplier catalogs and pricing feeds. That would let contractors build estimates around the products they buy, the installation methods they use, and the way they price their own work.
Built With
- .net
- acadsharp
- amazon-api-gateway
- amazon-bedrock-agentcore
- amazon-cloudfront
- amazon-cognito
- amazon-dynamodb
- amazon-nova-2-lite
- amazon-ses
- amazon-web-services
- aws-cdk
- aws-lambda
- c#
- docker
- openai-codex
- python
- react
- strands-agents-sdk
- typescript
Log in or sign up for Devpost to join the conversation.