Case study · Closed-die forgings · Skoczów, Poland
Forging quotes in an app, not in Excel
Kuźnia Polska S.A. in Skoczów, southern Poland, makes closed-die steel forgings. Requests for quotation come with customers’ drawings, often from abroad. Each quote used to be built in an Excel workbook that had to be reworked by hand whenever a forging had a new routing. I built a web app that recalculates material, operations, production cost, margin and the price in EUR and PLN every time a field changes. Stage two is a prototype of a local AI model that reads the parameters off the customer’s drawing.
- Client
- Kuźnia Polska S.A., Skoczów
- Industry
- Closed-die steel forgings
- Scope
- A forging-quote app in place of the Excel workbook + a prototype that reads drawing parameters with local AI
- Technology
- Angular 22 · Chart.js · Java 21 · Spring Boot 3.4 · PDFBox · Ollama + Qwen2.5-VL · Docker, nginx
- Period
- Feb–May 2026
- Status
- Calculator and reports — built (March 2026)Drawing reading — prototype, stage 2
- Revision
- B
- Sheet
- 1/1
- Date
- 2026
Notes 1. Problem
How were forgings priced before the app?
Based on the costing workbook and the checklist the forge handed over.
By hand, in an Excel workbook laid out for reading, not for calculating: values sat in specific cells rather than in tables. Every forging has its own routing and its own number of operations, so each new enquiry shifted the formula references and the estimator had to patch the sheet for every quote.
Costing workbookassembled by hand
- steel price: base price plus SS and AS surcharges (EUR/kg)
- input weight against forging weight, i.e. the waste and the scrap credit
- every operation on every workstation: pcs/h, EUR/h and the share of pieces it applies to
- overheads, margin, EXW price in EUR and PLN, PFI and PFII profitability
- per-piece extras: packaging, FCA transport, CNC machining
Customer drawingread by hand
- drawing number, revision, part description and weight
- material and its standard, heat treatment
- whether the part is a forging at all (raw part, Rohteil, forging)
- customer standards that call for a different process, e.g. stamping or cold forging
- tolerances to EN 10243-1 and non-destructive testing requirements
- similar parts in past production and offers
Enquiries arrive as PDFs or TIF scans, annotated in English or German, sometimes with dimensions in inches and US-style dates. The forge set out what has to be read from them in its own checklist: Must have and Nice to have.
Forging routing (example)
each operation is one costing line: workstation · pcs/h · EUR/h · % of pieces; CNC machining is costed as an extra
-
01Cutting
-
02Forging
-
03Cooling
option: heat treatment — normalising, annealing, quench and temper
-
04Shot blasting
-
05Crack testing
magnetic particle inspection for cracks
-
06Grinding
cracks and flash; may cover only part of the batch (%)
-
07Coining
-
08Inspection
visual inspection
Notes 2. Solution
What did I build for the estimators?
The calculator moves the workbook’s logic into an app that keeps the terms and abbreviations the sales office already uses. Reading drawings is stage two.
| Item | Element | Status | Fig. |
|---|---|---|---|
| 1 | Calculation list | built (not saved to a database) | 1 |
| 2 | Calculation: material, operations, EXW price | built | 2 |
| 3 | Financial reports | built | 3 |
| 4 | Reading parameters from drawings (local AI) | prototype / stage 2 | 4 |
Calculation list
Each quote is one row: the forge’s part index, the customer’s drawing number, steel grade, forging weight and date. A click opens the full calculation, and a new quote starts from a clean form, not from a copy of an old file.
Calculation: material, operations, EXW price
The form has five sections: basic data with the EUR/PLN rate, material, operations, summary and extra costs (packaging, FCA transport, CNC machining).
An operation is a row with a workstation, pcs/h, EUR/h and a share of pieces, so grinding cracks on only 30% of the parts is one row with 30 in the % column. The price recalculates on every field change, together with PFI profitability (price against production cost) and PFII (price against full cost).
Financial reports
The same engine recalculates every quote at once. One screen shows the average price, average production cost, average PFII profitability, the most and least expensive forging, and four charts, including the cost structure and each component’s share of the price.
Reading parameters from the drawing (prototype, stage 2)
Statusprototype / stage 2
The prototype takes the customer’s PDF, and an AI model running locally pulls out the drawing number and revision, material, heat treatment, tolerances and overall dimensions. It converts inches and pounds to millimetres and kilograms straight away and flags unreadable digits for checking. A “Load drawing” button for estimators is part of stage 2, which is why Fig. 4 is a concept.
Notes 3. How it works
Where is the price calculated, and where is the drawing read?
The forging price is calculated in the estimator’s browser; drawings are read by a local model, ultimately on the forge’s own server. No module sends drawings or prices to external AI services.
Zone Aat the estimator
Estimator’s browser
Angular 22. The price engine is a single function in four phases: material, operations, summary, extras. EUR is the source currency; PLN follows from the exchange rate saved in each calculation.
Zone Bapp server
Calculator: Docker and nginx
A Docker container with nginx serves the app; the calculation itself runs in the browser anyway.
Zone C · stage 2on site
Drawing reading: planned for an on-site server
Java 21, Spring Boot 3.4 and Apache PDFBox, alongside Ollama running the Qwen2.5-VL 72B model (lighter variant: 32B). The project scope assumes at least 64 GB of memory available to the model, with 96 GB recommended.
Zone Doutside the company
External AI services
None. Drawings and prices are not sent to cloud APIs.
Drawing reading step by step (prototype)
Spring Boot · PDFBox · Ollama · Qwen2.5-VL
-
01Customer PDFfirst page of the drawing
-
02Render at 300 DPIfull sheet plus a zoomed crop of the bottom 30%: title block, NOTES
-
03 · three passes in parallel ATitle block: the model first identifies the format BMaterial, surface, tolerances, NOTES COverall dimensions from the full sheet
-
04One JSON filea copy next to the PDF, for comparison with a manual reference
-
05Quote formstage 2: the “Load drawing” button
Reading rules
The model has to leave a field empty rather than guess. The rules live in the prompts and the model settings, and the estimator checks the result anyway.
- A value that isn’t visible on the drawing stays an empty field.
- An unreadable digit gets a “?” and goes to review.
- The model first transcribes the fragment word for word, then fills in the fields.
- Inches to mm (× 25.4), pounds to kg (× 0.4536), M-D-YY dates to YYYY-MM-DD.
- Settings without randomness: the same drawing gives a repeatable result.
- Each title-block format is a separate strategy, so a new customer format leaves the rest untouched.
Notes 4. Project timeline
How did the project run?
In stages: first the calculator in place of the workbook, then the drawing-reading prototype.
- Feb–Mar 2026Discovery: the costing workbook and about 38 test drawings from the client, as PDFs and TIF scans.
- Mar 2026Calculator: data model and a four-phase engine matching the workbook’s sections, quote list, five form sections, reports, Docker image.
- May 2026Drawing-reading prototype: PDF rendering, three passes, title-block strategies and comparison with a manual reference.
- May 2026Stage 2 scope, three weeks: a “Load drawing” button with auto-fill, analysis history, TIF and JPG input, automated tests, estimator training and deployment on the client’s server.
- May 2026The latest version of the forge’s Must have / Nice to have checklist.
- nextA possible next step: price hints based on similar forgings from past offers.
Notes 5. Results
Results: quotes without reworking formulas
Changes that follow directly from what the tool does.
- A new routing doesn’t break any formulas: there are as many operations as there are rows.
- The EXW price, production cost and PFI/PFII profitability are visible before the offer goes out, in EUR and in PLN.
- The EUR/PLN rate is saved in every calculation, so PLN amounts use the rate agreed for that quote, not today’s.
- Reports recalculate every quote on the list at once, so the forgings with the thinnest margins stand out straight away.
- Customers’ drawings don’t go to the cloud: the prototype uses a local model, and in stage 2 the reading is to run on the forge’s server.
Notes 6. Questions
Frequently asked questions
How much does a system like this cost?
A system built on your company’s data usually costs PLN 40,000–120,000 net (≈ €9,100–27,400). I start with a proof of concept on your own workbook and drawings for PLN 10,000–25,000 (≈ €2,300–5,700). A server for a local model is PLN 15,000–35,000 (≈ €3,400–8,000), and maintenance PLN 1,000–2,000 a month (≈ €230–460).
EUR at the NBP rate of 9 October 2026 (4.3775 PLN per euro).
Does reading drawings with AI mean sending them to the cloud?
No. The prototype talks only to a local model in Ollama, and in stage 2 the reading is to run on the forge’s own server. That requirement is written into the project scope, because customers’ drawings are confidential.
How long does implementation take?
A proof of concept takes 2–4 weeks; a system on your company’s data takes 2–3 months. Here, the calculator was built in March 2026, the drawing-reading prototype in May, and the stage 2 scope allows three weeks.
Will it work with our ERP?
In this project the calculator runs on its own and replaces the workbook, not the ERP. If your system has an API or SQL views — Comarch ERP, SAP or IFS, for example — I connect it read-only first, e.g. for steel prices and offer history.
What if the AI misreads a drawing?
It can get things wrong, even without a warning, so in the stage 2 concept the estimator checks every field against the drawing before applying it to the calculation. The prompts forbid guessing: whatever the model can’t see stays empty, and an unreadable digit is marked “?”, so those spots are highlighted. Every result is saved next to the PDF, so it can be compared with a manual reading.
What if you’re not available?
The calculator is a standard Angular app in a Docker container, so another developer can take it over. We agree code ownership, NDA and handover terms in the contract before work starts. Maintenance with me costs PLN 1,000–2,000 a month (≈ €230–460).
How does your team price a quote today?
You don’t need to send anything for the first call: tell me where the drawings come from and who prices the offer. The workbook and drawings are only needed for the proof of concept. You talk directly to the engineer who writes the code.



