Inventory Reorder Suggestions App: Min/Max to Draft Orders
Build an inventory reorder suggestions app to store min/max per SKU, calculate reorder quantities, and create a draft purchase list your team can review.

What this app solves (and what it does not)
Running a store usually means bouncing between two expensive mistakes: running out of fast movers (lost sales, frustrated customers) or buying too much (cash tied up in slow stock). The daily problem isn't “do we have inventory?” It's “what should we buy next, and how much?”, without spending an hour doing spreadsheet math.
A min/max setup keeps that decision simple. For each SKU, you store two numbers:
- Min: the lowest level you want to hit before you reorder.
- Max: the level you want to refill up to when you do reorder.
If a SKU is at 6 units, the min is 10, and the max is 25, the suggestion is to order 19. You’re not guessing from memory. You’re using a clear rule that stays consistent week to week.
An inventory reorder suggestions app takes your current on-hand counts (and optionally what’s already on order), applies those min/max rules per SKU, and produces a draft purchase list. That draft is the main output: a short, reviewable list that answers “what should we order and how many?” before anyone opens a supplier portal or emails a rep.
What it does not do is purchase automatically. That matters because real purchasing has exceptions: a supplier is out of stock, case pack sizes force rounding, a seasonal item should be skipped, or a promo is coming. The app should generate suggestions fast, then let a human approve, edit, or remove lines.
This kind of tool is usually used by store managers, operations leads, and purchasing staff. It’s also useful for small teams where one person wears multiple hats and just needs a dependable starting point.
The data you need to store per SKU
Good suggestions start with boring, consistent SKU data. If the basics are messy, your draft purchase list will feel random, and people will stop trusting it.
Aim for a SKU record that keeps the same “shape” over time, even if your process evolves.
Core SKU fields (the minimum that works)
To be usable on day one, you need:
- A SKU identifier (the code you scan or type) and a short name people recognize
- Unit of measure (each, bottle, box, kg) so counts and orders mean the same thing
- Status (active/inactive) so discontinued items don’t keep showing up
- Min and max levels (and optionally a separate reorder point)
- Notes plus “last updated” info (timestamp and/or updated by)
Min and max are the guardrails. A separate reorder point is optional, but helpful when you want to reorder earlier than the min due to long lead times or unreliable supply.
Availability and ordering details (what makes the math realistic)
These details turn “how much to buy” into “what you can actually order”:
- On-hand quantity, with a clear source (manual count now, possible sync later)
- Preferred supplier (or primary vendor)
- Pack size (case quantity) so you order in valid multiples
- Lead time (days)
- Minimum order quantity (MOQ)
Be explicit about where “on hand” comes from. If you start with manual entry, store the last count date. If you later sync from a POS or warehouse tool, store the last sync time too. That one detail answers a lot of “why did it suggest this?” questions.
How min/max suggestions are calculated
Min/max is a simple rule: you only reorder when stock is low, and you order enough to get back to a safe level. The result is a draft list that’s easy to understand and easy to audit.
1) When do you trigger a reorder?
Pick one trigger and keep it consistent. The most common is:
- If On Hand is at or below Min (sometimes called the reorder point), the item is eligible.
- If On Hand is above Min, the suggestion is zero and the item stays off the draft list.
This avoids noisy recommendations for items that are already healthy.
2) How much do you suggest ordering?
Once an item is eligible, the base idea is “order up to Max.” The simple formula is:
base_suggested = max - on_hand
suggested = max(0, base_suggested)
Example: Min = 10, Max = 40, On Hand = 14.
- On Hand (14) is above Min (10), so suggested = 0.
If On Hand drops to 8:
- base_suggested = 40 - 8 = 32
- suggested = 32
Simple adjustments that make the draft realistic
After the base calculation, add a few small rules to match how purchasing works in the real world:
- Case pack rounding: if you must buy packs of 12, round 32 up to 36.
- MOQ: if MOQ is 50, raise 36 to 50.
- Never suggest negatives: if On Hand is 55 and Max is 40, the base is -15, but suggested must be 0.
- Optional cap: if you want to avoid huge buys, cap at a max order quantity.
Edge cases to handle up front
Bad data creates bad suggestions, so make these situations obvious:
- Discontinued SKUs: always suggest 0, even if stock is low.
- Negative inventory: treat it as a red flag; still compute, but show a warning for review.
- Missing Min/Max: don’t guess. Set suggested to 0 and mark the SKU as “needs setup.”
User flow: from inventory count to a draft purchase list
The best flow is the one your team will actually use. Keep it simple: record what you have on hand, then generate suggestions. Extras (labels, dashboards, analytics) can come later.
A typical session looks like this: the user does a quick count, picks a location (if needed), enters counts per SKU, saves, then taps one button to create a draft purchase list. The buyer reviews that draft and adjusts it before anything is approved.
To keep the screen calm, add one practical filter: show only SKUs below min, or show all SKUs with a clear status. “Only below min” is faster on busy days. “Show all” helps when you want confidence that nothing was missed.
A simple flow that works for most small teams:
- Enter or import on-hand counts
- Generate suggestions
- Review the draft list (below min, or all with status)
- Edit suggested quantities and add notes
- Approve the draft and export or share it for purchasing
Overrides matter because reality is messy. A buyer might order extra for a promotion, or less because cash is tight or a supplier is delayed. Treat the suggested quantity as a starting point, not a rule.
A few small controls prevent a lot of frustration:
- Manual override quantity (plus who changed it)
- “Hold” flag to skip reordering an item for now
- Optional reason field (seasonal, vendor issue, clearance)
Finally, save a snapshot when the draft is generated: timestamp, the on-hand counts used, the min/max values at that moment, and the suggested quantities before overrides. When someone asks “Why did we order 24 of this?”, you can open the draft and see the exact inputs that produced it.
A simple database structure that stays flexible
A good reorder app starts with a small set of tables you can trust. The goal isn’t a perfect ERP. It’s a clean base that can grow as you add suppliers, locations, or smarter rules.
Core tables to start with
For a single store, separate “what the item is” from “what you have” and “how you reorder”:
- SKUs: one row per item (SKU code, name, unit, category, active/inactive)
- Suppliers: supplier name and contact details (and terms like lead time if you track them)
- Reorder settings: min, max, reorder point per SKU, preferred supplier, pack size
- Inventory levels: current on-hand per SKU (later, per location) plus last counted date
- Draft orders: a header (supplier, status, created by) and lines (SKU, suggested qty, final qty)
This stays flexible because you can change reorder rules without rewriting your SKU list, and you can keep draft orders as a record of what was suggested versus what was approved.
If you only have one store today, don’t overbuild locations. Store inventory as a single number per SKU. When you add a second store or a warehouse, introduce a Locations table and switch Inventory levels to one row per SKU per location.
Guardrails, roles, and exports
Small validation rules prevent bad inputs from turning into bad orders. Add checks like: min must be less than max, reorder points can’t be negative, and pack size can’t be zero. Decide what happens when settings are missing: block suggestions, or mark SKUs as “needs setup.”
Roles help when multiple people count stock and adjust rules:
- Viewer: can see SKUs and draft orders
- Editor: can update counts and reorder settings
- Approver: can finalize quantities and mark a draft order as approved
Plan how you’ll send orders out. Even if you later automate purchasing, most teams start with a simple export: a CSV download or a supplier-ready list they can copy from the draft order screen.
Step by step: building the app screens and logic
Start with two simple lists: your SKU catalog and your suppliers. Each SKU should have a name people recognize, a default supplier, and a buying unit (each, case, carton). Keep it practical. This is the list your team will search every day.
Next, add reorder settings to the SKU record. Min and max are the basics, but you’ll get better suggestions if you also store pack size and lead time. If you buy the same item from two suppliers, pick one as the default and allow changes on the draft order later.
For inventory counts, build a fast screen that favors speed over perfection. A quick edit grid works well: filter by aisle or category, type the counted quantity, and save.
Most teams need these core screens:
- SKU list and SKU details (including min, max, pack size, lead time)
- Supplier list and supplier details
- Inventory count entry (grid + filters)
- Reorder suggestions (results table + simple actions)
- Draft purchase order (editable lines + approval)
Then implement the suggestion logic: for each SKU, compare “on hand” (and optionally “on order”) to your reorder rules, calculate a suggested quantity to move back toward max, and apply pack size rounding so you don’t suggest 13 units when the supplier only sells cases of 12.
Generate a draft order for review and treat it like a document with statuses such as Draft, Approved, Sent. When a user creates a draft, copy suggestion lines into order lines grouped by supplier, then let people edit quantities, swap suppliers, or remove items.
Finish with a clean output step. Some teams print the draft and place orders manually. Others export a file. Either way, save what was approved so you can compare “suggested vs ordered” later and improve your rules with real evidence.
Common mistakes that make reorder suggestions unreliable
Reorder math is simple. What breaks trust is messy setup. Most problems show up as a draft list that feels “off,” even when the formula is correct.
A classic issue is mixed units. You count “each,” but you order in “cases,” or you receive in “packs.” If a SKU’s unit is unclear, the app may suggest 24 when you meant 24 cases. Pick one base unit per SKU (often “each”) and store a conversion like “1 case = 24 each” so the final order quantity is translated correctly.
Min and max also get set like guesses. If you ignore sales speed and supplier lead time, the rules look tidy but fail in real life. A slow-moving item with a high max ties up cash, while a fast mover with a low min creates stockouts.
Other common mistakes:
- Not tracking locations (back room vs shelf, store A vs store B), then wondering why on-hand never matches
- Letting anyone edit min/max without a basic approval process
- Overwriting past values so you can’t explain last week’s order
- Treating damaged, reserved, or in-transit stock as available
- Using counts that are days old, then blaming the suggestion
A simple scenario: you sell coffee pods. The shelf shows 6 boxes, the back room has 18, and a second store has 12. If you only track one “on hand” number, someone counts 6 and the system suggests ordering, even though you actually have 36. Location fields fix this quickly.
Quick checks before you trust the draft list
A min/max system is simple, but the draft list is only as good as the data behind it. Before you send anything to a supplier, take a minute to scan for the silent errors that make reorder suggestions look confident but wrong.
Start with setup: every reorderable SKU needs a minimum, a maximum (or target), and the right pack size. If any of those are missing, the app should flag the SKU and either skip it or mark it as “needs setup.” One blank field can quietly produce a huge order or no order at all.
Next, sanity-check on-hand quantities. Negative stock happens (returns processed late, receiving not posted, unit mix-ups), but it should be rare. If you see -12 on hand for a slow item, treat the suggestion as “investigate,” not “buy.” A recount or a quick transaction review is cheaper than unwinding excess later.
A short checklist that catches most problems:
- Setup: min, max, pack size, and supplier filled in for every reorderable SKU
- Quantities: on-hand looks plausible (no obvious typos like 500 instead of 50)
- Packaging: suggestions round to case packs and respect MOQ
- Policy: everyone knows whether you’re ordering up to max or to a safer target
- Traceability: edits show who changed the number and when
Packaging rules deserve special attention. If your supplier sells in cases of 24 and your draft suggests 13, your system should adjust based on your policy (often rounding up to avoid stockouts). Same idea for MOQ: show the original suggestion and the adjusted suggestion so the reviewer understands what changed.
Also decide what “good enough” means for your team. Ordering to max is aggressive and can tie up cash. A more conservative target (for example, order to max only for top movers, and to a midpoint for slower items) can reduce overstock while you build trust.
Finally, keep an audit trail. Even a simple “Last changed by” and “Last changed at” on each line builds confidence and helps resolve disputes later.
Example: a weekly reorder for a small store
Picture a small neighborhood shop that carries 30 SKUs. The owner does a physical count every Monday morning and wants an inventory reorder suggestions app to create a draft purchase list they can quickly sanity-check.
They buy from two suppliers: Supplier A (snacks and drinks) and Supplier B (household basics).
Three SKUs and the suggestion math
SKU 1: Sparkling Water 12-pack (Supplier A)
On hand: 8 packs. Min: 10. Max: 30. Pack size: 6.
Because 8 is below the min (10), the app suggests ordering up to max.
Needed to reach max = 30 - 8 = 22 packs.
Round to pack size (6): 22 becomes 24.
Suggested order: 24 packs.
SKU 2: Potato Chips (Supplier A)
On hand: 14 bags. Min: 12. Max: 36. Pack size: 12.
Because 14 is above the min, the suggestion is 0. Even though it isn’t at max, it’s still healthy and doesn’t need replenishment this week.
SKU 3: Dish Soap 500 ml (Supplier B)
On hand: 3 bottles. Min: 6. Max: 18. Pack size: 6.
Because 3 is below min, order up to max.
Needed to reach max = 18 - 3 = 15 bottles.
Round to pack size (6): 15 becomes 18.
Suggested order: 18 bottles.
Buyer adjustments (budget and common sense)
The draft list is a starting point, not a command. This week, the owner has a tighter budget and also knows sparkling water sales slow down when it rains.
They adjust Sparkling Water from 24 packs down to 18 packs (still a multiple of 6). Chips stay at 0. Dish soap stays at 18 because it’s a steady seller and currently looks risky.
That review-and-tweak step is why a draft is often more useful than auto-sending purchase orders.
Clean draft purchase list (grouped by supplier)
Supplier A
- Sparkling Water 12-pack: 18 packs (adjusted from 24)
- Potato Chips: 0
Supplier B
- Dish Soap 500 ml: 18 bottles
With only 30 SKUs, this weekly loop can take about 10 minutes: count, review suggestions, make a few edits, then share the grouped draft with each supplier.
Next steps: launch small, then improve the rules
The fastest way to get value is to start narrow. Pick one store (or one location) and one supplier group with a manageable number of SKUs. You’ll learn more from a clean, reviewed draft list than from trying to cover every edge case on day one.
Decide early how you’ll capture on-hand counts. Manual entry is fine at first, as long as it’s consistent. A simple rule like “counts are updated every Thursday before ordering” beats a complex setup nobody trusts.
A practical rollout plan:
- Start with 20-50 SKUs that are easy to count and matter to revenue
- Review the draft list with a manager for 2-3 cycles before placing orders from it
- Keep a short notes field per SKU (for example: “seasonal” or “case pack is 12”)
- Expand to the next supplier only after the first group feels stable
Once the basics work, improve the math slowly. Two upgrades usually pay off quickly: an average demand estimate (like “average weekly sales over the last 4 weeks”) and a bit of safety stock based on lead time. If a supplier takes 10 days, raising the reorder point to cover an extra week of demand can help you avoid reacting to delays.
Set a cadence for keeping the rules honest. Weekly, review the suggested order and fix obvious misses. Monthly, tune min/max values, focusing on top movers and the biggest overstock risks.
If you’re building this as a no-code inventory app, AppMaster (appmaster.io) is one option that fits the workflow: model SKUs and suppliers in a database, put the min/max logic into a visual process, and generate a draft order that staff can review and approve before anything is sent.
FAQ
A min/max system stores two levels per SKU: a minimum you don’t want to drop below, and a maximum you want to refill up to. When on-hand falls to or below the minimum, the app suggests an order quantity to bring stock back toward the maximum.
Use one clear rule and stick to it: trigger a suggestion when on-hand is at or below the min (or your reorder point if you use one). If on-hand is above that trigger, the suggested quantity should be zero so the draft list stays quiet and reviewable.
The simplest calculation is suggested = max(0, max_level - on_hand) after the item qualifies for reorder. This keeps results easy to explain, because you’re just filling back up to a known target.
Yes, if you track “on order” reliably, subtract it from what you need so you don’t double-buy. A common approach is to treat available stock as on_hand + on_order and then calculate the refill amount from that number.
Round suggestions to what you can actually buy, then show the adjusted number clearly. For example, if the supplier sells cases of 12, a computed need of 32 should become 36 if your policy is to round up to avoid stockouts.
Don’t guess and don’t silently create weird orders. If min or max is missing, set the suggestion to 0 and flag the SKU as needing setup so someone fixes the data before it affects purchasing.
Treat negative on-hand as a warning sign, not normal input. You can still compute a suggestion so the buyer sees risk, but the UI should highlight that the count likely needs a recount or a transaction cleanup.
If you have more than one place stock can sit, track it separately; otherwise your suggestions will be wrong even with correct min/max. At minimum, split shelf and back room, and later expand to store-by-store or warehouse locations as needed.
Save a snapshot of the inputs used to generate the draft, including on-hand values, min/max at the time, and who approved edits. This makes “why did we order this?” easy to answer and helps people trust the system.
Keep purchasing human-approved by default: generate a draft order, let someone edit quantities, then mark it approved and export or copy the final list. You can build this workflow in AppMaster by modeling SKUs and draft orders in the database and putting the min/max logic into a visual business process that creates grouped draft order lines for review.


