Built at lablab.ai’s AMD Developer Hackathon — May 2026
problem we solved
Go to a small CNC machine shop and ask the manager how they decide whether to accept a customer’s work.
The answer is almost always the same. Print the drawings, read all the dimensions by hand, walk around the store to see what tools are available, estimate whether the machine can hold the required tolerances, and write notes on the clipboard. The entire process takes 30 to 60 minutes per drawing. For a busy shop that receives 10 to 20 RFQs per week, a skilled manager could spend 5 to 20 hours of their time just doing a feasibility analysis.
Sometimes they get it wrong. They take on the job and start production, but along the way they discover they don’t have the right taps or the factory can’t hold tolerances on critical features. Parts will be discarded. Customers are dissatisfied. Machine time is lost.
We built MachinaCheck to eliminate this problem completely.
What Makina Check does
machinaCheck is a multi-agent AI system. Upload a STEP file (a standard CAD format that customers send to machine shops) with three simple inputs: material type, required tolerances, and thread specifications. In 30 seconds, you’ll have a complete manufacturability report that shows you exactly whether your part can be manufactured, what tools are needed, what’s missing, and what actions to take before production begins.
There is no manual drawing reading. No walking around the store. No guesswork required.
Why we built it with AMD MI300X
This is a business requirement, not just a technical choice, so it deserves a separate section before discussing the architecture.
Manufacturing customers sign NDAs. Their STEP files contain unique geometries that represent years of engineering work and millions of dollars in R&D. The hole patterns in medical devices and the pocket shapes in aerospace parts are confidential intellectual property.
Sending that data to OpenAI, Anthropic, or commercial API endpoints is a breach of confidentiality. Full stop.
AMD Instinct MI300X completely changes this equation. Runs Qwen 2.5 7B Instruct completely on-premises with 192 GB of HBM3 VRAM and 5.3 TB/s of memory bandwidth. No data leaves your shop’s infrastructure. STEP geometry is not sent to third-party servers. Your customer’s IP remains where it belongs.
This is what “privacy by design” actually means on the manufacturing floor. It’s not a checkbox, it’s a fundamental architectural decision that makes the product viable for real enterprise customers.
Agent architecture
machinaCheck uses a five-component pipeline built with LangChain and orchestrated with FastAPI.
Component 1 — STEP file parser (pure Python, no LLM)
Parse STEP files directly using cadquery, a Python library built on OpenCASCADE. This allows for mathematically accurate feature extraction.
All cylindrical holes with diameter and depth Flat surfaces and their areas Chamfers and fillets Bounding box dimensions Total volume and surface area
This extraction does not require visual models, OCR, or approximations and is 100% accurate as it directly reads the mathematical geometry. A Ø6.0mm hole is exactly Ø6.0mm on the output.
surely Extraction function(Step file path: str) -> dictionary: model = cq.importers.importStep(step_file_path) shape = model.val() bb = shape.BoundingBox() hole = {}
for face in model.faces().vals(): adapter = BRepAdaptor_Surface(face.wrapped)
if Adapter.GetType() == GeomAbs_Cylinder: Radius = Adapter.Cylinder().Radius() Diameter = round(radius* 2, 3) hole(diameter) = hole.get(diameter, 0) + 1
return {
“bounding_box_mm”: {“length”: round(bb.xlen, 3),…},
“hole”:(…),
“Number of planes”: Ren(plane), }
Agent 1 — Operation Classifier (Qwen 2.5 7B)
The extracted geometry and user inputs (materials, tolerances, threads) are passed via vLLM to Qwen 2.5 7B running on AMD MI300X.
The agent answers, “What CNC operations and tools do I need to manufacture this part?”
Knowledge from the manufacturing field is applied. Steel 304 requires carbide tools. Cylindrical holes require a drill rather than an end mill. Achieving tolerances of ±0.005mm requires precision machinery rather than a standard milling cutter.
Agent 2 — Tool Matcher (Pure Python)
This agent does not use LLM. Query your shop’s tool inventory database and match each tool you need to what’s available. Pure deterministic logic — database searches, comparisons, and results. LLM is not required for database queries. Using LLM here adds unnecessary delays and the risk of illusions.
Agent 3 — Feasibility Determination Agent (Qwen 2.5 7B)
The match results will be returned to Quen. Agents reason about the overall situation and make structured decisions.
{
“decision”: “Conditional”,
“confidence”: “expensive”,
“reason”: “All tools available except M10x1.5 tap”,
“Action item”: (“Purchase M10x1.5 tap ($15)”),
“Risk Flag”: (“Check the Steel 304 spindle speed”),
“Estimated setup time”: 2.5
}
Agent 4 — Report Generator (Qwen 2.5 7B)
The final agent consolidates everything into a professional manufacturability report that includes overall status, overview, part analysis, tool status, machine status, and final recommendations.
AMD stack
Running Qwen 2.5 7B on AMD MI300X via ROCm and vLLM was easy. AMD Developer Cloud’s vLLM quick start image comes fully preconfigured.
python -m vllm.entrypoints.openai.api_server \ –model Qwen/Qwen2.5-7B-Instruct \ –host 0.0.0.0 \ –port 8000 \ –dtype float16 \ –gpu-memory-utilization 0.5
gpu-memory-utilization 0.5 uses approximately 96 GB of the available 192 GB, leaving plenty of headroom. The average inference delay for agent invocation is less than 3 seconds.
LangChain connects to vLLM via an OpenAI compatible endpoint.
from langchain_community.llms import VLLMOpenAI llm = VLLMOpenAI( openai_api_base=“http://localhost:8000/v1”openai_api_key=“Empty”model name=“Qwen/Qwen2.5-7B-Instruction”temperature =0.1max tokens =1000
)
result
Testing with real STEP files from GrabCAD:
Feature extraction: Less than 1 second for parts with up to 50 features Full pipeline (all 4 agents): 25-40 seconds end-to-end Decision accuracy: Accurate manufacturability assessment for all test parts Privacy: Zero bytes of STEP geometry sent externally
what we learned
Use LLM only when reasoning is required. Agent 2 (tool matching) is pure Python. Putting an LLM there would be slow, expensive, and unreliable. The preferred tool for database searches is database queries.
Rapid engineering for structured output is key. Prompting requires careful rules to ensure that Qwen outputs valid JSON. That is, it explicitly states that cylindrical holes require a drill rather than an end mill, that the diameters must match exactly, and that taps are only visible if a thread is specified.
For this use case, AMD MI300X is really impressive. 192GB VRAM means you can run even larger models if needed. For production deployments, Qwen 2.5 72B fits comfortably and provides significantly better inference quality.
try out
Upload your STEP file to see the complete pipeline in action.
Built by Syed Muhammad Sarmad and Sabari Doss R at the May 2026 AMD Developer Hackathon.
Stack: Qwen 2.5 7B · AMD Instinct MI300X · ROCm · vLLM · LangChain · cadquery · FastAPI · Next.js · Hug Face Space

