Your Sales Report Keeps Counting Test Orders. Your Agent Never Learned Which Orders Were Real
Your Sales Report Keeps Counting Test Orders. Your Agent Never Learned Which Orders Were Real Quick answer: A scheduled reporting agent counts test orders as real sales when the "this was a test" fact lives somewhere the agent never reads: a tag in the store admin, a note in a chat thread, a filter someone applied by hand last week. Give the agent one shared memory of which orders are tests, which accounts are internal, and which exclusions were already decided, and check it before every report
Your Sales Report Keeps Counting Test Orders. Your Agent Never Learned Which Orders Were Real
Quick answer: A scheduled reporting agent counts test orders as real sales when the "this was a test" fact lives somewhere the agent never reads: a tag in the store admin, a note in a chat thread, a filter someone applied by hand last week. Give the agent one shared memory of which orders are tests, which accounts are internal, and which exclusions were already decided, and check it before every report.
Every Monday morning, the same thing happens. The scheduled agent posts the weekly sales report, the total looks a little too good, and someone spots an order that should never have been counted. A test checkout from last Tuesday. An internal order placed to check a new shipping option. A staff purchase made with a test payment method. The team corrects the number by hand, moves on, and the next Monday the report is wrong again in the same way.
The agent is not broken. It reads the orders, adds them up, and posts the total. The problem is what it was never told, and what it cannot remember from one run to the next.
Where test orders hide
Test orders rarely announce themselves in the orders table. They hide in places a reporting query does not look:
- A staff member's personal email on an order that used a real payment method, because the test card failed and they just wanted to see the checkout flow end to end.
- An order tag added in the store admin, like "test" or "internal", that the reporting agent's query never filters on.
- A payment made in test mode that later got synced into the same reporting view as live orders.
- A draft order converted to a real order during a demo, or a bulk import from a migration or rehearsal, that carried no marker at all.
Each of these is obvious to the human who created it. None of them is obvious to an agent that wakes up, reads a table, and goes back to sleep. The agent sees rows. It does not see intent.
Why fixing it once never sticks
The usual fix is a human one: someone spots the test orders, removes them, and posts a corrected total. That fix lasts until the next run, because the correction was never written down anywhere the agent reads.
Consider what the agent actually knows at the start of each run. It knows the query it was given, the orders in the table, and whatever its instructions say. It does not know that last week's report excluded order 4821, or why. It does not know that orders from three internal email addresses are always tests, or that the marketing team ran a checkout rehearsal on Thursday. So it adds everything up again, test orders included, and posts a total the team corrected once.
This is the same failure behind most scheduled-agent mistakes: every run starts blank. The agent re-derives the world from raw data instead of recalling the decisions already made about that data. A human analyst remembers that the rehearsal orders are fake and filters them out without thinking. An agent with no memory of past runs has to be re-taught the same lesson every single week, and nobody has time to re-teach it.
The fix: one exclusion memory, checked every run
The fix is not a smarter query. It is a memory the agent checks before it runs any query. Four things belong in it:
1. The test markers. Every way a test order can be recognized: internal email domains, staff accounts, test payment methods, specific order tags, and the order IDs from known rehearsals or migrations. When a new kind of test order appears, add its marker once, and every future run knows it.
2. The decisions, not just the data. When a human says "exclude these twelve orders, they were the Thursday rehearsal," that decision itself needs to be stored, with the reason attached. A list of excluded order IDs without reasons is a mystery the next person has to solve. A decision with a reason is a rule the agent can keep applying.
3. The corrections. When a real order gets wrongly excluded, or a test order slips through, record the correction in the same place, so the agent's memory gets more accurate over time instead of resetting to zero every Monday.
4. The source of truth. One place holds this memory, and every tool that touches reporting reads from it. If the store, the spreadsheet, and the chat thread each hold a different version of "which orders are tests," the agent will pick whichever one it reads first, and the report will be wrong in a new way each week.
With that memory in place, the agent's run changes shape. Before it totals anything, it recalls the exclusion list and the reasons behind it, and filters test orders out by rule, not by luck. When it posts the report, it can say which orders it excluded and why, so a human can spot a mistake in seconds instead of auditing the whole table.
How Vilix AI fits this workflow
This is the kind of shared state Vilix AI is built to hold. Vilix AI is cloud-hosted, so there is nothing to install or maintain, and it connects to your tools over MCP, so the same memory follows the agent across every tool it uses. A decision made in one tool is recallable by the reporting agent in another, because the memory is shared, not trapped inside one app.
Vilix AI also stores full conversation history, not just extracted facts. That matters here, because the reason an order was excluded often lives in a conversation: someone explaining in chat that a batch of orders was a demo, or a support thread where a staff purchase was confirmed as a test. A fact-only store would keep "exclude order 4821" and lose the why. Full history keeps the why, so the rule survives after the people in the thread have moved on.
Getting started costs nothing: Vilix AI has a free plan forever, and a 7-day Pro trial with no credit card required. Your data stays portable too, with export or delete anytime, so the memory you build for your reporting stays yours.
A report the team stops correcting
Test orders will keep happening. Staff will keep testing checkouts, teams will keep rehearsing launches, and migrations will keep importing odd rows. That part is normal. What is not normal is an agent that treats every one of those orders as a real sale, week after week, because nobody ever taught it the difference in a place it can remember.
Write the exclusions down once, in one shared memory, and make the agent check that memory before every run. The report stops needing a human correction pass, the totals stop drifting, and the Monday report becomes what it was supposed to be: a number the team can act on without auditing it first.
Free forever, no credit card.