Stock and asset management, per vertical.
Item registry with SKU and barcode tracking, reorder-point automation with three trigger actions, batch/lot traceability, consumable depletion curves, marketplace stock sync, physical count verification, fixed-asset registry with warranty tracking, and 8 vertical-specific inventory surfaces.
Item registry. Adjustment trail. 12 categories.
OpsInventoryClient renders the full item list with filter, search, and bulk actions. Each quantity change records reason, notes, and task linkage, feeding the audit trail and stock-alert system.
Item Registry with SKU + Barcode
Each InventoryItem carries id, sku, name, category, quantity, unitCost, reorderPoint, reorderQuantity, location, and lastCountedAt. POST /api/ops/inventory to list with filters by propertyId, category, lowStock, vendorId, or search term.
Quantity Adjustment with Reason Codes
PATCH /api/ops/inventory adjusts quantity by +/− delta. Every adjustment requires a reason (PURCHASE, USAGE, WASTE, TRANSFER, CORRECTION, RETURN), optional notes, and optional relatedTaskId for audit linkage.
12 Hospitality-Specific Categories
CLEANING_SUPPLIES, LINENS, TOILETRIES, AMENITIES, FOOD_BEVERAGE, OFFICE_SUPPLIES, MAINTENANCE_PARTS, POOL_CHEMICALS, LANDSCAPING, ELECTRONICS, FURNITURE, OTHER. Filter the item list by category or combine with lowStock flag.
6 Stock Statuses
in_stock, low_stock, out_of_stock, on_order, discontinued, reserved. Status drives UI indicators and feeds into the stock-alerts event system for downstream actions.
Purchase orders. Reorder points. Automatic triggers.
Each item defines a reorderPoint and reorderQuantity. The stock-alert event system evaluates on every adjustment and executes the configured outOfStockAction: creating purchase orders, pausing marketplace listings, or sending notifications.
,0,
hospitality-specific item categories
,0,
adjustment reason codes with audit trail
,0,
purchase order lifecycle states
,0,
vertical-specific inventory surfaces
5 statuses. Vendor linkage. Line-item detail.
PurchaseOrder entity tracks the full procurement lifecycle, from draft through submitted, confirmed, received, or cancelled. Created manually via OpsInventoryReorderClient or automatically by the auto_reorder trigger. API: GET/POST /api/ops/inventory/purchase-orders.
Reorder points. Three trigger actions. Automatic POs.
OpsInventoryAutoReorderClient configures per-item reorder triggers. The stock-alert event system evaluates quantity vs. reorderPoint on every adjustment and executes the configured outOfStockAction: pause_listings, notify_only, or auto_reorder.
Reorder Point Threshold
Each item defines reorderPoint and reorderQuantity. When quantity drops below reorderPoint, /api/inventory/events/stock-alerts fires an alert for that item.
outOfStockAction Configuration
Per-item action config via POST /api/inventory/events/stock-alerts. Three modes: pause_listings (halt marketplace channels), notify_only (alert without action), or auto_reorder (trigger PO creation).
Automatic Purchase Order Creation
When auto_reorder fires, a PurchaseOrder is created to the item's preferredVendorId with reorderQuantity units. PO status begins as "draft" and progresses through submitted → confirmed → received.
Manual Reorder Surface
OpsInventoryReorderClient provides a manual reorder interface for items not on auto-reorder. /api/ops/inventory/reorder-alerts lists all items currently below threshold for one-click PO creation.
Batches. Consumables. Physical verification.
Batch/lot tracking with expiration dates for recall isolation. Consumable-specific depletion tracking for high-turnover items. Cycle-count workflows with variance detection and CORRECTION adjustments.
Lot numbers. Expiration dates. Recall isolation.
OpsInventoryBatchesClient manages batch records with creation, listing, and expiration filtering. Each batch links to inventory items for traceability, enabling lot-level draw-down and isolation when a supplier issues a recall.
Batch/Lot Creation
POST /api/ops/inventory/batches creates a batch record linked to inventory items. Track received-date, supplier lot number, and quantity per batch for traceability.
Expiration Tracking
Items with expirationDate (set at PUT /api/ops/inventory) surface in OpsInventoryBatchesClient with countdown indicators. Batch queries filter by expiration window.
Batch → Item Linkage
Each batch record ties to one or more inventory items. Quantity adjustments can reference a batch, enabling FIFO/FEFO draw-down and recall isolation per lot number.
Usage tracking for items that deplete.
OpsInventoryConsumablesClient separates high-turnover consumable items from durable stock. Tracks consumption rate, par levels, and reorder triggers for cleaning supplies, linens, toiletries, amenities, food/beverage, and pool chemicals.
Consumption Rate Tracking
GET /api/ops/inventory/consumables returns usage history per item. OpsInventoryConsumablesClient renders consumption curves and par-level indicators.
Usage-Triggered Reorder
Consumable items share the same reorderPoint/reorderQuantity system as regular stock. High-consumption items can be set to auto_reorder to maintain par levels without manual intervention.
Physical counts. Variance detection. Correction trail.
OpsInventoryVerifyClient drives cycle-count workflows. Staff perform physical counts, the system detects variance, and generates CORRECTION adjustments with full audit linkage: who counted, when, and the exact delta.
Physical Count Workflow
OpsInventoryVerifyClient provides a structured count interface. Staff scan or select items, enter physical count, and the system calculates variance against recorded quantity.
lastCountedAt Timestamp
Each InventoryItem tracks lastCountedAt. The verify surface highlights items overdue for count based on configurable cycle-count intervals.
Variance → Adjustment
When physical count differs from system quantity, a CORRECTION adjustment is generated with the delta. Full audit trail: who counted, when, original vs. actual, and reason.
Fixed assets. Marketplace sync. Asset request forms.
Durable asset registry with serial numbers, condition tracking, and warranty expiry, distinct from consumable stock. Bidirectional marketplace sync pushes levels and pulls reserved quantities. Forms-core powers structured asset requests.
Fixed assets. Condition tracking. Warranty expiry.
The asset board renders the physical asset registry at /inventory/assets. Distinct from consumable stock. Assets are durable items tracked by serial number, condition, assignment, and warranty status.
Push stock. Pull reserved. Pause on out-of-stock.
The marketplace sync client renders connected marketplace channels with bidirectional sync. Channel configuration and connection management lives in Calisto Sync. Inventory handles the stock-level data flow.
Push Stock Levels
One-click push of current inventory quantities to all connected marketplace channels. Prevents overselling by propagating real-time availability.
Pull Reserved Quantities
Pull reserved/pending quantities from marketplace channels back into inventory. Accounts for marketplace holds before stock is physically allocated.
Channel Sync Status
Per-channel dashboard showing sync status, productsInSync count, last sync timestamp, and error count. Fetched from /api/inventory/marketplace/sync.
Automatic Listing Pause
When outOfStockAction is set to pause_listings, the stock-alert system signals connected channels to pause affected SKUs until stock is replenished.
Asset request forms powered by the forms engine.
The /inventory/forms route renders an AppForm with appName='inventory', enabling staff to submit structured asset requests. Same form engine used across all Calisto products, with submission routing into the purchase order approval pipeline.
Asset Request Form
The integrated forms engine scoped to inventory. Staff submit asset requests (new equipment, replacement, repair) through a structured form that feeds into the purchase order pipeline.
Forms Integration
Same form engine used across Dispatch, Ops, and other products. Form definitions, field validation, conditional logic, and submission routing are configured per appName.
Request → Purchase Order Pipeline
Approved asset requests can trigger PurchaseOrder creation. Manager-area users review and approve requests; approved items flow into the reorder system.
8 verticals. 4 AI commands. Cross-product feeds.
Vertical-specific inventory surfaces scoped per industry. Calisto AI assistant with search, adjust, reorder, and check commands. Stock-level feeds consumed by POS, Shop, Ops, and Sync.
8 verticals. Each with its own inventory context.
INVENTORY_DASHBOARD_CONFIG exposes vertical-specific inventory surfaces. Each vertical gets its own sidebar section with routes scoped to that industry's asset and consumable tracking patterns.
Coworking
Rentals
Local Pros
Golf
Endurance
Developers
Restaurant
Serviced Apartments
4 registered commands. Search, adjust, reorder, check.
The AI commands module registers four Calisto AI commands for the Calisto AI assistant. Action commands execute immediately; fillForm commands pre-populate the UI and require explicit user confirmation before writing.
inventory.searchactionSearch items by name, SKU, or category. Optional lowStockOnly filter narrows to items below reorder threshold.
inventory.adjustStockfillForm · requiresConfirmAdjust quantity with reason code. Calisto AI pre-fills the adjustment form and requires user confirmation before executing the PATCH.
inventory.createReorderfillForm · requiresConfirmCreate a purchase order with optional supplierId. Calisto AI pre-fills vendor, items, and quantities. Requires confirmation before POST.
inventory.checkLevelactionLook up current stock level, reorder point, and recent movement history for a specific item.
POS writes. Shop reads. Ops draws. Sync distributes.
Inventory is the stock-level source of truth. POS deducts on sale, Shop displays availability, Ops links consumption to tasks, and Sync propagates levels to marketplace channels. The stock-alerts event system bridges inventory state to downstream actions.
POS
POS reads/writes inventory. Stock deduction on sale, quantity adjustment with reason USAGE
Shop
Shop reads catalog availability. /api/inventory/feeds/stock-levels exposes per-item quantity and status
Ops
Ops reads operational stock. Consumable draw per task, cleaning supply usage linked via relatedTaskId
Sync
Sync manages marketplace channel connections. Inventory pushes stock levels, Sync handles platform auth and channel config
Stock Alerts → POS
/api/inventory/events/stock-alerts consumed by POS for pause_listings action, halting sales of out-of-stock items
High-Performance Ops. Zero Monthly Overhead.
Get all 15 Core modules at no monthly cost. You only pay 2% of processed revenue.
Inventory
Stock tracking, purchase orders, and reorder automation.
Part of Ops Suite
Wallet-debit
Add to Pro Shop