landed cost, per unit

About rateslip

Rateslip came out of thirteen years of arguing about prices on building material paperwork, and then out of actually counting what that paperwork does.

How Rateslip came to be: from the trade, through an audit, to the rules it follows

  1. Domain experience Thirteen years in building materials Selling across India, Nepal, Bangladesh and Bhutan. The audit corpus came from that work.
  2. Document audit A real commercial-document audit Quotations, purchase orders, proforma invoices and tax invoices, read one by one. Two counts came out of it.
    • 0 comparable material pairs in the corpus
    • 19% of documents whose hidden text contradicted the printed page, in a way that changes the price
  3. Rejected assumption Two assumptions, rejected The obvious product, and the way most software reads a PDF.
    • A price comparison: three suppliers’ quotations side by side, cheapest first.
    • The text inside the file says what the printed page says.
  4. Product rules Rateslip Landed cost per comparable unit, and a stated reason when two documents cannot be compared.
    • Compare only when every key matches. Otherwise, name the reason.
    • Read the rendered page as an image. The text layer only cross-checks.

The idea it started as

The first plan was a price comparison tool. Put three suppliers' quotations for the same material side by side, see who is cheapest, negotiate from there. It is the obvious product and everybody nods at it.

Before building it, the real quotations, purchase orders, proforma invoices and tax invoices from several years of buying across multiple sites and suppliers were read one by one.

What the audit found

The number of genuinely comparable pairs in that corpus, holding product, thickness, variant, commercial stage and destination constant, was zero. Not few. None. Nobody had ever priced the identical specification for the identical site against a second manufacturer. Buyers go back to whoever supplied them last, or the site engineer has already specified a brand, or the quantity is too small to be worth a second quotation.

Real competition existed one layer up, in bundled quotations where material, labour and installation are priced together. That is a harder problem and a different product.

The second finding was the more useful one. On about 19% of those documents, the hidden text inside the PDF contradicted what the page actually printed, in ways that change the price. Not sabotage, just how these documents get made: a corrected table pasted over the old one as an image, leaving a stale row underneath that still adds up correctly on its own terms. Any tool that reads the text layer swallows the stale number and reports it with confidence.

Harbourline Panels Pvt. Ltd.

Shed 14, Second Cross, Works EstateFabricville 990142GSTIN: 29ZZSYN0001Z1ZQ

QUOTATION

Quotation No.
HPL/QT/26-27/0152
Date
03.08.2026
Validity
Valid for 30 days
S.NoItem codeDescriptionSizeQtyUnitArea (SQM)Rate / SQMAmount (Rs.)
1HL75PX4Wall panel 75 mm, plain edge600 x 3000 x 75 mm150Nos270.001,184.003,19,680.00

Synthetic demonstration document — all parties, identifiers and figures are fictional.

Meridian Boardworks LLP

Gat No. 31, Kiln LaneMockhalli 990318GSTIN: 27ZZSYN0002Y1ZK

QUOTATION

Quote No.
MBW/QTN/26-27/0263
Date
06.08.2026
Validity
Valid till 05.09.2026
S.NoItem codeDescriptionSizeQtyUnitPRICE PER SFTTotal (Rs.)
1MB12CB3Cement board8 x 4 x 1240Nos7.251,11,360.00
2MB18CB3Cement board8 x 4 x 1830Nos6.901,19,232.00
3MB25CB3Cement board8 x 4 x 2520Nos6.601,05,600.00

Synthetic demonstration document — all parties, identifiers and figures are fictional.

Two synthetic quotations from Rateslip's test set: two suppliers, two products, and a rate column in a different unit on each.

What the product became

Comparison was not the job. Normalisation was.

Take whatever arrived, put every line on one honest basis, show what it costs per unit landed, and say plainly when two documents cannot be compared rather than comparing them anyway.

That reframing is why refusal is a first-class output here. A tool that always produces a number is easy to build and easy to be wrong with. A tool that tells you its answer would not be defensible is more useful in a negotiation, because the thing you carry into that room has to survive being questioned.

How it is built

Pages are rendered and read as images, one page per read. Arithmetic runs in code on exact values, never as model output. Every figure reconciles against the document's own printed totals before a per-unit number is produced. Failures are named from a closed list rather than reported as a generic error, so the screen can tell you what went wrong instead of that something did.

Documents you upload are private to your account, enforced at the database rather than in application code, and are not used to train anything.

Quayside Claddings Pvt. Ltd.

Unit 9, Notional Industrial ParkIdeapuram 990063GSTIN: 33ZZSYN0004W1ZM

TAX INVOICE

Invoice No.
QC/INV/26-27/0412
Date
09.09.2026
Material value3,37,932.00
Freight to site12,400.00
Taxable value3,50,332.00
CGST @ 9%31,529.88
SGST @ 9%31,529.88
Round off0.24
Total4,13,392.00

Synthetic demonstration document — all parties, identifiers and figures are fictional.

The totals of a synthetic tax invoice from Rateslip's test set. A per-unit figure is worked out only once its printed rows add up to the two printed totals, marked here.

Who is behind it

Rateslip is built by Kordal Systems, in Kolkata. It began in the trade rather than in software: our founder spent thirteen years selling building materials across India, Nepal, Bangladesh and Bhutan, and holds an MSc and an MBA. The audit corpus came from that work. None of those documents appear in this product, on this site, or in its code, and the tooling that keeps them out is automated rather than left to memory.

If you buy materials and have an opinion about what this gets wrong, say so. That is more useful right now than praise.