Inspiration
In 2017, I took out an SBA loan and bought a machine shop in Northern Indiana.
Like all manufacturing, machining is about velocity. The faster a shop can make parts, the more money they make, provided they can maintain part quality.
To that end, shops tend to focus on cycle times. How to make them faster. And as an industry, we've gotten pretty good at it.
But cycle times arent the only thing that can slow down a job. What i noticed in my shop was that we lost a lot more time to pre-production processes. Processing the drawing, building the CAD model, creating the CAM program, and ordering material.
This is where I'm focused. So when I scraped the machining-related subreddits and the Practical Machinist forums, I discovered that a common painpoint for machinists is "knowing what size stock to pull from inventory (or order)." I liked it as a starting point because part prints are pdfs. Which means reading them didn't require me to have an expensive CAD seat for Solidworks or Fusion360.
What it does
Machinable takes a digitally generated PDF drawing and looks for the information needed to buy raw material.
It identifies the material, stock shape, finished part size, units, part number, and any stock callout already on the drawing. It then adds machining allowance and looks for a standard stock size that will work.
It can also calculate cut length, drop length, saw kerf, end trim, and yield when it has the information it needs.
The goal is to help a machinist get to a material decision faster. It is not meant to make the final decision without a machinist checking the drawing.
How I built it
Machinable is a desktop web app built with Next.js, React, TypeScript, Python, and FastAPI.
The app uses GPT-5.6 Sol High and GPT-5.6 Terra High to read the same drawing separately. Both models use the same rules and return the same kind of structured result. They do not see each other’s answers.
Machinable compares the two results one field at a time. It also checks the PDF text where it can. If both readers agree on the material and shape but disagree on a dimension, the app still shows the material and shape. It does not pretend the dimension is settled.
The math is done in Python, not by the model. Python applies machining allowance, converts units, chooses stock sizes, and calculates cut lengths and yield.
The screen keeps the PDF next to the results. A machinist can see what the app found, see what needs review, correct a field, and recalculate without running the models again.
Challenges I ran into
Vision models get very confused when there are a lot of dimension and extension lines.
Even frontier vision models have trouble resolving things like chained dimensions (dims that require summing up different sections of the part). This is because the dimension and extension lines interfere with the models ability to trace each line to the correct feature it modifies. Often, the models end up reporting chained dimensions with a few correct sections and a few incorrect sections that are oriented in a different axis.
This means a model can read the numbers on a drawing but still add the wrong dimensions together. It can give a confident answer that looks reasonable but produces the wrong finished part size.
That is a serious problem when choosing raw material. If the finished part size is wrong, the recommended stock can be too small.
Machinable shows the result field by field and blocks stock calculations when the dimensions are missing or disputed.
What I learned
I learned that a useful AI tool for machining needs to show its work.
A machinist needs to know what the app found, where it found it, and what still needs to be checked. The app needs to be useful even when the drawing is not clear.
Codex helped me work through the earlier version of the app, build the new GPT-5.6 drawing workflow, add the review and correction flow, build the desktop interface, and add tests.
What’s next
Machinable is a pilot. Next step is to
- Connect with a major vendor (hopefully McMaster-Carr) and use an API to pull current stock levels and pricing.
- PostgreSQL DB to store dimensional characteristics of processed parts.
- then address other painpoints for machinists. Like highlighting drawing elements that are unclear or missing info, and then preparing suggested fixes or questions for the customer to send to the drafter/designer.
- broader objective is to be be able to offer machinists maximally useful information to help them quote/plan a job.
Built With
- fastapi
- next.js
- python
- react
- typescript
Log in or sign up for Devpost to join the conversation.