“Wait, I have to type this order in by hand again?”
Chapter 1: You open your inbox, and 20 order forms are waiting
“Wait, I have to type this order in by hand again?” — How we threw AI at the eternal war between humans, FAXes, and PDFs
Chapter 1: You open your inbox, and 20 order forms are waiting
Picture this. You’re the order-entry person.
It’s morning. Coffee in hand, you open your email. And there, in the dedicated intake inbox, sits everything that piled up overnight: 20 order forms. On a busy day, 100.
And what’s inside?
- Company A: a clean Excel attachment. Bless them.
- Company B: a PDF. Vertical text, for some reason.
- Company C: order typed straight into the email body. “The usual, 20 units.” What is “the usual.”
- Company D: an internet FAX. Handwritten. Beautiful penmanship. Completely illegible.
And so, one form at a time, a human being stares at each of these and types — into the core ERP system’s sales order screen — the part number, the quantity, the delivery date, the customer code. Tap, tap, tap.
Their part number “ABC-123”? In our system, that’s “Material 10004567.” And where does that conversion table live? In the employee’s head.
Every day. 20 to 100 of these. By hand.
Beneath a poster that says “DIGITAL TRANSFORMATION,” humanity keeps hitting the keyboard.
Chapter 2: So we built a tool
Here’s what this PoC (Proof of Concept — basically “a prototype to check whether the thing actually works”) does, in one line:
Order form (email/FAX) → ① ingest → ② AI extraction → ③ master matching → ④ human review → ⑤ ERP registration → ⑥ audit
Six arrows. But don’t worry — this is not the part where we hand everything to the AI and the human goes to take a nap on the couch.
This is the single most important idea behind the tool:
Every order is reviewed by a human before it’s registered. We never go fully automatic.
Why? Because a wrong order means the wrong stuff, in the wrong quantity, shipped to the wrong place. If the AI charges ahead on a “probably this,” and a truck departs on that basis — well, you don’t want to be there.
So the star of this tool isn’t the flashy AI. It’s ④, the screen where a human reviews the order. Boring? No. This is where the tool wins or loses as a viable business application.
Chapter 3: We tell the AI, “Do NOT give me codes”
Normally, when you let an AI read a form, you’re tempted to hope for this:
“Part number ABC-123? Yep yep, that’s ERP material code 10004567, right? Filled it in for you!”
Stop. That. That’s exactly the behavior we don’t want.
In this tool, the AI (a vision-capable LLM) extracts only the facts written on the form. “It says ABC-123 here.” That’s the whole job. Converting that to an internal system code is not the AI’s job.
Why? Because the moment an AI gets “helpful” and starts inventing codes, you get plausible-looking material codes that don’t actually exist. The industry term is hallucination — the AI’s confident, fluent nonsense.
So the division of labor looks like this:
- The AI’s job: turn wildly inconsistent order forms into structured JSON data. The “reading” department.
- The matching layer’s job: convert “ABC-123” → “our material 10004567” by looking it up in a proper cross-reference table (the master data). The “consult the official records” department.
And for every field it extracts, the AI attaches a **confidence score** — a self-assigned grade. "This quantity, 0.98, I'm sure." "This delivery date, 0.55, honestly… shaky." We make the AI confess.
Chapter 4: The 0.55 field turns red
This is where the review screen really shines.
On the left of the screen: the actual order form, big and clear (with zoom functionality). On the right: the data fields the AI extracted.
And then —
- Confidence 0.8 and above: quietly normal color. The AI is confident.
- Confidence below 0.8: highlighted. “Look here.”
- Confidence below 0.6: red. “Look here, seriously.”
The human eye gets tired when it has to inspect every single field with equal intensity. So the tool tells you, “This is where you should look.” It guides your gaze. You can’t fully scrutinize 100 orders — but “just focus on the red bits” is a fight a human can win.
And here’s the elegant part:
The moment a human edits a field by hand, that field’s confidence becomes 1.0.
The AI’s 0.55, corrected by a human to “no, the delivery date is next week” — that instant, it becomes a fact a human vouches for. Confidence: full marks. A quiet high-five between AI and human.
Chapter 5: The tool gets smarter on its own
Now, remember that conversion table from Chapter 3 — the “their part number → our material” one that lived inside the employee’s head?
Every time a human confirms on the review screen that “ABC-123 is our material 10004567,” this tool quietly writes that mapping back into the master data (the customer-material cross-reference).
Which means —
- 1st time: “ABC-123? What’s that?” → the human teaches it.
- Every time after: “ABC-123? That’s 10004567. Already know it.”
The more you use it, the less the human has to do. That’s the self-learning loop. The tacit knowledge that used to live in one person’s head gets transplanted into the system. The “only Tanaka-san knows how to process this” problem is slowly laid to rest.
Chapter 6: The features that act like a thoughtful coworker
Around that review screen, this tool packs in a bunch of thoughtful features — born from researching “so what do advanced enterprise companies actually do for order automation?”
🔍 Duplicate-order detection “Hey… didn’t this exact order come in yesterday too?” — the tool flags it. Double registration is a classic, catastrophic order-entry disaster.
🚦 Touchless-readiness triage Every order gets color-coded and sorted into statuses like auto_ready (high confidence) / review (needs a look) / action (needs work) / registered (done). The "easy ones today" and the "nightmares today" are visible at a glance. It's traffic control for a busy morning.
🛡 Pre-registration validation (the double guard) Before sending data to the ERP, it checks if “this quantity is negative” or “this delivery date is in the past.” And it’s a two-layer setup: the frontend UI (instant feedback) and the server backend (the final gatekeeper). The frontend check is fast, but the server is the ultimate security gate before registration.
📜 Audit trail Who, when, and which field they edited — it is all recorded. A world where “wait, who changed this line?” no longer exists.
📊 KPI dashboard Touchless rate (orders that passed without human intervention), exception counts, hours saved — all visualized. It answers, with concrete numbers, the inevitable executive question: “So… is this tool actually doing anything?”
Chapter 7: Yes, we locked the doors too
“PoC” often means “ehh, as long as it runs, security can wait.” But this tool has enterprise-grade authentication and authorization built in from the start.
- Every API request requires a Bearer token (JWT). There are no open, unprotected endpoints.
- Data ownership is strictly separated per user/organization (row-level security equivalent). You cannot see someone else’s order data.
- Role-based access control (RBAC): Editing or resetting master data is restricted to admins. The person who can approve and the person who can only view are kept separate.
For development, standard Identity Provider (IdP) integration is simulated with a local mock environment, meaning moving to production is achieved by just swapping environment variables. No “it’s a PoC, so we have to rewrite everything later” waste. The keyhole was drilled into the door on day one.
Chapter 8: Honestly? It’s still a skeleton
I’ve been talking it up, so let me be completely straight with you.
The part of this tool that is genuinely working today is “④ the review UI.” The AI extraction (②) and master matching (③) are implemented as standalone logic — but they are not yet fully wired into an automated, end-to-end pipeline. Right now:
- AI extraction → run manually via the command line.
- Master matching → run manually via the “re-match” button on the screen.
- ERP registration → a mock (it doesn’t talk to a live production database yet — it just pretends to connect and returns success).
Why build the review UI first? Because —
No matter how clever the AI you bolt on, if the “screen where humans review the data” is garbage, nobody on the operations floor will ever use it
Nail the user experience (UX) first, then plug in the real engines later (automatic email ingestion, live API/OData connections to the ERP). As a development approach, it’s incredibly sound. Before dropping in a high-horsepower engine, you make sure the steering wheel and the seats feel right.
What gets plugged in next, roughly:
- Automatic ingestion (monitoring the intake inbox via email APIs)
- Pipeline auto-wiring (arrive → extract → match, fully connected)
- Live ERP connection (graduating from the mock — but no jumping straight to final registration; draft → validate → register, in careful stages).
Closing: Let the order-entry team go home on time
What this tool is aiming for isn’t replacing humans with AI.
Squinting at a beautifully handwritten FAX, pulling the conversion table out of your own head, tapping it into a legacy screen, living in fear of a double entry — the tool and the AI take over that exhausting, draining work, so the human can focus on the one thing that matters most: the final business judgment.
You look only at the fields highlighted in red, think “yep, that’s right,” and click approve. That’s all it should take for a good morning.
You don’t have to type the order in by hand anymore. The beautifully handwritten FAX? The tool will fight it for you.
Beneath that “Digital Transformation” poster — today, let’s actually go home on time.
메타데이터
- post_id
- 4590cc5e9a6a
- slug
- wait-i-have-to-type-this-order-in-by-hand-again-4590cc5e9a6a
- url
- https://medium.com/@kenichiroouchi/wait-i-have-to-type-this-order-in-by-hand-again-4590cc5e9a6a
- canonical_url
- https://medium.com/@kenichiroouchi/wait-i-have-to-type-this-order-in-by-hand-again-4590cc5e9a6a
- author_url
- https://medium.com/@kenichiroouchi
- status
- ok
- fetched_at
- 2026-06-09 15:37:30