The spreadsheet says eleven in stock and the shelf says four. Here is the model behind a tracker that stays true, the prompts to build it, and what it takes to run it.
Your private status link is on its way to your inbox.
An inventory tracker is four parts: items with a unit and a location, movements recorded as an append-only ledger rather than a quantity field somebody edits, a reconciliation against a physical count, and reorder points that fire before you run out. The mistake is storing a number and letting people change it. Once two people can edit the same figure the record stops being trustworthy, and nobody can answer where the missing four went. Record what moved and derive the total.
Inventory
1,284
Items tracked
6
Below reorder point
3
Variances this month
214K
Stock value
| Item | Location | On hand | Available | Days of cover |
|---|---|---|---|---|
| Laptop, 14 inch | Main stockroom | 11 | 4 | 6 |
| Docking station | Main stockroom | 38 | 38 | 41 |
| Monitor, 27 inch | Overflow | 4 | 0 | 0 |
| Headset | Main stockroom | 62 | 57 | 88 |
| Laptop, 16 inch | In transit | 9 | 0 | - |
You hold physical things and the record of what you hold is wrong often enough to be a problem. Equipment, stock, consumables, spare parts, marketing collateral, laptops waiting to be issued. What you want is a count you can trust and a warning before you run out.
What happens to a thing from the moment it arrives to the moment the count disagrees.
Received, issued, transferred, returned, adjusted, written off. The stock level is derived from those and never stored as a field anybody can edit.
Minus four with no reason attached is the entry that makes people stop trusting the whole system.
A transfer is one movement out and one in, recorded together, so four in the wrong warehouse never reads as four in stock.
Reserved, allocated and in-transit stock is excluded, because promising something already spoken for is the expensive error.
The counter enters what they found before seeing the system figure, and the difference becomes its own adjustment.
Ranked by days of cover, so the item you use daily outranks the one you use twice a year.
An inventory tracker is not a list with a quantity column. It is four parts, and the second one is what separates a record from a rumour.
What you hold: a code, a name, a unit of measure, a category, a location, a supplier, and a cost. The unit matters more than it sounds, because half your discrepancies will be boxes counted as units.
An append-only ledger of every receipt, issue, transfer, return and adjustment, each with a quantity, a reason, a person and a timestamp. The stock level is derived from this and never stored.
A periodic physical count compared against the derived figure, with the variance recorded as its own movement rather than quietly overwriting the number.
A minimum level per item that accounts for how long resupply actually takes, so the warning arrives with enough time to act on it.
These prompts start from a Helix project, which is what handles sign-in, credentials and hosting. Start with Helix
Paste these into Claude Code, Codex or Cursor in order. Each one leaves you with something that runs, so you can stop after any step.
The one structural decision that decides whether the numbers stay true.
In this Helix project, build me an inventory tracker.
Two tables, and the second one is the important one.
Items: a code, a name, a description, a unit of measure, a category, a
default location, a supplier, a unit cost, and whether the item is
active.
Movements: an append-only ledger. Item, quantity, a type from a fixed
list (received, issued, transferred, returned, adjusted, written off),
the location it moved from and to, a reason, who did it, and when.
Derive the stock level from the movements. Never store a quantity field
that somebody can edit. The moment two people can change the same number,
the record stops being able to explain itself, and the question you will
actually be asked is where the missing four went.
Require a reason on every adjustment and write-off. An adjustment of
minus four with no reason attached is how people stop believing the
system.
I sign in through Helix, so do not build a login page. Read the signed-in
user from the runtime. And do not put any key or connection string in the
code: if this needs to reach another system, tell me and I will create the
connection in my workspace. Worth knowing. Movements as a ledger rather than a quantity field is the whole design. It is also the part that feels like extra work until the first time somebody asks what happened.
Because four in the wrong place is not four available.
Add locations, and make them real rather than a text field.
A location has a name, a type (warehouse, stockroom, van, desk, in
transit, with a customer), and optionally a parent, so a bin sits inside
a stockroom inside a site.
Stock is now per item per location, still derived from movements. A
transfer is one movement out and one movement in, recorded together so
the ledger balances.
Then define available separately from on hand. On hand is everything
physically present. Available excludes anything reserved, in transit, or
already allocated to something. Show both, because the gap between them
is what causes somebody to promise stock that is already spoken for.
Let me allocate stock to a job, an order or a person, and have that
allocation reduce available without touching on hand. Because a count that silently corrects itself teaches you nothing.
Add reconciliation.
Let me start a count for a location or a category, list the items to
count, and enter what was physically found. Show the derived figure only
after the counter has entered theirs, so the count is not anchored by the
system.
Where they differ, record the variance as its own adjustment movement,
with the count as the reason. Do not quietly overwrite the number.
Then report variance over time by item, by location and by person doing
the counting. Persistent variance on one item is usually a unit of
measure problem. Persistent variance in one location is usually a process
problem. Persistent variance under one counter is a third thing, and you
want to be able to tell them apart.
Let me schedule counts so high-value or fast-moving items are counted
more often than everything else, rather than one enormous annual count
nobody enjoys. Worth knowing. Recording the variance rather than absorbing it is what turns a stock count from an inconvenience into the report that tells you why your numbers drift.
With the lead time built in, not the level.
Add reorder points, and build the lead time into them.
For each item: a minimum level, a reorder quantity, and the supplier lead
time in days. Calculate the reorder point from average consumption over a
period multiplied by the lead time, plus a buffer I set, rather than
asking me to guess a number.
Reordering when stock hits zero means being out for however long delivery
takes, which is the failure this is meant to prevent.
Flag items below their reorder point, ranked by how many days of cover
remain rather than by how low the number is. Two units of something you
use twice a year is not urgent; two units of something you use daily is.
Then report consumption trends per item, items that have not moved at all
for a period, which is capital sitting on a shelf, and stock value by
location for the finance conversation. The step that turns a working prototype into something with your data in it.
Now connect it to the systems we actually run, so it works on real data
rather than the rows you seeded.
Anything in angle brackets is a placeholder. Swap it for whatever we use
instead, and have the app name the connection it wants rather than assume
a vendor, so changing my mind later is a config change and not a rewrite.
<NetSuite>. Read purchase orders so a receipt can be matched to what was
ordered, and push the stock valuation back.
<Coupa>. Raise the reorder as a real purchase request rather than an email
to a supplier.
<Okta>. Read each person's location attribute, which is what the app uses
to default a movement to their own site.
<Slack>. Warn the owner when an item drops below its reorder point, ranked
by days of cover.
<Google Sheets>. Take the opening count as counted, since the first stock
list is always somebody walking the shelves with a sheet.
<Snowflake>. Land every movement, so consumption per site across a season
can be modelled rather than eyeballed from one month.
<Jamf>. For an IT stockroom, reconcile issued devices against what device
management can actually see.
Only write where I have said to write. Everything else is read only.
Do not write a key, a token or a connection string anywhere in the code,
and do not ask me to paste one. Tell me which connections you need and I
will create each as an authentication in my Helix workspace. Reference
them by alias. Worth knowing. Every name in angle brackets is a placeholder for whatever you run. Helix holds the credential as a workspace authentication, so the app references an alias and never the secret itself.
The last step of every build: a URL, and the right people on it.
Deploy my app. Worth knowing. Your assistant runs helix deploy underneath and the app comes back as a URL. Stock records feed a finance figure and an audit, so set Access Control before sharing: people record movements for their own location, and finance sees the valuation.
Most of what an inventory tracker needs already exists somewhere: what was ordered, what was paid for, and who holds it.
NetSuite
Read purchase orders so a receipt can be matched to what was ordered, and push the stock valuation back.
Coupa
Raise the reorder as a real purchase request rather than an email to a supplier.
Okta
Read each person's location attribute, which is what the app uses to default a movement to their own site.
Slack
Warn the owner when an item drops below its reorder point, ranked by days of cover.
Google Sheets
Take the opening count as counted, since the first stock list is always somebody walking the shelves with a sheet.
Snowflake
Land every movement, so consumption per site across a season can be modelled rather than eyeballed from one month.
Jamf
For an IT stockroom, reconcile issued devices against what device management can actually see.
Each line says whether the app reads, writes or both. Anything not described as writing should be read only.
Named systems are the ones most teams actually run, not a list of the only ones that work. Swap in whatever you use.
Each connection is an authentication in your Helix workspace, referenced by alias. The app names the connection it wants and never holds the credential, so nothing here ends up in your code and any of it can be rotated or revoked without a redeploy.
The build gets you a working tracker. Its numbers end up in a stock valuation and sometimes in an audit, so it needs to be run properly.
AI Deployment
One command takes the app from your assistant to a live address, so the people who need it get a link rather than instructions for running it locally.
App Security
Stock movements have to be attributable, because an unexplained adjustment is the thing an auditor asks about. SSO means every movement carries a verified name rather than a typed one.
App Security
Reading purchase orders and pushing stock valuations to finance needs real access. Granting it to the app rather than pasting a key into it means it can be rotated or revoked without a redeploy.
App Registry
Every app carries a named owner and an entry IT can see, so the tool does not become nobody's problem when the person who built it changes role.
Cost Management
Per-app spend visibility, with budgets and caps, so an internal tool cannot quietly become a line item nobody can explain.
It records what you hold, where it is, and every movement in and out as an append-only ledger, deriving the stock level rather than storing it. It also reconciles against a physical count and warns you before you run out.
Because as soon as two people can edit the same number, the record cannot explain itself. When the shelf says four and the system says eleven, a quantity field gives you no way to find out what happened. A movement ledger does.
On hand is everything physically present. Available excludes stock that is reserved, in transit or already allocated. The gap between them is what causes somebody to promise stock that is already spoken for.
Record the variance as its own adjustment movement with the count as the reason, rather than overwriting the figure. Variance over time by item, location and counter tells you whether you have a unit-of-measure problem, a process problem, or a training one.
From consumption and lead time, not intuition. Average usage over a period multiplied by the supplier lead time, plus a buffer. Reordering at zero means being out of stock for however long delivery takes.
Yes. The prompts here are written for Claude Code, Codex or Cursor and stage the build. The judgement calls are your units of measure and your count schedule, and getting units right prevents most discrepancies.
IT and Operations
One record per device and licence, with an assignment history, a lifecycle, and a reconciliation against what your systems actually report. Prompts to build it, and what it takes to run it.
Finance
One record per order from placed to paid, with the exceptions surfaced and the states that actually happen rather than the happy path. Prompts to build it, and what it takes to run it.
Finance
Route purchase requests by amount and category, hold an approval trail finance can audit, and stop chasing sign-off in email. Prompts to build it, and what it takes to run it.
IT and Operations
Capture an inspection on a phone, offline, with photos attached, and route the failures to somebody who can fix them before anyone leaves site. Prompts to build it, and what it takes to run it.
Last reviewed September 2026.
Helix is the governed runtime for AI-built apps. Deploy what you build, put SSO in front of it, connect it to your systems with managed credentials, and give it a named owner.
Your private status link is on its way to your inbox.