Overview
The models fill the form, the engine does the math, you sign. Supplier price lists in Excel or CSV become one normalized catalog.
Projects / Pricor
The models fill the form, the engine does the math, you sign. Supplier price lists in Excel or CSV become one normalized catalog.
Small Argentine stores (hardware, stationery, distributors) get weekly supplier price lists in Excel or CSV. Every supplier names its columns differently and leaves out metadata: is VAT included or net, is the price per pack or per unit, is the discount a chain like 10+5, which currency, which number format. Point-of-sale and ERP systems accept only rigid layouts, so loading by hand is slow, and a misread column silently corrupts costs.
I built Pricor to turn those lists into one normalized catalog that the store’s own system can import.
It’s a research prototype. It has no users yet, no customers and no measured time savings, and I’m not claiming any. I’ve tried it on public price lists from six distributors, not in weekly use at a store.
gemma4:e4b and bge-m3.OLLAMA_FLASH_ATTENTION=0 is needed because of an upstream CUDA crash.Models propose, the engine calculates, you sign. A model never executes anything and never does arithmetic. It picks column roles from a closed set, or suggests answers, and you confirm.
Decimal with 50-digit precision and a single final rounding (ROUND_HALF_UP).21% stored as 0.21 would otherwise cause a silent 100× error.Measured on a held-out test set of 29 columns from two distributors the system had never seen, on an RTX 4060 Laptop GPU. The set is small and is missing some roles (VAT rate, units per pack, barcode, discount, currency), so please read these as a first signal, not a guarantee.
| Approach | Correct columns |
|---|---|
| Gemma 4 E4B alone | 25 of 29 (86.2 %) |
| Heuristics | 24 of 29 (82.8 %), optimistic: the rules were written after seeing one distributor’s headers |
| Laya fine-tuned | 22 of 29 (75.9 %) |
| Laya zero-shot | 18 of 29 (62.1 %) |
The cascade, which only settles answers it is confident about:
That means most columns still reach a person. Laya settles only about 10 % because its confidence separates poorly below its threshold.
Speed: Laya takes 35.4 ms per column on GPU and 516.5 ms on CPU (means); Gemma takes 11.4 s per sheet. The Laya fine-tune took 290 s and peaked at 6.2 GB of VRAM.