Tutorial
Work through the setup checklist
What each of the four setup signals is actually watching, why the first is green before you arrive, and what a complete bar does not claim.
About 10 minutes. Last reviewed against the product on .
By the end of this you will know what each signal on the setup page is actually watching, and why a complete bar is a weaker claim than it looks. The page reads your workspace, your suppliers, your imports and your analysis, and it writes nothing, so no signal on it can be ticked by hand.
1. Read the bar as a count of signals
The bar at the top is complete signals over total signals. It is not a measure of how much data you hold or how good it is.
| Signal | Turns green when |
|---|---|
| Restaurant workspace | Your workspace has a name |
| Supplier records | At least one supplier exists |
| Purchase history | At least one import run finished with the completed status |
| Purchasing analysis | At least one comparable price change or one saving candidate exists |
Measured from the step list in app/app/setup/page.tsx.
2. The first signal is green before you arrive
Signing in creates a workspace named after your email address, so the workspace signal is already complete on your first visit. It reports that a name exists, not that the name is right.
Naming the workspace properly, agreeing your unit conventions and setting roles is a separate job and the one that decides whether anything later is comparable. Do it now: set up your organization.
3. Make suppliers appear
Suppliers are written by the importer, from the supplier column of the file you upload. There is no form anywhere that creates one, so this signal cannot be satisfied ahead of an import. Its link opens Connections, which is where an authorized supplier integration would be listed if one existed.
4. Complete one import run
Upload an authorized file from Imports. A run is marked completed when at least one row carried a supplier, an item, a date and a price.
- Signals tracked
- 4
- the bar is complete signals over this
- Import file limit
- 15 MB
- checked before any parsing starts
- Rows needed to complete a run
- 1
- with supplier, item, date and price
Measured from app/app/setup/page.tsx and src/lib/imports/processor.ts.
So the green tick means one usable row was found, not that the file landed cleanly. Rejected rows are not counted here. The detail line beside the signal counts attempts, failed ones included, which is why it can read high while the signal stays dark.
Uploading a byte-identical file a second time returns as a duplicate of the first run rather than a new attempt. Re-uploading an unchanged file therefore changes nothing on this page, and that is the correct behaviour.
5. Expect the last signal to lag
The analysis signal needs either a comparable price change or a saving candidate. A comparable change needs the same supplier, item name, purchase unit and currency recorded on two different dates, which a first import often cannot supply.
| Cause | Effect |
|---|---|
| Every purchase sits on one date | No previous price, so no change is counted |
| The file carried no unit | The product is not comparison eligible and reports no change |
| The file carried no currency | The product is not comparison eligible and reports no change |
| Only one supplier sells the item | No cheaper alternative, so no saving candidate |
Measured from buildProduct and buildOpportunities in src/lib/purchasing/intelligence.ts.
A dark fourth signal after a successful import is usually a history problem, not an import problem. Import an older file and it lights without anything being fixed.
What a complete bar does not mean
Nothing on this page turns red. It does not count rejected rows, it does not show a failed run as a failure, and it never says a step went wrong.
It also checks nothing about whether your data is comparable. Units recorded inconsistently, the same item named differently by two suppliers, and currencies left out of a file all pass every signal here and all break the work you came to do. Four of four means four signals fired. It is not a statement about the data underneath them.