PHASE B · COMPOSITION
AI generates two variants, the Compositor finalises one
The moment Ruben confirms the photo in Phase A, the AI generates two composition variants automatically. Ruben picks the better one and assigns a Compositor. The Compositor can either use the AI variant as-is or upload their own version. Ruben reviews and either approves (order moves to Phase C — Drawing) or requests changes with AI-drafted feedback.
5
STATES
2
AI VARIANTS
2
PAGES
4
EMAILS
01 · How Phase B starts
TRIGGER · RUBEN CONFIRMS PHOTO IN PHASE A
Photo approved → AI generation kicks off
When Ruben clicks Confirm photo in /internal/photo-review/[orderId], the system immediately calls OpenAI to generate two composition variants based on the customer's photo + the composition type. Generation takes about 1–2 minutes and costs around $0.25. The page polls until the variants are ready and shows them side by side.
▸ AI variants are stored in the order's OneDrive folder under composition/ai-variants/. The chosen variant is kept, the other is deleted automatically.
06 Composition in progress COMPOSITOR
Ruben has picked one of the two AI variants and assigned a Compositor. The chosen variant becomes the starting point. The Compositor receives an email with a private link to their work page. They can either accept the AI variant as the final composition or upload their own version (their photoshop tweaks, manual adjustments, etc.).
AUTO · AI generates 2 variants AUTO · Compositor snapshot saved to the order PAGE · Compositor work page EMAIL · compositor_handoff (to the Compositor)
What the Compositor receives
  • Email "New composition job ready" with a private one-time link
  • The link opens the Compositor work page (no login needed — token in URL)
  • Sees: customer photo, AI variant they need to work from, OneDrive folder link, brief notes from Ruben (if any)
  • For Reused/Custom composition types: additional reference images and a brief from Ruben
What the Compositor can do
  • Use AI variant as-is — click "Mark as done" without uploading anything
  • Upload a new version — drop a finalised composition (JPG/PNG/PSD) into the page, then mark as done
  • The final composition file lands in composition/compositor/ on OneDrive automatically
06b Composition rework COMPOSITOR
Internal sub-state used when Ruben has requested changes (state 08). The Compositor receives a new email with the feedback Ruben wrote, opens the same work page, and uploads a revised composition. Once they mark it as done, the order goes back to state 07 for Ruben's second review.
EMAIL · composition_changes_requested_compositor (with feedback) PAGE · same Compositor work page
07 Composition for review RUBEN
The Compositor has finished. Ruben receives an email and opens the composition review page. There he sees: the customer photo (reference), the AI variant, and the final composition delivered by the Compositor — side by side. Below the artwork there's an Artist picker (so the moment Ruben approves, the order is handed off to the right Artist) and two buttons: Approve and send to Artist or Request changes.
EMAIL TO TEAM · compositor_done_internal PAGE · /internal/composition-review/[order] DECISION · Approve or Request changes
What you receive
  • Email to ruben@runoff.studio: "Composition ready for review — EXXXXX"
  • Direct link to the composition review page
  • On the page: customer photo · AI variant · final composition · Artist picker · Approve / Request changes buttons
What happens on approve
  • State jumps to 09 (Composition approved) and then to 10 (Drawing in progress) automatically
  • The chosen Artist receives the artist handoff email (Phase C)
  • The Compositor receives a confirmation email "Composition approved"
08 Composition rejected — AI drafts feedback AI · RUBEN · COMPOSITOR
If Ruben clicks Request changes, a popup opens inside the same review page. Ruben types what should change in plain language (e.g. "shift car 10% to the left, soften the right side of the background"). The AI rewrites it as a polished email to the Compositor. Ruben reviews/edits and sends it. The Compositor receives the feedback and the order moves to 06b rework.
CHANGE REQUEST FLOW · INSIDE COMPOSITION REVIEW PAGE
Request changes → AI popup → review → send
1. Ruben clicks Request changes → popup opens with a feedback box.
2. Ruben writes what needs to change in plain language.
3. Click Generate email with AI → AI rewrites it as a polished Compositor message.
4. Ruben can edit or regenerate with comments.
5. Send → Compositor receives the email, order moves to 06b.
↻ LOOP · Compositor reworks → state 07 again — repeat until approved
CHANGES POPUP · inside composition review page AUTO · AI drafts feedback email EMAIL TO COMPOSITOR · composition_changes_requested_compositor AUTO · status moves to 06b
09 Composition approved SYSTEM
Auto-transition state. The moment Ruben clicks Approve, the system records the approval, snapshots the chosen Artist details on the order, sends the confirmation email to the Compositor, and triggers the artist handoff (Phase C). The order is on state 10 within seconds — Ruben does not see state 09 in practice; it's a system bookmark.
AUTO · Compositor confirmation email AUTO · Artist snapshot saved AUTO · Artist handoff triggered (Phase C)
02 · Pages used in Phase B
PAGE · COMPOSITOR (HMAC LINK)
Compositor work page
Compositor · English
/compositor/[orderId]?t=...
  • Customer photo (reference)
  • AI variant chosen by Ruben (the starting point)
  • Notes from Ruben (optional)
  • OneDrive folder direct link
  • Upload zone (JPG, PNG, PSD)
  • "Use AI variant as final" button
  • "Mark as done" button
PAGE · INTERNAL REVIEW
Composition review
Ruben · English
/internal/composition-review/[orderId]
  • Customer photo (reference, clickable full size)
  • AI variants generated (chosen one highlighted)
  • Final composition from Compositor (clickable full size)
  • Artist picker (dropdown of active Artists)
  • For Legacy tier: pre-selects Ruben as Artist
  • Approve and send to Artist button
  • Request changes → AI popup
03 · Every email sent in Phase B
04 · Automations of Phase B
  • ▸ PHOTO APPROVED IN PHASE A · AI generates 2 composition variants based on the customer's photo · variants saved to OneDrive · variants displayed on the photo review page
  • ▸ RUBEN PICKS A VARIANT + COMPOSITOR · the chosen variant is kept on OneDrive, the other is deleted · Compositor handoff email sent · Compositor identity is snapshotted onto the order (so a Team change mid-order doesn't break the flow)
  • ▸ COMPOSITOR MARKS AS DONE · the final composition URL is saved to the order · internal review email sent to Ruben · order moves to state 07
  • ▸ RUBEN APPROVES · approval email sent to Compositor · Artist snapshot saved · Artist handoff triggered automatically · order is on Phase C within seconds
  • ▸ RUBEN REQUESTS CHANGES · AI drafts feedback email · Ruben reviews/edits · email sent to Compositor · order moves to 06b rework
OPERATING NOTESTwo AI variants always, generated automatically. Ruben can also click "Regenerate" to get two new ones (extra cost ~$0.25).
Compositor identity is snapshotted the moment of handoff. Even if you change the Compositor in Airtable mid-order, the active order remembers the original assignment.
The Artist is picked at the moment of approving the composition, not before. For Legacy tier the dropdown pre-selects Ruben (since he does Legacy work personally).
Customer is not involved in Phase B — they don't see the composition. They only see the final print in Phase D.
The Compositor link is single-purpose. It only opens their work page for this order — they can't see other orders or the rest of the system.
OUT OF SCOPE FOR PHASE B
Drawing (Phase C), printing (Phase D), client print review (Phase D), production and shipping (Phase E). The "Reused" and "Custom" composition types come with an extra brief field on the order but use the same Phase B states as the standard flow. AI generation here is for composition variants only — print files (JPG + PDF) are handled by the Photoshop Expert in Phase D.
All phases