Pattern
Image → generative artwork
Takes a logo or image and turns it into generative artwork: repeating tiles, a kaleidoscope-style texture, or a patterned background you can use for branding.
How it works
Pattern is a creative node, not a document tool. You feed it one image, usually a logo or icon, and it multiplies and arranges it into decorative artwork rather than leaving it as a single picture.
The output can look like tiled wrapping paper, a kaleidoscope texture, or a soft branded backdrop, depending on the style you pick. It is useful when you want on-brand visuals (a cover background, a header graphic, packaging texture) generated from art you already own.
Think of it as a design step that sits off to the side of your usual paperwork flows. It produces an image, so whatever comes next is typically storing that image or placing it onto something else.
Common use cases
Real situations where this node earns its place in a flow.
Turn a logo into a pattern
Generate tiled artwork from a mark for use as a background or cover.
Make a subtle backdrop
Produce a repeating pattern to sit behind a document or certificate.
On-brand graphics
Generate decorative artwork from a source image for marketing pieces.
Pattern in a workflow
A simple example of where this node sits in a flow.
What you set up
- Supply the source image (your logo or icon works best) from an upload or an earlier step.
- Pick the pattern style, such as repeating tiles or a kaleidoscope-style texture.
- Send the resulting artwork on to be stored or dropped onto another design.
Common questions
Is this for processing documents?
No. Pattern is a branding and design node. It makes decorative artwork from an image, so reach for it when you want visuals, not when you are handling forms or reports.
What kind of image should I feed it?
A clean logo, mark, or simple icon gives the best repeating results. Busy photos tend to turn muddy once they are tiled or mirrored.
Settings you configure on this node, stored under data.config in the workflow JSON. Leave a field unset to use its default.
canvasWidthOutput canvas width in pixels (16 to 4000).
Type: numberDefault:1000canvasHeightOutput canvas height in pixels (16 to 4000).
Type: numberDefault:1000spriteSizeSize of each stamped sprite in pixels.
Type: numberDefault:120countTarget number of sprite copies.
Type: numberDefault:25arrangementGeometric layout used to place the sprite copies.
Type: enum: grid | brick | hex | radial | concentric | spiral | mirrorDefault:gridbackgroundCanvas background color; empty or 'none' means transparent.
Type: stringDefault:transparentscalePer-sprite scale multiplier.
Type: numberDefault:1opacityPer-sprite opacity from 0 to 1.
Type: numberDefault:1rotationPer-sprite base rotation in degrees.
Type: numberDefault:0jitterPositionRandom positional jitter applied per copy.
Type: numberDefault:0jitterRotationRandom rotation jitter applied per copy.
Type: numberDefault:0jitterScaleRandom scale jitter applied per copy.
Type: numberDefault:0seedDeterministic seed for the jitter randomness.
Type: numberDefault:1falloffScaleEnd scale multiplier for distance-based falloff.
Type: numberDefault:1falloffOpacityEnd opacity multiplier for distance-based falloff.
Type: numberDefault:1filenameTemplateTemplate for the output filename.
Type: stringDefault:{merchant}-{date}
How this node appears inside a workflow's nodes[] array (the shape you see in the Developer export / import). A full workflow is { nodes: [...], edges: [...] }.
{
"id": "stamp",
"type": "card",
"position": {
"x": 160,
"y": 120
},
"data": {
"type": "stamp",
"kind": "processor",
"title": "Pattern",
"subtitle": "Image → generative artwork",
"config": {
"canvasWidth": "1000",
"canvasHeight": "1000",
"spriteSize": "120",
"count": "25",
"arrangement": "grid",
"background": "transparent",
"scale": "1",
"opacity": "1",
"rotation": "0",
"jitterPosition": "0",
"jitterRotation": "0",
"jitterScale": "0",
"seed": "1",
"falloffScale": "1",
"falloffOpacity": "1",
"filenameTemplate": "{merchant}-{date}"
}
}
}