Job page
How to clean messy business data so an AI system can use it
You do not need a data warehouse. You need one job, a short list of fields, and a hard line around what the system may see.
This is the craft from high-volume operations, written for a shop, a contractor, or a small office. Messy item names create rework. Messy status creates confident wrong answers. Invoice work at production load (tens of thousands of invoices as a class of work, not a named employer) only holds if the fields mean the same thing on row 8 and row 8,000.
An Intelligent Business Layer is that feed, curated. You can do a first pass yourself this week. If you want it built with you, that is later.
The rule: one job, not "our data"
Do not start with "clean the CRM." Start with the job that is failing:
- Follow up on quotes already sent
- Answer staff from your process
- Look up job status without a phone call
- See labor versus revenue, or who comes back
Everything else waits. Adequate beats perfect. Perfect is how this project dies in month two.
What "clean enough" actually means
Clean enough for an AI system:
- A key. Phone, email, invoice number, or job ID. One per customer or job, used the same way.
- A small field list. Six is a good ceiling for the first job.
- Stable names. "Cut" is cut. Not cut / haircut / HC / "the usual."
- Status from a list. Not a paragraph in a cell.
- Dates that are dates. Not "end of month-ish."
- A boundary. Named files and columns in. Everything else out.
If you cannot point to the key and the six fields on a napkin, you are not ready to connect a model. You are ready to make the napkin.
What you will not dump into a model
Write this list before you tidy a single spreadsheet:
In (for this job): the columns you named, from the files you named, for the date range you named.
Ask first: anything with a person's full address plus a child in the household, health notes, payroll rates for a named person, a conversation you would not pin on the break-room wall.
Out: card numbers, government IDs, passwords, other people's price lists, the entire Google Drive, HR folders, medical or legal files, a customer export pasted into a free ChatGPT box.
Turning "training" off in a consumer chat tool is not zero risk. If the job needs real customer rows, do not paste them. Curate a feed you control. That is the Clean beat, not a scare story. See also what not to paste.
Step 0. Inventory without boiling the ocean
Set a 45-minute timer. List sources. Do not open every folder.
- Where do quotes / tickets / invoices actually live? (email, POS, Booksy, QuickBooks, a notebook)
- Where does status live? (whiteboard, sheet, group text, someone's head)
- Where do customer names and phones live? (same as above, or a second place)
- Where do hours and pay live? (payroll, a time app, a notebook)
- Who can export each one today, without asking a vendor for a data project?
- Which source is the least wrong for the job you picked?
Circle one source as primary. The others are backups or later.
Step 1. Name six fields
For the job, write six columns. Cross out the seventh.
Follow-up on quotes
- Customer name (as they should see it)
- Phone or email (the one you actually use)
- Quote date
- Amount
- Status (sent / replied / won / lost / expired)
- Next touch date
Status lookup
- Job or ticket ID
- Customer phone
- Stage (received / in progress / waiting / ready / picked up)
- Waiting-on (parts / customer / us / none)
- Promised date (or blank)
- Last update date
Labor versus revenue
- Period (week or month)
- Revenue
- Labor cost (include your draw if you take one)
- Hours worked
- Location or crew if you have more than one; otherwise skip
- Notes for exceptions only
Who comes back
- Key (phone or email)
- Display name
- First visit
- Last visit
- Visit count
- Last service or ticket total (pick one)
If a field is not needed for the job, it does not get cleaned. "Nice to have city, birthday, Instagram" is how spreadsheets rot.
Step 2. Make a working copy
Never tidy the only copy.
- Duplicate the file. Name it job-followup-working-YYYY-MM-DD.
- Freeze the original as job-followup-source-YYYY-MM-DD.
- Delete columns that are not in the six.
- One header row. No merged cells. No colored systems that only you understand.
- One tab for data. A second tab for the status list and the will-not-access notes.
Notebooks and whiteboards: photograph, then type the six fields. Do not photograph a wall and call it a feed.
Step 3. Deduplicate the key
Pick the key. Phone is better than name for a local shop. Email is better if you are actually emailing. Invoice number is the key for invoice work; customer name is not.
- Same phone format. Strip spaces, dashes, country code or don't. Pick one and apply it.
- Same email, lowercase, trim spaces.
- "Mike / Mikey / M. Smith" with the same phone is one row.
- Two phones for one person: pick the one you text. Put the other in a note field outside the six if you must keep it.
- Blank keys: fix or drop. An agent cannot follow up a ghost.
Do this for the date range of the job (this quarter, last 90 days), not for 2014.
Step 4. Make status a list
If status is a sentence, the system will improvise.
Write five to seven values. Put them on the second tab. Use only those.
- Quotes: sent, replied, won, lost, expired
- Jobs: received, in_progress, waiting, ready, picked_up
- Waiting-on: parts, customer, us, none
- Find every unique value in the status column. You will hate this list. That is the point.
- Map each mess ("waiting on Bosch," "??", "DONE!!") to one official value.
- Anything that will not map becomes unknown. unknown is allowed. Pretending is not.
- Name an owner for status. If three people update it, write the rule: who wins.
In logistics, status without an owner and a next-update time is how you get two truths. Same here.
Step 5. Dates, money, names of things
- Dates are YYYY-MM-DD or a real date cell, not "Tues."
- Money is a number. No "~$800" mixed with "800.00" mixed with "800 plus materials."
- SKU or service name: one spelling. Keep a tiny alias list (haircut → cut) on tab two.
- Blank promised dates stay blank. Do not fill them with guesses so the sheet "looks complete."
- Time zones: if you only work in one place, ignore this. If you do not, pick one.
Step 6. Bound the feed
Write a five-line card and keep it with the file:
- Job this feed is for.
- Files in.
- Columns in.
- Date range.
- Will not access.
- Remove columns with notes like "owes us, don't tell spouse."
- Redact ID numbers you do not need.
- If you must keep a sensitive column for humans, it stays in the source file, not the working feed.
- Staff who use consumer ChatGPT get the card, not the export.
This is also when you decide whether a human still has to send the message. Draft-first is cleaner to audit than auto-send.
A one-week pass an office manager can run
- Monday. Pick the job. Inventory. Name six fields. Copy the file.
- Tuesday. Format the key. Deduplicate.
- Wednesday. Status list. Map the mess.
- Thursday. Dates and money. Alias list for services.
- Friday. Boundary card. Print it. Try one task by hand: pick five quotes and write the follow-up you would actually send. If the sheet cannot support those five, fix the sheet, not the wording.
You now have something an agent job can be written against. You do not yet have a system. You have honest input.
When to stop
Stop when:
- The five manual examples work.
- unknown is rare enough that you can still run the week.
- You can explain the six fields to a new hire in ten minutes.
Do not keep going into "while we're at it, let's add lifetime value." That is a different job and a different board.
What this is not
- Not a migration off your POS.
- Not a promise that the AI will "figure out" the notebook.
- Not legal advice about privacy. If you handle health, kids, or money movement, ask the person who already advises you. Then still bound the feed.
- Not a reason to paste the tidy sheet into a free chatbot. Tidy and still sensitive is still sensitive.
If you want this as a feed, not a week of heroics
If you want the layer built with you (connect, clean, boards, one agent, teaching), email hello@cruxibl.com. Send which job you picked and whether a sheet already exists. That is enough.
If you want a conversation about the operation, email hello@cruxibl.com. Name the job. That is enough. Or use the contact form.
