Cycle Count Weeder
Built and stress-tested for you over the weekend during the Keystone AI Enablement engagement. It's yours to keep, use, and change.
What it is
A small AI tool that takes your Ordova cycle-count export and hands back only the products you'd actually walk the floor and count — with the service charges, freight, drop-ship, discontinued items, and other non-count rows stripped out automatically. No more scrolling through and deleting them by hand.
In your words: "When exporting a Cycle Count from Ordova — help me weed through the products I actually would be counting." That's exactly what it does.
What you get back
Paste your export in, and it returns:
- The same columns you gave it, with the rows you don't count removed
- A one-line summary — e.g. "Removed 8 of 18 rows: 4 service/decoration, 1 freight, 1 drop-ship… 10 rows to count."
- A short "flagged for review" note for anything it wasn't sure about — so it never silently drops something you might need
Build it on your own stack (about 5 minutes)
This is a reusable assistant — build it wherever your team already works. The recipe is the same everywhere:
- Create a new assistant and name it
Cycle Count Weeder. - Paste the instructions block (at the bottom of this page) into its instructions field.
- Save. It's ready whenever you run a cycle count.
Where "create a new assistant" lives in each platform — pick the one your team already uses:
- Claude (claude.ai) → Projects → New Project (instructions go in the project's custom instructions).
- ChatGPT (chatgpt.com) → My GPTs → Create (paste into Instructions; building needs a paid plan).
- Gemini (gemini.google.com) → Gems → New Gem (paste into Instructions; free to build and use).
Not sure which? Use whatever your team already lives in — see Learn → Reusable Assistants.
How to use it
- In Ordova, export your cycle count the way you normally do.
- Open the spreadsheet, select the rows, and copy them.
- Open your Cycle Count Weeder assistant and paste.
- It hands back your cleaned counting list. That's it.
The five-second gut-check (do this every time)
It's an AI tool, so give it a quick glance before you trust a run — five seconds, just good habit:
- Does the "rows to count" number look about right?
- Spot-check two or three Bin numbers against your original — they should match exactly.
If anything looks off, paste it again or check the flagged rows. You're always in control — it never touches your real data in Ordova.
A few gotchas
- Paste the cells — don't attach the file. These tools read pasted text reliably; uploaded files, not so much.
- If your export is very wide, it runs cleaner if you first delete the columns you don't need for counting — keep Item #, Description, Bin, On-Hand, and Category/Status.
- Blanks stay blank. If a vendor or a cost is missing, it leaves it missing — it won't invent anything.
Make it yours — you own the whole thing
The real gift: you have the full instructions, so you can change how it behaves. The part to edit is the DELETION RULES block — it's plain English. Want it to also skip a category? Or to keep inactive items that still have stock on hand? Just edit that short list and save.
And you don't have to do it alone. Paste the instructions into any AI — Gemini, ChatGPT, Claude — and say "help me adjust these rules so it also does X." You're starting from 90% done, not a blank page.
What it does well today — and what a bigger version would add
Today: it reliably cleans a pasted cycle-count export for one person, with you reviewing the result. A real time-saver, ready to use now.
A bigger build would add: reading your file straight from Ordova (no copy-paste), handling every report format automatically, and writing your counts back into the system. That's a larger project — but the version in your hands solves the daily annoyance today.
The full instructions (the engine — yours to keep and tweak)
Copy everything in the box and paste it into your assistant's instructions field. The DELETION RULES block is the part you edit.
# Cycle Count Weeder
You clean up cycle count exports for Keystone Recognition. The user pastes an inventory export. You return **only the rows they actually need to physically count**, in the same columns and the same order they gave you, plus a one-line summary of what you removed and why.
## INPUT HANDLING
The user pastes rows copied straight from a spreadsheet. Columns arrive tab-separated; the chat may collapse the tabs so a row looks like run-on text — the tab delimiters are still there; use them as column breaks. Each new row starts at a line break.
The first row is the column header — use it to identify columns, but do not count it as a data row.
The user may paste the full wide export or a narrowed set of columns — handle either, and always return whatever columns they gave you.
If delimiters are missing, reconstruct by meaning: Item # is the leading code, On-Hand is a number, Status is Active/Inactive/Discontinued/Hold. When unsure, do not guess — keep the row, flag it, preserve its text exactly.
## PRESERVE & ACCOUNT (non-negotiable)
- Reproduce every kept row's cells EXACTLY as received. Never normalize, correct, round, or tidy. The Bin/location column especially is copied character-for-character.
- Keep rows in their original order. Never re-sort.
- Never invent or infer a missing value. A blank stays blank.
- Account for every row: kept + removed = total data rows. If a row doesn't clearly fit a rule, KEEP it and FLAG it — never drop it.
## DELETION RULES — EDIT THIS BLOCK PER PERSON
Remove a row if any of these is true:
1. It's a charge/service, not a physical good — Category is Service/Decoration, Freight, Labor, Setup, Art, or Non-Inventory.
2. Status is Inactive or Discontinued — even if on-hand > 0.
3. Item is Drop-Ship or Made-to-Order — not held in stock.
Keep everything else — active, physically stocked goods — including active items with 0 on-hand.
Status removals are ONLY "Inactive" or "Discontinued." Any other status (Hold, Pending, blank, unfamiliar) is NOT a removal reason: keep and flag.
## OUTPUT
Return the kept rows as a clean table in the original columns, then one line:
`Removed X of Y rows: [breakdown by reason]. Z rows to count[ — N flagged for review].`
Y is the number of data rows (never the header or a TOTAL row). Reasons must sum to X, and X + Z must equal Y. List any flagged rows underneath with a short reason.