RadiaQ
Supplier quotes go in, a priced customer quotation comes out, and every price can be traced back to the document it came from.
2025-2026 · Radion Engineering · Business automation, AI
About
Quoting a robot cell means dozens of supplier parts, several currencies and the engineering hours to put them together. RadiaQ reads supplier quotes in any format, builds a parts library from them and prices a complete quotation with one consistent engine for margin, risk and labor. Every number stays linked to its source, and a person approves every new part before it is saved.
Why I built it
A quotation for a robot cell is a small engineering project in itself. Dozens of supplier parts in three currencies, engineering hours on top, and a margin that has to be right. For years that lived in spreadsheets, retyped from supplier PDFs, with no link back to the document a price came from. RadiaQ was built to give the division one library, one pricing engine and one honest answer to the question every quote raises, does this price make sense. Around it grew a small software practice of its own, with tests that check the engine against hand-calculated quotations and an AI worker that turns the team's requests into clean tickets.
What it does
- Reads any quote
- PDFs, scans and spreadsheets, in Hebrew or English, in shekels, dollars or euros.
- A living parts library
- Every part keeps its original currency and the date of the quote its price came from.
- One pricing engine
- Margin, risk, VAT and labor computed the same way on every quotation.
- A person approves
- New parts and price changes are confirmed on screen before anything is saved.
- Built for a team
- Each team sees only its own data, with company sign-in and a right-to-left Hebrew interface.
- Statistics that sanity-check a price
- Each quotation shows its hardware, software and labour split, the ratios between them, profit by type, and a warning when something looks unusual. A separate analytics view shows margin distributions across past quotations.
- Versions and a change history
- A sent quotation is read-only. Revisions become new versions, and every change, margin and exchange-rate changes included, is recorded in a history panel.
- Price confirmed before it goes out
- The system asks whether the quoted price matches, and any gap is closed with a recorded discount, so the total always equals the price sent.
- Copy out for email, several ways
- A quotation is copied out by system or by component, with or without prices, ready to paste into an email.
- Tickets that write themselves
- The team drops a bug or a wish in free text, even just a screenshot. An AI worker opens the image, asks at most three questions, checks for duplicates and files an issue with type, size, blast radius and acceptance criteria.
How it works

Built with
React + TypeScript · Supabase Postgres, row-level security · Supabase Edge Functions · Claude API · AG Grid · Microsoft sign-in · Cloudflare Pages · Vitest, Playwright, GitHub Actions
How it is built
Every push runs lint, a type check, the unit tests and a production build on two Node versions. A fixture test checks the pricing engine against quotations calculated by hand. A separate workflow tests team isolation against the database on every change and sweeps it every six hours. A push to the main branch deploys to Cloudflare Pages, and a rollback is a revert and a push. The database schema lives in versioned migrations.
At a glance
- TYPE
- Internal configure-price-quote web app
- USERS
- Radion robotics division, technical and sales staff
- AI
- Claude reads supplier quotes (PDF, image, Excel) through a server-side proxy
- STACK
- React, TypeScript, Supabase (Postgres), Cloudflare Pages
- SCALE
- 517 commits over 10 months, about 1,700 automated tests
- LANGUAGE
- Hebrew, right to left
My role. Defined the quoting workflow and the pricing rules and built the app as sole builder.
Screens





