Reference
Node types
Process Map uses four node types — Start, Task, Queue, and End.
Start
The Start node is the entry point for work items. You configure it with distributions that control how often items arrive and how much work each arrival brings.
Every scenario must have exactly one Start node. The simulation will not run if you have zero or more than one.
| Field | Description |
|---|---|
| Label | Name displayed on the canvas |
| Arrival frequency distribution | How often work items arrive (for example, exponential(rate=2) means on average 2 arrivals per time unit) |
| Arrival severity distribution | Optional quantity per arrival |
Task
A Task node represents a processing step. When a work item arrives, it spends time being processed — sampled from the service time distribution you configure — before moving to the next node.
| Field | Description |
|---|---|
| Label | Name displayed on the canvas |
| Distribution | Service time distribution |
| Resources | Optional resource assignments (limits concurrency) |
Queue
A Queue node is a waiting room. Work items accumulate here until capacity is available downstream. Use it to model buffers and backlogs in your process.
| Field | Description |
|---|---|
| Label | Name displayed on the canvas |
| Capacity | Maximum items that can wait simultaneously (null = unlimited) |
Queues do not consume service time — items pass through instantly once capacity becomes available.
End
The End node is the exit point for work items. Every scenario must have at least one End node.
If your process has no End node the simulation cannot run. Add at least one End node to complete the flow.
Node indicators
Each node on the canvas shows visual indicators so you can see its configuration at a glance.
| Indicator | Meaning |
|---|---|
| Distribution badge | Shows the configured distribution type |
| Resource dots | Colored dots for each assigned resource |
| Sim icon | Opens the simulation config panel for this node |
| Info icon | Opens the node info panel |
Connection properties
| Property | Type | Description |
|---|---|---|
probability | float (0–1) | Weight used for probabilistic routing. Must sum to 1 across all outgoing connections from a node. |
routing_condition | expression string | Boolean expression for conditional routing. Evaluated against the unit's label values. |
label | string | Optional display label shown on the connection line in the canvas. |
Routing modes and expression syntax
When a node has multiple outgoing connections, you choose how work items are distributed:
| Mode | Behavior |
|---|---|
| Probabilistic | Each connection has a probability weight (0–1). Work items are routed randomly according to those weights. Weights must sum to 1. |
| Conditional | Each connection has a boolean expression. Conditions are evaluated in order; the first connection whose condition is true is taken. |
A routing condition is a boolean expression evaluated against the unit's label values:
<expression> := <term>
| <expression> AND <term>
| <expression> OR <term>
<term> := <field> <operator> <value>
| ( <expression> )
<field> := label name (defined in the scenario's label set)
<operator> := < | <= | = | >= | > | <>
<value> := number | "string"
AND binds tighter than OR. Use parentheses to override precedence.
Supported operators:
| Operator | Meaning |
|---|---|
< | Less than |
<= | Less than or equal to |
= | Equal to |
>= | Greater than or equal to |
> | Greater than |
<> | Not equal to |
Examples:
| Expression | Routes when |
|---|---|
priority = "high" | The unit's priority label equals "high" |
score >= 80 | The unit's score label is 80 or above |
score >= 80 AND region = "north" | Both conditions are true |
score < 50 OR escalated = "yes" | Either condition is true |
See Setting up conditional routing for how Router nodes evaluate these expressions, including default routes and validation.
Distributions
| Distribution | Parameters | Example use |
|---|---|---|
constant | value | Fixed processing time (e.g. always 5 min) |
normal | mean, std | Normally distributed service time |
exponential | rate | Memoryless arrivals (classic queuing) |
uniform | low, high | Any value equally likely in a range |
poisson | rate | Count-based arrival process |
lognormal | mean, sigma | Right-skewed service times |
gamma | shape, scale | Flexible positive-value distribution |
weibull | scale, shape | Wear-out or reliability modeling |
triangular | low, mode, high | Three-point estimate |
Output metrics
After each run, Pocketstats reports:
| Metric | Description |
|---|---|
| Units completed | Total work items that reached an End node |
| Throughput | Units completed per time unit |
| Avg cycle time | Mean time from arrival to completion |
| Avg queue depth | Mean number of items waiting at each Queue node |
| Avg resource utilization | Fraction of time each resource was in use |
Resource properties
| Property | Type | Description |
|---|---|---|
| Name | string | Display name shown in the Manage Resources dialog and on canvas indicators. |
| Cost | number | Dollar amount per period (for example, 75 for $75/hour). Optional. |
| Period | string | Time unit for the cost rate: hour, day, or minute. Required if cost is set. |
| Color | color | Color used for the resource indicator dot on the canvas. |
| Units | integer ≥ 1 | Total pool size — how many units of this resource exist across the whole process. Default: 1. |
Scenario properties
| Property | Type | Description |
|---|---|---|
id | integer | Auto-assigned identifier |
name | string | Display name (up to 255 characters) |
created_at | datetime | When the scenario was first saved |
version | integer | Optimistic-lock counter; increments on every save |
owner | user | Personal scenarios are owned by a single user |
organization | org | Org scenarios are visible to all org members |
share_token | UUID | Present when sharing is enabled; null otherwise |
Plan limits
| Feature | Free (trial expired) | Pro |
|---|---|---|
| Create scenarios | — | Unlimited |
| Edit scenarios | — | ✓ |
| Run simulations | — | Unlimited |
| View existing scenarios | Read-only | ✓ |
| Share scenarios | — | ✓ |
| Organization scenarios | Read-only | ✓ |
All new accounts include a 14-day Pro trial with full access — no credit card required.
Config file format
You can export and import scenarios as .conf text files. The format is human-readable and version-control friendly, making it easy to track changes, diff models, or script bulk edits. See Importing and exporting a scenario for the procedure.
The file is divided into up to five sections separated by ---:
| Section | Contents |
|---|---|
| Nodes | Node type and label for each node |
| Distributions | Arrival and service time distributions |
| Connections | Edges and routing probabilities |
| Resources | Resource pool definitions |
| Resource allocations | Which resources are assigned to which nodes |
Comments start with # and can appear anywhere in the file.
Full example
# My process model
---
S:Intake
T:Review
T:Approval
Q:Buffer
E:Done
---
Intake ~ exponential(rate=2), constant(value=1)
Review ~ normal(mean=5, std=1)
Approval ~ lognormal(mean=2, sigma=0.5)
---
Intake -> Review
Review -> Buffer
Buffer -> Approval : 0.8
Buffer -> Done : 0.2
Approval -> Done
---
R:Analyst $50/hour #4a90d9
R:Manager $100/day
---
Analyst(1) -> Review
Manager(1) -> Approval
Nodes section
One node per line: <prefix>:<label>
| Prefix | Type |
|---|---|
S: | Start |
T: | Task |
Q: | Queue |
E: | End |
Distributions section
One distribution per line: <label> ~ <dist>
- Task nodes:
<label> ~ <distribution> - Start nodes:
<label> ~ <frequency_dist>, <severity_dist> - Queue and End nodes have no distribution.
Distribution syntax: <name>(<param>=<value>, ...)
| Distribution | Parameters |
|---|---|
constant | value |
exponential | rate |
normal | mean, std |
uniform | low, high |
poisson | mu |
lognormal | mean, sigma |
gamma | shape, scale |
weibull | scale, shape |
triangular | low, mode, high |
Connections section
One connection per line: <from> -> <to> or <from> -> <to> : <probability>
Review -> Approval
Review -> Rejected : 0.1
If you omit the probability on a connection, it defaults to 1.0.
When multiple connections leave the same node, their probabilities must sum to 1.0. An unbalanced routing probability will cause a validation error on import.
Resources section
One resource per line: R:<name> $<cost>/<period> #<hex-color>
Cost and color are optional.
R:Analyst $50/hour #4a90d9
R:Manager
Resource allocations section
One allocation per line: <resource_name>(<count>) -> <node_label>
Analyst(1) -> Review
Manager(2) -> Approval
Validation errors
If the .conf file contains errors, the import will fail with a message describing the problem — for example, an unknown distribution name or a connection that references a node that does not exist. Fix the reported line and re-import.
Sharing
Share links look like:
https://pocketstats.io/shared/<uuid>/
Each link is a unique UUID. Revoking and re-enabling sharing generates a new UUID, so old links stop working.
When someone opens a share link, they see a read-only version of the canvas. Viewers can:
- Pan and zoom the canvas
- Click any node or connection to inspect its configuration in the side panel
- View node type, label, distribution parameters, and resource assignments
- View connection routing mode and probability weights
Viewers cannot:
- Edit nodes, connections, or any configuration
- Run simulations
- Export or duplicate the scenario
- See other scenarios in your account
The toolbar and editing controls are hidden. The viewer sees only the canvas and a read-only configuration panel.
Sharing API
| Method | Endpoint | Action |
|---|---|---|
POST | /api/scenarios/<id>/share | Enable sharing (returns share_token and share_url) |
DELETE | /api/scenarios/<id>/share | Disable sharing |
GET | /api/shared/<token> | Read scenario data (public, no auth required) |
Keyboard shortcuts
On macOS, replace Ctrl with Cmd for all shortcuts below.
| Key | Action |
|---|---|
V | Select / move tool |
T | Place Task node |
Q | Place Queue node |
S | Place Start node |
E | Place End node |
C | Connect tool |
I | Toggle info panel (requires a node to be selected) |
M | Open Manage Resources modal |
Delete / Backspace | Delete selected node or connection |
Ctrl+Z | Undo |
Ctrl+Y / Ctrl+Shift+Z | Redo |
Both Ctrl+Y and Ctrl+Shift+Z trigger redo on Windows and Linux. On macOS, use Cmd+Z to undo and Cmd+Shift+Z to redo.
Canvas interactions
| Action | How |
|---|---|
| Place node | Select tool from toolbar (or keyboard shortcut), click on canvas |
| Move node | Drag in select mode |
| Connect nodes | Connect tool → drag from source handle to target |
| Select | Click node; Ctrl+click for multi-select; drag-box for area select |
| Delete | Delete or Backspace with node or edge selected |
| Open info panel | I with node selected, or click the info icon on the node |
| Open sim panel | Click the simulation icon on a node |
| Fit view | Toolbar fit button |