Video brief to priced quote: OpenAI reads the email, a Code node sets the price, Slack approves

I run an AI video business, and most briefs reach me incomplete. The client leaves out the deadline, the video length or the budget, and the quote waits until someone writes back to ask.

I built this workflow for that step. It is not in the template library yet. I am submitting it next and would like feedback from people here first.

How it works

  1. A client emails a brief. The workflow reads the email, the attached PDF and up to three reference images.
  2. An AI Agent with an OpenAI model and a Structured Output Parser pulls out the number of videos, their lengths, the deadline, the budget and any extras.
  3. A Code node, not the model, decides whether anything is missing. If something is, a reply asking only for the missing details is saved as a Gmail draft in the same thread, the brief is logged as Needs Info in Google Sheets, and Slack tells me. When the client answers, the brief carries on by itself.
  4. A second Code node prices the job from a Rate Card tab in Google Sheets: volume discount, rush fee, minimum order and deposit. The model never produces a number.
  5. A Slack Send and Wait message shows me the breakdown with Make the PDF or Discard. If I approve, a PDF quote is saved to Google Drive, and a second approval decides whether it goes to the client or stays as a draft.
  6. Each morning it checks for replies and drafts a follow-up after 3 quiet days. On Mondays it posts a short report.

Nothing reaches a client until I press Send it.

The first image is the whole workflow. The second is the middle section: the agent reads the brief, code checks what is missing, and the price waits for my approval.

Why the model only extracts

Pulling fields out of a messy email and a PDF is where the model earns its place. Deciding that a brief is complete, and doing arithmetic with money, is where I do not want it. If it misreads something, the mistake stops at a Slack approval. It cannot invent a price, and it cannot mark a brief complete when it is not.

Two questions before I submit it

  1. Would you keep two approvals (price, then send), or is one enough?
  2. If you quote creative or service work, what is on your rate card that is not on mine?

Great workflow. I’d keep both approvals because they protect against two different risks: incorrect pricing and sending an unreviewed quote to the client.

One additional item I’d include in the rate card is revision limits and the cost of extra revisions. I’d also account for stock assets, voice-over, and changes to scope after approval.

I particularly like that the model extracts information while deterministic logic validates completeness and calculates the price. That separation makes the workflow easier to audit and safer to operate.

One reliability detail worth considering: prevent duplicate quote generation or sending if the same client reply is processed more than once. Tracking the quote status and using an idempotency key could help.

إعجاب واحد (1)