The problem
Producing a customer quote meant a person manually checking pricing and availability across vendors, assembling the numbers, and formatting a response. On a good day that took hours; when vendors were slow or the request was complex, it took a day or two. Meanwhile the customer was waiting — and sometimes shopping elsewhere.
What I built
- An Angular application where staff enter a quote request once and get back priced, ready-to-send results.
- Integrations with vendor pricing APIs to pull live pricing and availability instead of manual lookups.
- n8n workflows orchestrating the moving parts — vendor calls, assembly, and handoffs — so the process is visible and maintainable rather than buried in code.
- A local LLM via Ollama for the fuzzy middle of the problem: interpreting messy, inconsistent request data that previously needed a human to read. Running the model locally kept customer and pricing data inside the firewall — no cloud AI vendor in the loop.
Decisions that mattered
The orchestration lives in n8n rather than in application code. Vendor APIs change, get added, and get dropped — keeping that churn in a visual workflow layer means the app doesn't need a release every time a supplier changes their interface, and non-developers can see exactly what the process does.
The LLM runs on-premises. For a system handling customer and vendor pricing data, "we don't send it anywhere" is a one-sentence answer to the hardest compliance question.
Outcome
Quoting stopped being a bottleneck. The measurable win is speed; the structural win is that pricing knowledge that used to live in one person's head and inbox now lives in a system anyone on the team can run.