AI Systems
Structured information extraction: a field you can trust, or an empty one
Software can't book “next Tuesday”
The facts a business needs arrive in free text: emails, texts, voicemail transcripts, notes. Someone reads each one and types the details into the job system, and the details that are missing get filled in from memory or assumption.
Extraction converts that text into fields that downstream software can safely use. The schema is written first; the model fills it; every value is normalised and checked; and every field points back to the words it came from. When a fact isn't there, the field says so.
The schema comes first
issueOne of: leak, no hot water, noise, other, plus the customer's wordsAsk in the replyaddressText; must match a customer or a service areaSend to the office leadinstall_yearYear, not in the futureLeave emptypreferred_dateDate, today or later; relative dates resolved from when the message arrivedAsk in the replywindowOne of: 08:00–12:00, 12:00–16:00, anyDefault to “any”, flaggedwarranty_claimedYes, no, or not said“Not said”model_numberText in the manufacturer's formatLeave empty; never guessedThree messages, one schema
email · K.M. · Thu 29 Oct, 07:42
Hi, our water heater started leaking from the bottom this morning. It's the one you installed in 2021 at 22 Birch Lane. Could someone come next Tuesday, ideally before noon? I think it's still under warranty. Thanks, K.
- issueleak, bottom of tankfilledfilled
- address22 Birch Lanefilledfilled
- install_year2021filledfilled
- preferred_date2026-11-03filledfilled
- window08:00–12:00filledfilled
- warranty_claimedyesto verifyfilledfilled
- model_number—emptyempty
Valid. A booking request is created for 3 November and a warranty check is queued.
text · 555-0177 · Thu 29 Oct, 21:15
water heater leaking again!! same place as last time. can u come tmrw am
- issueleak, “same place as last time”filledfilled
- address9 Oak Ctfrom the phone number's customer recordflaggedflagged
- install_year—emptyempty
- preferred_date2026-10-30filledfilled
- window08:00–12:00filledfilled
- warranty_claimednot saidfilledfilled
- model_number—emptyempty
Valid, with one flag. The address came from the phone number, not the message, so the reply asks the customer to confirm it.
voicemail · 555-0198 · Fri 30 Oct, 18:02
Hi, calling about fifteen Maple. The water heater's making a banging noise, it's a Riverstone R40 if that helps. Call me back.
- issuenoise, “banging”filledfilled
- address15 Maplefilledfilled
- install_year—emptyempty
- preferred_date—emptyempty
- windowanydefaultflaggedflagged
- warranty_claimednot saidfilledfilled
- model_numberR40filledfilled
Valid. No date was asked for, so it becomes a callback task, not a booking.
Four rules for fields software can trust
Empty beats a guess
A missing value says so
A guessed value looks exactly like a real one. An empty field is handled by a rule: ask, default and flag, or send to a person.
Every value has a source
The words it came from
Each field points to its span in the text, so a reviewer can check it in one look.
Normalised before it's stored
One format
Dates, phone numbers and addresses in one form, with relative dates resolved from when the message arrived.
Validated before it's used
The schema decides
Types, allowed values and checks against your records. A field that fails goes to a person.
What extraction hands off
In
Out
Worth building when the same facts arrive as free text
Good fit
- The same kinds of facts arrive in free text, over and over.
- A system downstream needs them as fields.
- You can write down what each field must look like.
Not the right fit
- The input is already structured, like a web form. Map it directly.
- You need a judgement about the message, not facts from it. That's classification, or a person.
Questions about structured information extraction
What happens when a field is missing?
It stays empty, and a rule you agreed decides what's next: ask in the reply, use a default and flag it, or send it to a person.
How do you handle “next Tuesday” or “tomorrow morning”?
Relative dates are resolved from when the message arrived, in your time zone, and the customer's original words are kept beside the date.
Can it pull fields from documents, not just messages?
Yes. Document intelligence reads the document first, then the same schema-and-checks approach applies.
What if it extracts a field wrong?
Validation catches format errors and mismatches with your records. What gets past it is caught in review, and each correction becomes a test case for the next version.