PHASE A · ORDER INTAKE
The order arrives and the client submits their photo
Phase A covers everything from the moment an order enters the system (automatic from Shopify, or manually created from Ruben's internal Form 4G) until Ruben has approved the customer's photo. If the photo is not good enough, an AI-assisted rejection email goes back to the customer so they can resubmit. Once approved, the order moves to Phase B (Composition).
5
STATES
3
SCENARIOS
3
PAGES
9
EMAILS
01 · How an order enters the system
ENTRY 1 · SHOPIFY (AUTO)
Customer buys on runoff.studio
Shopify sends an orders/create webhook the moment the payment is captured. The system reads the line item title and variant to detect the tier, the paper size and the composition type. The order is created in Airtable, the OneDrive folder is generated, and the Moneybird contact is matched or created — all without any human action.
▸ Shopify only sells "No background" and "Photo-based" composition types. "Reused" and "Custom" never enter via Shopify.
ENTRY 2 · FORM 4G (MANUAL)
Ruben creates the order manually
For leads that didn't come through the shop (B2B, gifts, friends, repeat customers, emails…) Ruben opens the internal page /internal/new-order, picks one of three scenarios, fills in the form and submits. The system creates the same Airtable record + folder + contact as the Shopify flow.
▸ Used for any order that didn't pay via Shopify, including B2B, personal gifts, and customers who already sent photos by email.
01 Order received SYSTEM
The order is created in the Orders table in Airtable. The system assigns the artwork number automatically (format E26001 for Essential, S26001 for Signature, L26001 for Legacy — the digit "26" represents the year, the last three digits are sequential). A dedicated folder is created on OneDrive with five empty subfolders (customer-photo, composition, drawing, print, shipping). If the order is B2C or B2B, a Moneybird contact is matched or created. Personal-gift orders skip Moneybird entirely.
AUTO · Artwork number AUTO · Airtable record AUTO · OneDrive folder AUTO · Moneybird contact PAGE · Form 4G (manual)
ENTRY 1 · SHOPIFY
Automatic from purchase
Webhook creates everything. Tier + paper size + composition type are derived from the Shopify variant title. The customer is matched in Moneybird by email.
→ 02 Awaiting client form
ENTRY 2A · MANUAL B2C
We have the lead's email, not their photo
Ruben fills 4G (customer info, tier, paper, composition…). The system sends the customer an intake link by email so they can upload their photo.
→ 02 Awaiting client form
ENTRY 2B · WITH INTAKE
Photo already received by email
Ruben fills 4G AND the intake fields (photo + brand/model + title + recipient…) in the same form. No intake email is sent. The order lands directly on 03 ready for photo review.
→ 03 Form submitted
ENTRY 2C · PERSONAL / GIFT
Internal commission or gift
Same as "With intake" but skips Moneybird (no invoice, no contact) and skips any client-facing email. Used for gifts and internal projects.
→ 03 Form submitted
02 Awaiting client form CLIENT
Applies to Shopify orders and Manual B2C only. The client receives an email with a link to the intake form (Page 4A). The form auto-detects their preferred language (NL/EN) but there is always a language switcher visible. They upload one photo of their car and fill in the details. If they don't respond, the system sends two automatic reminders.
EMAIL TO CLIENT · order_confirmation (with intake link) EMAIL TO CLIENT · intake_link (manual B2C) AUTO · Reminder 48h if no reply AUTO · Reminder 5d if still no reply PAGE · Form 4A
What the client receives
  • One email with the order confirmation and a direct link to the intake form
  • Automatic reminder at 48 hours if they haven't submitted
  • Second reminder at 5 days
What you receive
  • Nothing in this state — the system is waiting on the client
  • You can monitor pending intakes by filtering Airtable by State = 02 Awaiting client form
03 Form submitted — photo review RUBEN
The client has submitted their photo. The photo lands on OneDrive in the order's customer-photo folder. You receive an email at ruben@runoff.studio with a link to the internal photo review page. There you see the customer photo full size, all the intake details (brand/model, title, subtitle, recipient, notes) and two buttons: Confirm photo or Reject.
EMAIL TO TEAM · internal_intake_received EMAIL TO CLIENT · intake_received_confirmation PAGE · /internal/photo-review/[order] DECISION · Confirm or Reject
What you receive
  • Email to ruben@runoff.studio: "Intake received for E26XXX — review photo" with a direct link to the review page
  • The link opens the internal photo review page (requires internal login)
  • You see: customer photo (clickable for full-size), all intake fields, button to open the OneDrive folder, Confirm/Reject buttons
What the client receives
  • Email "Got it — we have everything for E26XXX" confirming their submission
  • No further client communication until you make a decision
04 Photo rejected — AI drafts reply AI · RUBEN · CLIENT
If you click Reject, a popup opens inside the same photo review page. You write what should change (in plain language) and the AI drafts a rejection email in the client's language with the right tone. You can edit it manually, ask the AI to regenerate with a comment, save it as a draft in Outlook, or send it directly to the client. The email always contains a link back to the intake form so the client can re-upload.
REJECTION FLOW · INSIDE THE PHOTO REVIEW PAGE
Reject → AI popup → review → send
1. You click Reject → popup opens with a feedback text box.
2. You write what's wrong (e.g. "blurry — retake from front three-quarter, daylight if possible").
3. Click Generate email with AI → the AI writes a polished email in the client's language.
4. Edit manually or click Regenerate with comments if the tone is off.
5. Pick: Send directly to client OR Save as draft in Outlook (send later).
6. The order moves to state 03.1 Form resubmitted when the client uploads again. The Attempts counter goes up by 1.
↻ LOOP · returns to state 03 once the client resubmits — repeat until you approve
REJECT POPUP · inside photo review page AUTO · AI drafts rejection email EMAIL TO CLIENT · photo_rejection (with new intake link) AUTO · status reverts to 03.1, Attempts counter +1
What the client receives
  • One email in their language explaining what needs to change
  • A link to re-open the intake form and submit a new photo
  • The intake form keeps their previous fields filled — they only need to replace the photo
What you receive next
  • When the client resubmits, you'll get another internal_intake_received email and the order returns to state 03
  • The Attempts counter on the Pipeline event shows how many rounds you've gone through
03.1 Form resubmitted RUBEN
Internal sub-state when the client resubmits after a rejection. Behaves exactly like state 03 (photo review), but the Pipeline event records that this is a re-submission so you can see the history.
02 · Pages used in Phase A
PAGE 4G · INTERNAL
New manual order
Ruben · English
/internal/new-order
  • Scenario picker (3 options)
  • Customer (search existing or create new)
  • Tier — Essential / Signature / Legacy
  • Order type — B2C / B2B / Personal-gift
  • Company logo (B2B only)
  • Paper size + Composition type
  • Shipping method, deadline, notes
  • Intake fields (when scenario = With intake or Personal-gift)
PAGE 4A · CLIENT
Intake form
Client · NL / EN
/intake/[orderId]
  • Artwork number (read-only)
  • Car photo
  • Brand and model
  • Print title (80 char limit)
  • Print subtitle (120 char limit)
  • Recipient name
  • Notes / extras
  • Language switcher always visible
PAGE · INTERNAL REVIEW
Photo review
Ruben · English
/internal/photo-review/[orderId]
  • Customer photo (clickable full size)
  • Full intake details + OneDrive folder link
  • Confirm button → moves to Phase B
  • Reject button → opens AI rejection popup
  • Rejection draft (editable, regenerable)
  • Send directly or save as Outlook draft
03 · Every email sent in Phase A
04 · Automations of Phase A
  • ▸ NEW SHOPIFY ORDER · generates artwork number · reads tier + paper + composition from variant · creates the Airtable record · matches or creates the Moneybird contact · creates the OneDrive folder · alerts you if any field is missing
  • ▸ FORM 4G SUBMITTED · generates artwork number · creates the Airtable record · matches/creates Moneybird contact (B2C/B2B only) · creates the OneDrive folder · sends the intake link to the customer (Manual B2C scenario only)
  • ▸ PERSONAL / GIFT ORDER · generates artwork number · creates the Airtable record · creates the OneDrive folder · skips Moneybird · skips client emails · lands directly on state 03 ready for photo review
  • ▸ INTAKE NOT SUBMITTED · 48h reminder email to the client · 5d reminder email · then silence (no further nudges)
  • ▸ INTAKE SUBMITTED · uploads the photo to OneDrive · saves intake fields to the Pipeline event · sends acknowledgment to client · sends review link to ruben@runoff.studio · moves order to state 03
  • ▸ YOU REJECT THE PHOTO · AI drafts the rejection email · you review/edit · system sends it (or saves as draft) · order returns to state 03.1 · Attempts counter +1
OPERATING NOTESComposition types restricted on Shopify. Only "No background" and "Photo-based" are sold on the website. "Reused" and "Custom" only come in through Form 4G with the "With intake" or "Personal / gift" scenario.
The intake form (4A) only supports "No background" and "Photo-based" — those compositions don't need a brief from the customer.
Personal-gift orders skip Moneybird entirely (no contact, no invoice). They also skip every client-facing email.
Localization (NL / EN) is automatic based on the client's preferred language, but a manual switcher is always visible on Page 4A.
Char counters live on title (80 chars) and subtitle (120 chars) — the form prevents going over.
Rejection is in-page: no separate rejection page. The popup is inside /internal/photo-review/[orderId].
OUT OF SCOPE FOR PHASE A
Composition work, drawing, printing, client print review, production and shipping (states 05 to 23) live in Phases B, C, D and E. The "Reused" and "Custom" composition types use an extra brief flow handled inside Phase B. AI generation of composition variants happens at the start of Phase B once the photo is approved.
All phases