# Ten questions to ask your inventory

Prompt pack from lesson 07-02 of the No Bullshit AI Course. Version 1.0.0 (2026-09-17). CC0 1.0.

**What to paste in:** the CSV from `distru-export` (`python3 export.py --resource packages`), or a Distru inventory report export, plus the instruction block below. Works in ChatGPT, Claude or a local model. Written against the column layout `distru-export` produces (dotted columns, lists as JSON text). We have not benchmarked it on a live account yet; if a question misbehaves on yours, the fixes at the bottom are the ones we reach for first.

**What comes out:** a table or a number, plus the rule the model used to get it. If it gives you a number with no rule, ask for the rule.

---

## Paste this first

```text
You have my inventory export attached. Rules for every answer:
1. Answer from the file only. If a column you need is missing, say which one and stop.
2. Before the answer, write the exact filter or formula you applied, in one line
   (for example: rows where status = ACTIVE and quantity < 10, grouped by product).
3. Show the rows behind any number under 50 rows. Over 50, show the count and the first 10.
4. Quantities are text in this file. Convert to numbers before comparing and say so.
5. Never invent a product, tag or location that is not in the file.
```

## The ten questions

Each one: the question as you would type it, then what a good answer looks like.

**1. What is running low?**
"Which products have fewer than 10 units on hand, across all locations?"
Good answer: the filter line, then a table of product, total quantity, locations. Under 50 rows shown in full. A product appearing twice (two locations) is summed, and the answer says it summed.

**2. What is sitting too long?**
"Which packages were created more than 90 days ago and still have quantity?"
Good answer: the date cut-off it used, written out, then a table sorted oldest first. If the file has no created-date column it says so instead of guessing.

**3. Where is the money tied up?**
"Which ten products hold the most value on hand? Use cost if there is a cost column, otherwise say you cannot."
Good answer: quantity x cost per row, summed per product, top ten. If the export has no cost column: "no cost column; here is quantity only."

**4. What do I have in one place?**
"List everything at the Oakland vault, grouped by category."
Good answer: the location name matched exactly as it appears in the file (it tells you if there are two spellings), then groups.

**5. What has no tag?**
"Which rows have an empty Metrc tag, or a tag that is not 24 characters?"
Good answer: the rule (empty, or length not 24), then the rows. This is a data-quality check, so zero rows is a fine answer.

**6. What is the mismatch between systems?**
"Here is a second file from Metrc. Which tags are in one file and not the other?"
Good answer: it asks which column is the tag in each file if that is not obvious, then two lists. For anything over a few hundred rows, it should offer to write a script instead. (Lesson 04-01 has the script.)

**7. What did we sell last month?**
Needs the orders export, not packages. "From the orders file, total quantity per product for orders with order date in August 2026 and status COMPLETED."
Good answer: the status and date filter written out, then the table. It notes that `items` is a JSON column and that it expanded it.

**8. Who buys what?**
Orders export. "For each customer, the three products they order most often."
Good answer: grouped by `company.name`, counts, top three. It should not merge two customers with similar names without saying so.

**9. What is about to expire?**
"Which batches have an expiration date in the next 60 days?"
Good answer: the date window written out, then rows. If there is no expiration column in the export (there often is not), it says so and suggests where the date might live (the batch or test result, not the package).

**10. Write the query, not the answer.**
"Do not answer. Write me the spreadsheet formula, or a short Python snippet, that answers question 1 so I can rerun it every Monday."
Good answer: a formula or ten lines of code that reads the CSV by column name, plus one sentence on what to change when a column is renamed. This is the one to keep.

## When the answer is wrong

- It counted rows instead of summing quantity. Ask: "sum the quantity column, do not count rows."
- It made up a location or product. Ask: "show me the row that contains that name." If it cannot, throw the answer away.
- It quietly dropped rows because a quantity was blank. Ask: "how many rows did you exclude and why?"
- The file is too big and it starts summarising. Stop asking questions; ask for the query (question 10) and run it yourself.
