PRINTEXEC
System Capabilities
& Offered Services
Multi-Tenancy & Data Isolation
Company-Based IsolationEvery record in the system — orders, customers, assets, pieces — belongs exclusively to your company. It is structurally impossible for any other company's users to access or even see your data, regardless of how they are logged in.
Authentication GuardEvery request to the system requires a valid login session. The system verifies who you are, looks up your account, and confirms which company you belong to before allowing any action. Your company identity is always determined by your verified session — nothing you supply in the request can override it.
Row-Level SecurityData isolation is enforced at two independent levels simultaneously — in the database itself and in the application layer. Even if application logic were somehow bypassed, the database would still refuse to return any record that does not belong to your company.
Membership TableThe system maintains an explicit record of every person who belongs to your company, including their role, their permissions, when they joined, and who invited them. The same account can never be added to your company twice, and your company can never have more than one owner at any given time.
Permissions Source of TruthWhen the system checks what a user is allowed to do, it always reads from the live user record — not a cached copy. This means any change to a user's permissions takes effect immediately on their next action.
Public Auth EndpointsA profile endpoint returns the combined account and company information for the logged-in user. A setup endpoint handles first-time account creation automatically — returning the existing profile if it already exists, or creating one on the spot if this is the user's first contact with the system.
Owner OnboardingWhen an owner sets up their account, the system creates the company, the user profile, and the membership record all at once in a single operation — so your workspace is fully ready the moment setup completes, with no partial states or follow-up steps required.
Staff OnboardingWhen a staff member accepts an invite, the system validates the invite token, creates their profile, adds them to the company, and marks the invite as consumed — all in one step. Each invite can only be used once and expires after 48 hours.
Global CatalogFilament and printer specifications are stored in a shared reference catalog available to all companies on the platform. If your company creates a custom specification not already in the catalog, it is added to the global catalog and attributed to your company for others to benefit from as well.
Company Roles & Employee Management
Role ModelThe system supports two roles: owner and staff. Owners have unrestricted access to all areas of the platform. Staff members can only access the specific areas their owner has enabled for them through individual permission flags on their account.
Permission FlagsStaff access is controlled through eight individual on/off flags: viewing orders, acting on orders, viewing customers, acting on customers, viewing assets, acting on assets, sending invites, and managing permissions. Owners are granted all eight flags by default. New staff members start with no permissions until the owner grants them explicitly.
Staff Management RulesWhen managing a staff member, only their permissions can be updated — their role cannot be changed through this action. The system prevents owners from being modified or removed, prevents staff from granting themselves the ability to manage permissions, and prevents any user from removing themselves from the company.
Invite TokensInvites are generated as short, readable codes designed to be easy to share without ambiguity. Each invite expires after 48 hours and can only be used once. The system records exactly when each invite was used and by which account. The active invite list shows only unused, unexpired invites; revoking an invite removes it immediately.
Owner Setup ValidationOwner account setup requires a display name of at least two characters, plus a company name, industry, company size, city, and default currency in the three-letter ISO format. Timezone can optionally be provided. Duplicate email addresses and duplicate company names for the same owner are rejected at the point of creation.
Order Management
Order SchemaEach order stores an order number, title, description, priority, deadline, established date, status, and notes, and is linked to the customer it belongs to. When viewing a list of orders, the system also shows a summary of how many pieces the order contains, how many are scheduled, and how many are ready to print.
Order LifecycleOrders move through five statuses: draft, confirmed, in progress, completed, and cancelled. Every new order starts in draft — the system will not accept an order created in any other status.
Order Number GenerationIf you do not supply an order number, the system generates one automatically in the format ORD-YEAR-NNN, using the established date's year and the next available number for your company that year. If you supply your own order number, it must follow the defined alphanumeric format and be unique within your company.
Auto-Status DerivationOrder status is calculated automatically based on the combined state of all pieces within it — you never need to update an order's status manually. An order with no active pieces is draft; one with a piece actively printing becomes in progress; one where all pieces finished successfully becomes completed. Once an order is cancelled, that status is never automatically overwritten, even if piece states change.
Cancellation & Restoration LogicWhen you cancel an order, only pieces that have not yet started printing are cancelled — any piece already printing, done, or failed is left exactly as it is. When you restore a cancelled order, the system rebuilds each cancelled piece to the most advanced state its data supports: pieces with full scheduling data return as scheduled; others fall back to ready, assigned, or pending depending on what information is still available.
Creation Side-EffectsCreating an order automatically updates the linked customer's record: their total order count is incremented, their first and last order dates are kept current, and an interaction entry is logged on their customer profile. An order history event is also recorded marking the order as created.
List & FilterThe order list can be filtered by customer, status, or free-text search across order number, title, and customer name. Each result includes piece counts showing how many pieces are total, scheduled, and ready to print.
Delete BehaviorDeleting an order releases all filament reservations, removes all its pieces, and then removes the order itself. The linked customer's order count is decremented accordingly. History records are written for the deleted order and each deleted piece.
Update ConstraintsWhen editing an order, the established date cannot be set later than the deadline. Order numbers must remain unique within your company. Status changes are determined by the current state of all pieces — not by manually selecting a new status.
Order HistoryEvery status change and significant event is recorded in a full audit trail for each order and its individual pieces — giving you a complete, time-stamped history of everything that happened throughout the lifecycle of any job.
Customer LinkageEvery order is linked to a customer record and carries that customer's full contact details and interaction history alongside it, so you always have the full relationship context when reviewing any job.
Piece-Level Production Workflow
Status Enum & SemanticsEach piece moves through eight possible states that reflect exactly where it stands in the production process: pending means it has not been fully prepared; assigned means a printer has been designated but it is not yet fully ready to print; ready means everything needed is in place and it can be scheduled; scheduled means a reserved time window exists on a printer; printing means it is actively being produced; done means it finished successfully; failed means it ended unsuccessfully; cancelled means it was intentionally removed from the queue.
Full Production ContractEvery piece carries a complete production specification: the required filament, material, color, and whether it is multicolor; color slot definitions and per-slot gram allocations for multicolor jobs; the required nozzle diameter and material; the assigned printer and nozzle; slicer file and STL file links with upload timestamps; slicer-derived print time in minutes and filament consumption in grams; support configuration; scheduled and actual print timestamps; actual print time and filament used; current status; and notes.
Schema ConstraintsThe system enforces consistency across all piece data: a slicer upload timestamp cannot exist without a slicer file; support gram fields are only valid when supports are enabled; a print completion timestamp requires a print start timestamp; and any piece in ready, scheduled, printing, done, or failed status must have a slicer file attached.
Multicolor HandlingMulticolor support is available for FDM pieces only. A multicolor piece must have at least two color slots defined, and the total filament consumption is calculated from the sum of each slot's gram allocation. When replacing a spool on a multicolor piece, the replacement must match both the material family and the color of the original. Single-color pieces must match the required filament reference and, where specified, the required color.
Patch RestrictionsStandard edits to a piece cannot set it to scheduled, printing, done, or failed — those transitions only happen through dedicated workflow actions. While a piece is actively printing, its core assignment data cannot be changed. Moving a piece to ready status through a standard edit is only allowed if the printer, nozzle, slicer file, print time, and filament gram data are all already in place.
Slicer IntegrationSTL and slicer file links are stored directly on each piece with their upload timestamps. Three-dimensional previews of pieces are accessible from within the ERP interface. The slicer-derived print time, filament consumption, and support configuration are stored on the piece and used as the binding production contract for all scheduling and stock reservation decisions.
DuplicationDuplicating a piece copies all of its production data to a new piece, but the duplicate starts without a printer or nozzle assigned — it re-enters the preparation flow from the beginning, ready for fresh assignment.
Deletion RulesDeleting a piece is blocked for pieces in terminal states (printing, done, or failed) or on closed orders unless a force flag is explicitly passed. When deletion proceeds, all filament reservations are released, the piece is removed, any build plate that contained it is re-evaluated, the parent order's status is recalculated, and the deletion is recorded in piece history.
Detail Response DiagnosticsThe piece detail view shows the current spool allocations alongside scheduling diagnostics — including how many spool allocations are in place, whether a spool replacement is required, and the total planned grams across all allocations — so operators have the full picture before committing to a schedule.
Automatic Status SyncWhenever any piece changes state, the parent order's status is automatically recalculated and updated — so the order-level view always reflects the true, current state of all its pieces without any manual intervention.
Asset & Stock Management
Asset Instance TypesThe system tracks three types of physical assets: filament spools, nozzles, and resin tanks. Each type has its own record storing catalog identity and physical details, while a separate stock record tracks its operational state independently — so catalog information and current availability are always maintained distinctly.
Filament Reference CatalogThe filament catalog stores brand, material type, color, diameter, temperature ranges for bed and extruder, density, finish and texture tags, multicolor-direction tags, translucency and glow flags, description, and notes. Duplicate entries are automatically detected by comparing brand, material type, color, and diameter. Custom filament references created by your company are flagged as global custom entries and attributed to you.
Filament Spool InstancesSpool instances can be created from an existing catalog reference or by entering custom filament details directly. Each spool tracks its initial weight, purchase and production dates, physical location, a marker label, and notes. The stock record tracks remaining grams, reserved grams, and status — with free grams calculated as remaining minus reserved. Statuses are: available, in use, installed, empty, and damaged.
Nozzle InstancesNozzles are tracked with their diameter in millimeters, material, optional maximum temperature, physical location, and notes. When a nozzle is deleted, the system automatically clears any printer stock references to it before removing the nozzle.
Resin Tank InstancesResin tanks are tracked with resin brand, resin type, optional color and UV wavelength, volume in milliliters, relevant dates, physical location, and notes.
3D Printer FleetPrinter models are stored in a normalized reference catalog, deduplicated by brand and model. The system enforces technology-specific rules: FDM printers must have an extruder type, at least one nozzle, a maximum filament diameter, and at least one compatible nozzle diameter; resin printers require a UV wavelength and cannot carry FDM-only fields; SLS printers cannot carry FDM or resin-only fields. The multicolor flag is only permitted on FDM printers with a maximum color count of at least two. Maximum bed temperature cannot exceed the maximum hotend temperature.
Printer–Nozzle CompatibilityWhether a nozzle can be used on a printer is managed through a dedicated compatibility table — it is not assumed from the printer's specs alone. This means compatibility must be explicitly configured. Printer management is company-scoped and requires a valid session, but does not apply separate permission checks between owner and staff roles.
Nozzle TrackingNozzle material, diameter, maximum temperature, and compatibility with each printer are all tracked. A nozzle must be explicitly registered as compatible with a printer before it can be assigned to any print job on that printer.
Automated Stock LogicFilament stock levels are updated automatically throughout the job lifecycle. When a spool allocation is created, the reserved grams are set aside. When a reservation is released, those grams become available again. When a job completes, the actual filament used is consumed from stock. Deleting a spool first removes all its reservations before the spool itself is removed.
Asset HistoryEvery addition, edit, and assignment event for all assets is recorded in a history log. You can filter the history by number of days, event type, and asset type to quickly find what changed and when.
Augmented Decision Making
Candidate Search EngineThe planning engine evaluates every printer and nozzle pair in your fleet to determine which ones can fit a given job within a calculated time window. That window is derived from your company's working hours and a configurable minimum gap threshold — defaulting to a working day of 09:00 to 21:00 and a ten-minute threshold when working hour settings have not yet been configured.
Horizon ExpansionThe search can look ahead across four time scopes: a single day, a full week, a full month, or up to the job's deadline. For the chosen horizon it builds your working-hour intervals, subtracts all time already occupied by scheduled and printing jobs and beds, then checks each printer for maintenance or offline status, available free minutes, print technology match, multicolor capability, compatible nozzle availability, nozzle condition, and combined printer-plus-nozzle availability across the window.
Material Compatibility SofteningMaterial compatibility is treated as a soft warning rather than a hard block. The system groups similar materials — such as PETG and PCTG, or PLA and PLA Plus — into a single family for comparison, and compares colors case-insensitively. A mismatch surfaces as a warning on the candidate result rather than removing the printer from consideration entirely.
Candidate Result ShapeEach search result tells you the minimum gap threshold used, the time horizon searched, the window start and end timestamps, how many working minutes per day are available, a list of qualifying printer-nozzle pairs that can take the job, and a list of printers that were eliminated along with the specific reason each one was ruled out.
Filament Planning EngineA dedicated filament planning tool evaluates your available spool stock and returns one of four outcomes: single — one spool is sufficient; combine — multiple spools need to be used together; insufficient — not enough grams exist across all spools; or none — no eligible spools were found at all. For single-spool jobs it selects the smallest spool that fits. For multi-spool jobs it combines the largest available spools until the gram requirement is met.
Multicolor Filament PlanningFor multicolor pieces, the filament planner runs slot by slot using the color slot data defined on the piece. It can also surface the current reservation data from existing spool allocations, so the operator sees the complete picture — what is already committed and what is still needed — before confirming any plan.
Printer SuggestionsThe system surfaces smart assignment recommendations showing the best available printer and nozzle pairs for a given job, based on real-time fleet availability, material and nozzle compatibility, and the urgency and deadline of the associated order.
Optimum Workflow SequencingThe system generates sequencing suggestions based on how much slack time each job has, which machines are available and when, and how urgent each order is — giving operators a recommended production order designed to maximize throughput across the fleet.
Jobs TimelineTimeline views give you a full operational picture for printers, nozzles, and spools. You can see scheduled time blocks, work that is assigned but not yet scheduled, and — in the spool view — a depletion ledger and reservation map showing exactly which jobs are consuming which grams and when.
Automatic Clock DriverA background time-state service automatically advances job statuses without any operator action required. It starts shortly after the system initializes and checks every sixty seconds — moving any scheduled piece whose start time has arrived to printing status, and completing any printing piece whose end time has passed, including consuming filament from stock and logging the relevant history events.
Scheduling & Resource Allocation
Dual Surface ArchitectureTwo overlapping operational surfaces exist for managing work. The jobs planner is the operator-facing queue — it shows standalone pieces only, excluding any piece that belongs to a build plate group. The piece execution path is the stricter surface that actually locks printer, nozzle, and spool state when a job is committed. Grouped build plate work appears in timeline blocks rather than the jobs queue.
Assign ActionAssigning a piece places it onto a specific printer and nozzle pair, optionally recording the slicer and STL file at the same time. After assignment, the piece moves to assigned status if no slicer file is present yet, or directly to ready if a slicer file is already attached.
Unschedule ActionUnscheduling a piece clears its reserved time window and returns it to ready status if a slicer file is still present, or to assigned status if the slicer file has been removed — so the piece is always left in the correct state relative to what data it holds.
Schedule PreconditionsScheduling a piece requires all of the following to be in place: the piece must be in ready status; a printer and nozzle must be assigned; a slicer file must be present; slicer print time must be recorded; the required filament must be specified; at least one spool allocation must exist; and a printer-nozzle compatibility record must be registered. Start times in the past are rejected unless they fall within a sixty-second grace window. Any overlap with another scheduled or printing piece on the same printer, nozzle, or reserved spools is rejected.
Collision AvoidanceOverlap prevention is enforced at the database level using exclusion constraints — meaning two jobs cannot be committed to the same printer, nozzle, or spool at the same time regardless of which path wrote the data. This protection holds even if multiple operations happen simultaneously.
Execution & CompletionA piece advances to printing either through the jobs start action or through the stricter piece execution path. On completion, actual print time, actual filament consumed, and stock usage are all reconciled. The stricter execution path additionally marks the printer as in use, records the active nozzle, marks all allocated spools as in use, and on completion consumes the reserved filament from stock. On failure, filament is either consumed or released depending on how much was actually used.
Multi-Spool AllocationA single piece can draw filament from multiple spools, with the planned gram usage tracked individually per spool. All spool allocations must belong to your company and reference valid filament spool assets. The order in which spools are consumed is tracked and must be unique per piece.
Resource LockingWhen a print job starts, the assigned printer, nozzle, and all allocated spools are atomically locked for the full duration of that job. No other job can claim any of those resources while the lock is held — preventing conflicts without any manual coordination.
Beds — Grouped Build PlatesBeds allow two or more pieces from the same company to be grouped onto a single build plate, sharing the same print technology or an explicitly supplied override. Only pieces in pending, assigned, or ready state can be added to a bed. The bed inherits its production requirements from its child pieces — print technology, filament reference or material, nozzle diameter and material, multicolor capability — and its effective deadline is set to the earliest deadline among all the child orders.
Bed LifecycleBeds move through nine statuses: pending, assigned, ready, scheduled, printing, done, failed, cancelled, and disassembled. Supported actions include assign, schedule, unschedule, complete, cancel, restore, reprint, disassemble, delete, and searching for candidate printers or filament plans. Bed scheduling follows the same compatibility and overlap rules as standalone pieces, including the sixty-second grace window on past start times. When no explicit spool allocations are provided, filament reservation for a bed can be auto-planned from the bed's first child piece.
Offline and Maintenance RollbackTaking a printer offline or into maintenance automatically rolls back all work committed to that printer that has not yet started printing — covering both standalone pieces and beds. All affected pieces are returned to pending status and all their spool reservations are released, making those resources immediately available for reassignment to other jobs.
Core Constraints & Business Logic
Enforcement LayersBusiness rules are enforced across three independent layers: schema constraints at the database level, database triggers that fire whenever data changes, and guards in the application layer. Company data isolation is reinforced by row-level security on all business tables in addition to company scoping applied on every query — so no single point of failure can bypass the rules.
Role and Membership ConstraintsEvery account belongs to either the owner or staff role — no other values are accepted. A person can only be a member of a given company once, and each company can have exactly one owner at any time. Invites are strictly single-use and expire after a set time window; the system records when each token was used and by whom, and refuses both reused and expired tokens.
Customer ConstraintsEmail addresses must be unique within your company — no two customers can share the same email. Business customers must have a business name on file; individual customers must have a first name. Country codes are always stored in standard two-letter uppercase format. Soft-deleted customers cannot be edited until they are actively restored.
Order ConstraintsAn order's established date cannot be set later than its deadline. Order numbers must be unique within your company, and any manually entered number must follow the defined alphanumeric format. Every new order must begin in draft — no other starting status is accepted. Once an order is cancelled, that status holds permanently regardless of what happens to its pieces; the system never automatically overwrites a cancellation.
Piece-Level ConstraintsA piece cannot move to ready, scheduled, printing, done, or failed status without a slicer file attached. A print completion time cannot exist without a print start time. A scheduled end time must always come after the scheduled start time. Assigned pieces must have a printer designated; pieces in ready or scheduled state must have all core production fields filled in. Two pieces cannot overlap on the same printer or nozzle at the same time — this is enforced at the database level. Pieces grouped onto a build plate follow the bed's own lifecycle rather than the standalone piece rules.
Spool Allocation ConstraintsEvery spool allocation must reserve a positive number of grams — zero or negative values are rejected. Each spool can only appear once per piece, and each position in the consumption sequence must be unique per piece. The system automatically verifies that the piece, the spool, and the allocation all belong to the same company, and that the referenced asset is in fact a filament spool.
Stock Table IntegrityAsset statuses are restricted to their defined values — nothing outside those values can be stored. Reserved gram and volume figures are bounded to valid ranges. A printer cannot be used while it is offline. When a printer is listed as in maintenance, valid maintenance timestamps must be recorded.
Status-Based RestrictionsA piece cannot be scheduled until it has a slicer file and all required resources — printer, nozzle, and filament — are in place. A nozzle must be explicitly registered as compatible with a printer before it can be used on any job for that printer. The total filament reserved across all spool allocations must fully cover the slicer's gram requirement before a schedule can be committed.
Delete Path AsymmetryDeleting a customer is a thorough cascade: it deactivates the customer, cancels their active orders and any eligible pieces, releases all spool reservations, updates any affected build plates, and logs a deletion event. Deleting an order is a lighter operation — it does not trigger the same build plate re-evaluation. Deleting a piece is blocked by default for terminal-state pieces and pieces on closed orders; a force flag must be explicitly passed to override this.
Effective Immutability by Route DesignSome protections are enforced through what the system simply does not allow rather than explicit locks: terminal piece statuses cannot be set through a standard edit — only through dedicated workflow actions; soft-deleted customers cannot be modified until restored; printer management carries no distinction between owner and staff access; and a staff member can never grant themselves permissions beyond what they currently hold.
Customer CRM
Customer SchemaEach customer profile stores whether they are a business or an individual, their name and business name, tax ID, email, up to two phone numbers, a full address, city, and country. The profile also tracks their total number of orders, the date of their first and most recent order, whether they are currently active, and any notes. A display name is derived automatically from the available name fields.
Type ValidationThe system enforces type-appropriate requirements: business customers must have a business name; individual customers must have a first name. Country codes are automatically formatted to the standard two-letter uppercase format. If you attempt to add a customer with an email address already used by another customer in your company, the request is rejected.
List & SearchThe customer list can be filtered by customer type and active status, and supports free-text search across business name, first name, last name, email, and phone number. Soft-deleted customers remain visible in list results by default — they must be explicitly filtered out if you want to see only active customers.
CRM CountersEach customer profile automatically keeps a live count of their total orders, the date of their first order, and the date of their most recent order — updated in real time whenever an order is created or removed. This means you always see an accurate order history on every customer profile without any manual tracking.
Interaction HistoryEvery interaction with a customer is automatically logged — including when they were added, edited, had an order created, or were actioned in any other built-in way. You can also manually log any custom interaction type for a customer, giving you a full and flexible activity record for every relationship in your company.
Interaction ViewsInteraction history is accessible in two ways: a per-customer view showing the complete chronological activity log for that customer, and a company-wide view showing up to one hundred recent interactions across all customers — filterable by interaction type and time window — giving you a live pulse of relationship activity across your entire operation.
Soft Delete & RestoreDeleting a customer is non-destructive: their profile is deactivated and hidden rather than removed, their active orders and eligible pieces are cancelled, all filament reservations are released, any affected build plates are updated, and a deletion event is logged. If you restore a deleted customer, their profile is reactivated and a restore event is recorded — their order history is left exactly as it was.
Omnichannel MessagingYou can message customers directly from within the platform via email or WhatsApp. Bulk messaging is supported, allowing you to send a single message to multiple customers at once — useful for campaigns, updates, or broadcast communications to your customer base.