---
title: Package a production process as a team App
display: 'Package a production process as a *team* App'
nav_title: Team production App
summary:
  - "One repeated production step packaged as a team App: two form fields, fixed brand rules and a review step."
  - "Start from a platform App, write the rules into the graph, add an Approval node, then lock the workflow."
  - "Each run costs one generation; building the App costs nothing until it runs, and its description states the price."
description: Turn a repeated production step into an App with fixed rules, an approval step and a two-field form, so anyone on the team gets the same result.
section: playbooks
order: 420
type: playbook
topic: Studio and production
level: Scale
roles: [team-lead, developer]
time: { read: 10, do: 40, wait: 5 }
needs: ["A plan with workflows", "One production step your team repeats with the same rules", "Edit rights in the project where the team works"]
last_verified: 2026-10-16
models_checked: ["GPT Image 2.5 Sunburst"]
hero: playbooks/team-asset-pipeline-app/double-ember-to-mexico-city-counter-ember-bun.webp
related: [publish-a-workflow-as-an-app, approval-and-review-steps, platform-workflows-and-templates, run-and-share-apps, product-lifestyle-scenes]
run_in: [model_openai-gpt-image-2-5-sunburst]
# the use case made, on scenario.com/explorations, and the platform workflows that run it
made_with:
  - { slug: content-engine, title: "Content Engine" }
thumb: playbooks/team-asset-pipeline-app/thumb.webp
video: tutorials/team-asset-pipeline-app.mp4
chapters:
  - { at: 0, title: "The team App to build", image: "/media/images/playbooks/team-asset-pipeline-app/ch-01-the-team-app-to-build.webp" }
  - { at: 21, title: "Start from a platform App", image: "/media/images/playbooks/team-asset-pipeline-app/ch-02-start-from-a-platform-app.webp" }
  - { at: 49, title: "Read its graph", image: "/media/images/playbooks/team-asset-pipeline-app/ch-03-read-its-graph.webp" }
  - { at: 64, title: "The rules go in the prompt builder", image: "/media/images/playbooks/team-asset-pipeline-app/ch-04-the-rules-go-in-the-prompt-builder.webp" }
  - { at: 94.5, title: "An Approval node", image: "/media/images/playbooks/team-asset-pipeline-app/ch-05-an-approval-node.webp" }
  - { at: 110, title: "Two fields, the output after review", image: "/media/images/playbooks/team-asset-pipeline-app/ch-06-two-fields-the-output-after-review.webp" }
  - { at: 124, title: "Lock it and share", image: "/media/images/playbooks/team-asset-pipeline-app/ch-07-lock-it-and-share.webp" }
  - { at: 146, title: "Recap", image: "/media/images/playbooks/team-asset-pipeline-app/ch-08-recap.webp" }
steps:
  - title: "Start from a platform App"
    text: "Workflows › Apps › Platform › E-Commerce › Product Studio. Upload the product photo, type the market's setting and run it once per market; it held the burger and wrapper but added a menu board with prices, a bottle label and logo shirts."
    prompt: |-
      on the steel counter of a busy burger restaurant in Mexico City at lunchtime, the illuminated menu board on the wall behind
  - title: "Read its graph"
    text: "From the run page, the Edit workflow icon opens the graph in run-only mode: two inputs, a router, Custom Prompt Builder and one generator. Its prompt has no keep-list, no rule against added text and no review step."
  - title: "The rules go in the prompt builder"
    text: "More › Duplicate Workflow, rename the copy Ember & Bun market scene, Switch to Edit Mode, then write the rules around the setting variable in Custom Prompt Builder. Tested on its own in two markets, it kept only the wrapper print readable."
    prompt: |-
      The exact burger from the reference image, with its bun, patties, cheese, pickles and onions unchanged, on the same EMBER & BUN wax paper with its red print unchanged, placed [setting]. The wax paper print faces the camera and is sharp. Warm key light from behind, glistening texture, soft contact shadow under the paper. Natural food photography. No other text and no other logos anywhere: menu boards, signs, packaging, clothing and bottles stay blank or out of focus.
  - title: "An Approval node"
    text: "Add node › Utilities › Approval, wired from Product Scene Generator, with a message that states the check: \"Approve only if the wax paper reads EMBER & BUN letter for letter, the item matches the photo, and no other text appears.\""
  - title: "Two fields, the output after review"
    text: "Edit App: pin Product Photo (required) and User Prompt (Optional), and pin the output after review so results don't reach the library unchecked. Short Description: \"Your menu item in a market scene, wrapper print exact, no other text\"."
  - title: "Lock it and share"
    text: "More › Lock Workflow; the App then shows under Workflows › Apps › Project. Test it on one item before the team relies on it, and name the App in Settings › Project › Agent › Project Instructions so the Agent uses it too."
agent_steps:
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "The product photo (here the burger on its EMBER & BUN wax paper) and one setting line per market. Upload the photo with upload_asset or give its asset ID."
  - title: "Brief the agent: test the rules first"
    text: "Before anyone builds the App, test the prompt that will go in its Custom Prompt Builder on its own, in two markets. The platform App alone held the burger but added a menu board with prices, a bottle label and logo shirts."
    prompt: |-
      Test this prompt with GPT Image 2.5 Sunburst (model_openai-gpt-image-2-5-sunburst), with the product photo in referenceImages as an array. Run it twice, replacing [setting] with one market line each time; the first line is below. Quote the cost with a dry run first and wait for my go.

      Prompt, word for word:
      The exact burger from the reference image, with its bun, patties, cheese, pickles and onions unchanged, on the same EMBER & BUN wax paper with its red print unchanged, placed [setting]. The wax paper print faces the camera and is sharp. Warm key light from behind, glistening texture, soft contact shadow under the paper. Natural food photography. No other text and no other logos anywhere: menu boards, signs, packaging, clothing and bottles stay blank or out of focus.

      First setting line, word for word:
      on the steel counter of a busy burger restaurant in Mexico City at lunchtime, the illuminated menu board on the wall behind

      Show me both results and tell me, for each, whether the wax paper reads EMBER & BUN letter for letter, whether the burger matches the photo, and whether any other text or logo appears.
  - title: "Build the App in the web app"
    text: "The Scenario MCP runs workflows; you build this one on the canvas. Duplicate Product Studio, put the tested prompt in Custom Prompt Builder, add an Approval node with the message \"Approve only if the wax paper reads EMBER & BUN letter for letter, the item matches the photo, and no other text appears.\", pin the two fields and the output after review, then lock it. The web app steps above show each click."
  - title: "Run the App from the agent"
    prompt: |-
      Find the "Ember & Bun market scene" App with workflows_list. Run it with workflow_run once per market, with the product photo as image1 and the market's setting line as text1. Quote one run first and wait for my go. When a run reaches the Approval step, show me the result and wait: approve it with workflow_approve only if I say yes, otherwise reject it with workflow_reject.
  - title: "Review, file and report"
    text: "Accept when the wrapper print reads letter for letter, the burger matches the photo, and no other text or logo appears anywhere. Reject invented menus, prices, taglines or labels, or a result that reached the library without review."
    prompt: |-
      Create a collection called "Ember & Bun market scenes" and add the approved results. Report every workflow run, its market, whether it was approved or rejected and why, every asset ID and the total cost spent.
updated: 2026-10-16
canonical: https://learn.scenario.com/playbooks/team-asset-pipeline-app
---

Last updated: 2026-10-16

# Package a production process as a team App

> Turn a repeated production step into an App with fixed rules, an approval step and a two-field form, so anyone on the team gets the same result.

In short:

- One repeated production step packaged as a team App: two form fields, fixed brand rules and a review step.
- Start from a platform App, write the rules into the graph, add an Approval node, then lock the workflow.
- Each run costs one generation; building the App costs nothing until it runs, and its description states the price.


A team App for one production step: two fields (a product photo and a setting), the brand's fixed rules inside, a review step before delivery, and a locked workflow. For team leads who see the same step done ten different ways by ten people.

:::note As of October 2026
The models, settings and screens in this article are the ones Scenario offered in October 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

![The Double Ember burger on its printed wax paper in a studio photo, and the same burger and wax paper on the steel counter of a busy burger restaurant, the menu boards behind blurred, with no readable text](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/6aa181485d1bc61dbcc471e48eb8ca613d3820aa7769e54040003e6194fb0807.webp "Left: the hero photo. Right: the team rule prompt for Mexico City at lunchtime: wrapper print exact, no other text.")

## The brief

| Field | Brief |
|---|---|
| Step | The hero photo of a menu item to a scene for each market's menu boards and local posts |
| Users | Marketing managers in each market, who do not write prompts |
| Inputs | A product photo (required), a setting description (optional) |
| Fixed | Model, quality, the keep-list (item and wax paper print unchanged), the print facing the camera, warm key light from behind, no other text or logos |
| Review | A person approves each result before it reaches the library |
| Accept when | A market manager who never saw the workflow gets a usable result on the first run, from the App description alone |

The example brand is the invented Ember & Bun burger chain, and the product is its Double Ember on the chain's red-printed wax paper. The starting point is a ready-made platform App, **Product Studio**, which the team version extends.

## Approach

:::flow
Platform App | Product Studio, run once per market |
Duplicate | Copy into your project |
Rules in the graph | Keep-list, print, light, no other text | text
Review | Approval node after the generator |
App and lock | Two pinned fields, Lock Workflow |
:::

An App is a workflow with a form on top ([Publish a workflow as an App](https://learn.scenario.com/workflows/publish-a-workflow-as-an-app.md)). The work is deciding what the team may change (the form fields) and what it may not (everything inside). Three rules make it hold:

1. **Start from a working workflow.** Platform Apps are maintained, tested graphs. Read one, run it once on your own input, then copy it and change only what your rules need ([Platform workflows and templates](https://learn.scenario.com/workflows/platform-workflows-and-templates.md)).
2. **Put the rules in the graph, not in a note.** Brand light, the [keep-list](https://learn.scenario.com/browse) and the "no other text" rule go into the prompt-building nodes. Users cannot forget what they never have to type.
3. **Put a person where a mistake costs money or reputation.** An **Approval** node before delivery, with a message that states the check ([Approval and review steps](https://learn.scenario.com/workflows/approval-and-review-steps.md)).

Models, as of October 2026:

- **Capability:** image to image with a reference, inside a workflow.
- **Model used:** Product Studio runs **GPT Image 2.5 Sunburst**.
- **Cheaper drafts:** **GPT Image 2.5 Flare** ([Run a model shoot-out](https://learn.scenario.com/playbooks/compare-models-for-your-studio.md)).

What the platform **Product Studio** App contains, as read in its graph:

| Group | Node | What it does |
|---|---|---|
| 1. Inputs | **Product Photo** (image), **User Prompt (Optional)** (text) | The two form fields |
| 2. Route Prompt | **Prompt Router** (If-Else) | Checks whether the user typed a setting |
| 3. Compose Prompt | **Custom Prompt Builder** or **Default Prompt** | Builds the prompt from the user's setting, or uses a default "most relevant setting" prompt |
| 4. Generate | **Product Scene Generator** | GPT Image 2.5 Sunburst, one output, quality auto |

The custom prompt it builds is: `Place the product from the reference image: ` + your setting + `Integrate the product naturally with proper lighting, shadows, and reflections that match the environment. Create photorealistic composition with authentic atmosphere and professional product photography quality.`

That is a sound general template, and on the Double Ember it kept the burger and the wax paper print in every run. It has no keep-list, no rule against added text, and no review step. Those are the three changes the team version makes.

## Steps

:::steps
1. **Run the platform App once per market.** **Workflows** > **Apps**, tab **Platform**, filter **E-Commerce**, open **Product Studio**. Upload the product photo, type a setting and run it. The runs used three markets, for example `on the steel counter of a busy burger restaurant in Mexico City at lunchtime, the illuminated menu board on the wall behind` and `on a dark walnut counter by the window of a corner burger restaurant at dusk, warm light inside, a wet city street glowing outside`.

   ![The Apps page on the Platform tab with category filters](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/8762a691d8b3b96ae7df31348b5b20560c0514ff7971dd118d14bbbbfd64cf12.webp "Workflows > Apps > Platform, with the category filters.")

   The burger and the EMBER & BUN print held in all three runs. Each run also added text nobody asked for: a full menu board with prices, a sauce bottle label and logo shirts in Mexico City; a window decal with an invented tagline, a chalkboard sign and a neon sign at dusk; a branded fries carton on the third.

   ![The Double Ember on a steel counter in a busy burger restaurant, under a large illuminated menu board with item names and prices, a labeled sauce bottle and staff in logo shirts](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/a707a579d663ee0a7b098b5a7a57ebe3756944dd311dfdb2d571f4ac443866c3.webp "Platform Product Studio, Mexico City setting: burger and wrapper exact, plus an invented menu, prices and labels.")

2. **Open its graph.** From the App's run page, click the **Edit workflow** icon to open the workflow. Platform workflows open in run-only mode; read the groups and the prompt nodes before changing anything.

   ![A platform workflow open in the editor in run-only mode](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/cf117b55b400489a30ca3d9633d5cfce3adf2636b1abaf428076bc408e49a5a9.webp "A platform workflow in the editor, run-only.")

3. **Copy it into your project.** Open the **...** menu and choose **Duplicate Workflow**, then rename the copy, for example `Ember & Bun market scene`. Check that the copy sits in your project and opens in edit mode before you change any rule.

   ![The workflow ... menu with View Outputs, Lock Workflow, Export Workflow and Duplicate Workflow](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b5bc84f7c3510a1fb2b94d9ed96b791caef06fda69c67894ae8122641ead031c.webp "The ... menu: Duplicate Workflow, Lock Workflow, Export Workflow.")

4. **Write the rules into the prompt builder.** Edit **Custom Prompt Builder** so the setting is wrapped in your rules. This is the prompt as tested, with the setting as the variable:

   ```prompt
   The exact burger from the reference image, with its bun, patties, cheese,
   pickles and onions unchanged, on the same EMBER & BUN wax paper with its
   red print unchanged, placed [setting]. The wax paper print faces the
   camera and is sharp. Warm key light from behind, glistening texture, soft
   contact shadow under the paper. Natural food photography. No other text
   and no other logos anywhere: menu boards, signs, packaging, clothing and
   bottles stay blank or out of focus.
   ```

   It was run directly on GPT Image 2.5 Sunburst with the Double Ember photo as the reference, for the Mexico City and dusk settings: the print read EMBER & BUN letter for letter, and no other text appeared. For an App that serves the whole menu, write the keep-list for any item (`the exact menu item from the reference image, with every ingredient unchanged`) and test it on two items. Do the same in **Default Prompt**, so an empty setting still follows the rules.

5. **Add the review step.** Open the node palette (**Add node**), add **Approval** from **Utilities** after **Product Scene Generator**, wire the generator into it, and write the message: `Approve only if the wax paper reads EMBER & BUN letter for letter, the item matches the photo, and no other text appears.`

   ![The node palette scrolled to Utilities, with Approval described as Wait for user approval](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/413a3f9f02777ae8f8d5cb114a740ed39a8563a18c78b70519a8ad7d142a21c0.webp "Utilities in the node palette: Loop, If-Else, Sticky Note and the Approval node.")

6. **Turn it into an App** ([Package it as a workflow or skill](https://learn.scenario.com/browse)). Click **Edit App**. Pin **Product Photo** (required, filled star) and **User Prompt (Optional)** (optional, empty star), rename them `Product photo` and `Setting`, and pin the output after the **Approval** node. Write the **Short Description** (`Your menu item in a market scene, wrapper print exact, no other text`) and the **Long Description** (what photo to upload, what to type, the cost per run, who approves). Upload an **Output Preview** (required) and an **Input Preview**.

7. **Lock and share.** In the **...** menu choose **Lock Workflow**. The App appears for the team under **Workflows** > **Apps**, tab **Project**. Ask one market manager who has never seen it to run it with your description only, and fix whatever they ask about.
:::

**With the Scenario MCP:** `workflow_run` on the App's workflow id with the photo as `image1` and the setting as `text1` runs it from an agent.

When the run reaches **Approval**, an agent or a person answers with the `workflow_approve` or `workflow_reject` tools; from the API it is `PUT /v1/workflows/{workflowId}/user-approval`. See [Run workflows from code and agents](https://learn.scenario.com/workflows/run-workflows-from-code-and-agents.md).

## Check the result

:::check
**Accept when:** the App shows exactly two fields with clear names; an empty setting still gives an on-brand result; the wrapper print reads letter for letter; no other text or logo appears; the review message states the check; a new teammate succeeds on the first run; the workflow is locked.
**Reject when:** users need to type brand rules into the setting field; a result shows invented menus, prices, taglines or labels; the App delivers without review; the output pin sits before the **Approval** node; the description does not say what a run costs.
:::

:::compare
![The platform run in Mexico City: a menu board with item names and prices, a labeled sauce bottle, logo shirts](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/a707a579d663ee0a7b098b5a7a57ebe3756944dd311dfdb2d571f4ac443866c3.webp "Platform prompt: invented menu, prices and labels.")
![The rule prompt in Mexico City: the same counter and crowd, menu boards blurred, only the wax paper print readable](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/f037170d1822aa5cec93c2c0976813bf877477b6e63752e6eb08769b53ed84cc.webp "Team rule prompt: only the wrapper print reads.")
:::

The platform runs are the baseline to beat. They already held the product and its print, which is the hard part. What they could not hold is the rest of the frame: a market scene invites menus, signs and packaging, and the model fills them with words. A menu board with invented prices cannot go on a real menu board.

The team version's value is consistency: the keep-list protects items whose details are harder than this one, the "no other text" rule keeps every market's scene clean, and the approval stops the rare bad one from reaching the library.

:::quiz Check yourself
? A teammate runs your App, and the result reaches the library before anyone checks it. What went wrong?
- [x] The output is pinned before the Approval node
- [ ] The workflow is not locked
- [ ] The Short Description does not say who approves
> When the App skips the review, the output pin sits before the Approval node. Pin the output after it.

? Two results for the same dusk setting. The brief fixes the wrapper print and forbids any other text. Which one can go to the library?
![The Double Ember on a walnut counter at dusk with fries and a cola; the window behind carries a large EMBER & BUN decal with a tagline, with a chalkboard sign and a neon sign in the room](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b474145e4236f8fe453200678382194d5d064a2d407638a2da3f39debce788ef.webp "Take A")
![The Double Ember on a walnut counter by a rainy window at dusk, the wax paper print facing the camera, the street lights blurred outside](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/e2fe72afff131bbc416ad8e46ff17088a7d939d8447e6cfd81d53f5753705971.webp "Take B")
- [x] Take B: the wrapper print is exact and no other text appears
- [ ] Take A: the decal repeats the brand name, so it counts as on brand
- [ ] Take A: the signs are background, so they do not count as added text
> "No other text" is fixed in the brief. Take A's window carries a tagline nobody approved, and the platform prompt does not forbid it. Write the rule into the prompt builder so a typed setting cannot override it.
:::

## Make it repeatable

- **One owner, many teams.** When several teams use Scenario, one person who knows it best builds each team's App, runs a short weekly session on new Apps and models, and takes requests in one channel. See [Roll Scenario out to your team](https://learn.scenario.com/courses/enterprise-admin).
- **One App per repeated step, not one App for everything.** Packshots, market scenes, seasonal variants and formats are separate Apps with separate reviews. Chain them only once each is stable.
- **Version the rules.** When brand rules change, duplicate the App, edit, test, then switch the team over. Keep the old one locked until the new one is approved. **Export Workflow** gives you a file copy of each version.
- **Put the App in the team's instructions.** In **Project Instructions**, add `For market scenes, use the "Ember & Bun market scene" App.` so Scenario Agents use it too. See [Instructions and memory](https://learn.scenario.com/agents/instructions-and-memory.md).
- **Batch it.** For many markets or items, run the workflow from code or an agent once per photo and setting, and review the approvals as they arrive.
- **Review the App monthly.** Run its test inputs again, compare with the preview, and check whether a newer model should replace the generator ([Run a model shoot-out](https://learn.scenario.com/playbooks/compare-models-for-your-studio.md)).

## Runs and time

| Step | Model | Runs | Kept | Wait |
|---|---|---|---|---|
| Platform Product Studio, three markets | GPT Image 2.5 Sunburst, quality auto | 3 | 1, as the baseline | about 25 s each |
| Rule prompt, tested directly, two markets | GPT Image 2.5 Sunburst, quality auto, hero photo as reference | 2 | 2 | about 30 s and 40 s |
| Duplicate, edit prompts, add Approval | editor | 0 | | about 20 min (estimate, not run) |
| Edit App, descriptions, previews, lock | editor | 0 | | about 15 min (estimate, not run) |

The App's cost per run is the cost of its generator; the **Approval** node adds no generation cost, and a rejection stops the run before any later step is billed.

Read the price from the App's quote before the first run and write that figure into the **Long Description**.

## Variations

- **Games:** a "prop from sketch" App with the art style fixed in the prompt and an approval before the 3D step.
- **Learning:** an "illustration for a lesson" App with the course style references fixed inside, so authors only type the subject.
- **Personalized content:** an App where the rules stay fixed and each run takes one line per recipient or market.
- **Agencies:** one App per client project, each with that client's rules, shared only in that project.
- **Video:** an "animate this still" App with an approval on the still before the expensive video step.
- **Localization:** an App that takes a video and a language, with an approval after the transcript check.

## If it breaks

- **Users get different results from the same App.** Something variable is still in the form. Move it into the graph or give it a default.
- **Scenes come back with menus, signs or taglines.** The prompt does not forbid other text. Add "no other text and no other logos anywhere", name the surfaces (menu boards, signs, packaging, clothing, bottles), and ask for them blank or out of focus.
- **The App skips the review.** The output is pinned before the **Approval** node. Pin the node after it.
- **Someone changed the rules.** The workflow was not locked. Lock it, and keep exported versions.
- **The App is never used.** The description does not say what to upload or what comes out. Rewrite the **Long Description** with one example input and output.
- **Results drift after a while.** The underlying model changed or a newer one is better. Rerun the App's test inputs and compare with the **Output Preview**.

Source: https://learn.scenario.com/playbooks/team-asset-pipeline-app
