A parchi becomes a ledger

Messy orders.Clear billing rows.

WhatsApp shorthand comes in. Checked catalogue rows come out. And when a line is unclear, you get one short question.

Runs on your computer Open source MIT

A parchi, checked.

Sample order 03 · excerpt + one more line

पर्ची →
01

Namaste bhaiya

Note

Greeting · ignored

02

kit kat 10/- darjan 4

Ready

4 dozen KitKat ₹10 bar · 48 pieces

03

marie 30 wala 20 jodi

Needs you

What is “jodi”? packet or carton?
Suggestion: Marie Gold ₹30

04

12 pack lais peela 10 wala

Learned name

12 packets Lay’s Classic Salted ₹10

+

parle g 5/- 2 petti

Ready

2 cartons Parle-G ₹5 · 288 packets

HTML demonstration · synthetic catalogue
No order is sent from this website.

8 GB

Tested on a
MacBook Air M2

210

Automated tests,
run by CI on every push

MIT

Open-source code
Plain files. Yours to inspect.

01 / THE WORKFLOW

Less retyping.
More checking.

For the person entering wholesale orders into billing software. ParchiMatch Lite works from pasted text and your shop’s own catalogue.

Paste the order

Hinglish, Hindi number words and Devanagari. Keep the shorthand your shop uses.

Match the catalogue

Code reads the numbers. Text matching goes first; a local model helps only when needed.

Answer the amber rows

Confirm a suggestion, make a correction, or skip it. The original line stays in view.

Export a checked CSV

Download a CSV for manual import into your billing software. Skipped items stay in the export.

02 / SAFE BY DESIGN

A wrong row must never be auto-accepted.

The design principle: when unsure, ask one short question.

  • A written price must match the pack.

    “parle g 10 wala” cannot quietly become a ₹5 pack.

  • Pack sizes must match, including the unit family.

    “fortune 5 litre” cannot become a 1 L pouch.

  • Unknown units become a question.

    “20 jodi” → What is “jodi”? packet or carton?

  • Two quantities need a clear explanation.

    “maggi 2 ctn 5 pkt” → Which quantity?

  • A carton needs a known carton size.

    “clinic plus 2 petti” → How many in one carton?

03 / ON THE SHOP’S COMPUTER

Local by design.
Offline in use.

The app, catalogue and model run on the same machine. No cloud inference, telemetry or third-party scripts. After installation, it works with Wi-Fi off.

The local server binds to 127.0.0.1 only. Without Ollama, the app still runs fuzzy matching.

Follow the data

Inside your computer

Your orderpasted text
Local appcode + Ollama
Checked CSVsaved on disk
Shop data stays on the shop’s machine.
04 / MEASURED ON SYNTHETIC DATA

A small model.
A specific job.

During development, the model on every line was worse than fuzzy matching. Hybrid gives it a narrower job: help only on lines text matching cannot resolve.

Current locked synthetic benchmark · 80 test lines · Read the data card
MethodHandled with no reviewWrong rows auto-acceptedNo typing needed*Model calls
Exact match54.9%054.9%0
Fuzzy match84.3%084.3%0
Model on every line84.3%092.2%80
Hybrid · the app88.2%092.2%31

Percentages are of answerable lines, not the whole order. *Automatic, or one tap to confirm a fully correct suggestion. Synthetic data; no real shop has used the tool yet. A small human-written check (11 order pieces typed by 3 friends) also had 0 wrong rows auto-accepted. Human check · Methods, history and limitations →

05 / YOUR SHOP’S SHORTHAND

Correct a nickname.
Remember the product.

Tick Remember after confirming a new name. It is saved in a local CSV. No model training required.

A learned name means the product family. Written price or size still picks the variant; if the variant remains unclear, the app asks.

Same synthetic sample order · 13 lines

After two nicknames were taught once

“lais peela” → Lay’s Classic Salted
“lays blue” → Magic Masala

6 automatic

28.8 s before learning

8 automatic

5.3 s after learning

An observed demo with the previous default model (Qwen3.5 4B), not a general speed promise. Synthetic data card · Design notes

06 / SEE THE REVIEW FLOW

Paste. Check. Export.

See where a suggestion helps and where a human still makes the decision.

Preview of the review flow. Opens the 3-minute demo video on YouTube

Watch the 3-minute demo on YouTube ↗. Recorded with Wi-Fi off; the catalogue and orders are synthetic test data.

The image is a preview. This site embeds no third-party player.

07 / WHAT TO KNOW FIRST

Useful boundaries.
Stated plainly.

The current scope

  • Evaluated on synthetic data, plus one small human-written check: 11 order pieces typed by 3 friends, not shopkeepers.
  • No real shop has used it yet.
  • One shop, one operator, one order at a time.
  • Pasted text only. No photos, voice or WhatsApp integration.
  • A comma inside an item’s description, such as “maggi, 4 pack 1 ctn”, splits it into two rows. Commas inside numbers (“1,500”) are read correctly.
  • Items joined by “aur”, or sent with no separator, are not split yet. The app asks about them, but its suggestion names only one product.
  • The local server has no authentication; it is a single-user desktop tool.

How the synthetic data was made · More honest answers →

Start with a sample parchi.

Then bring your own catalogue, and check the rows together.