Variants are records, not paragraphs
The old way to review AI copy: the model dumps twelve options into a doc, you scroll, you copy-paste the least bad one, and three weeks later nobody can say which subject line ran on which send or where it came from. The doc was write-only memory.
The studio way: every variant is a record with a schema. Run the editor — that's one variant. The fields do real jobs:
idandchannelandslot— so "E3 won the subject-line test" is a sentence with a referent. When performance data comes back in lesson 3, it joins on these fields.textandcta— the actual copy, and the ask."cta": "none"is a deliberate value, not a missing one: Fieldnote's pack says a CTA appears only when it earns its place, and the schema makes "no CTA" an explicit choice someone made.source—ai-draft,ai-edited, orhuman. This field looks bureaucratic until the day someone asks what was AI-written in last quarter's campaign — for a rights question, a client dispute, a postmortem — and you can answer with a filter instead of an archaeology dig.lint— the linter writes its violations here. Empty list means the variant may proceed to review. Non-empty means it goes back for a redraft, with the reasons attached.approved_by— empty until a named human fills it. No script in this chapter ever writes to this field. That's not a technical limitation; it's the point.
Why schema beats prose at batch volume
Ask the model for "some subject lines" and you get prose to scroll. Ask it to return variants in this schema — and models are reliable at filling a stated JSON shape — and you get data to process: lint all twelve in a loop, sort the survivors by slot, count how many the pack rejected, and hand Dana a clean queue instead of a doc. The schema is what turns "review the copy" from an afternoon into a pass.
Batch volume is where this pays. Writer's own customer story about the retailer Adore Me claims a 20-hour monthly product-description batch fell to 20 minutes with drafting agents — a vendor's number about a vendor's client, so treat the figure as marketing. But the shape of the claim is the believable part: batch drafting is where marketing time goes, and batch drafting without a batch checking step is how twelve variants of "game-changing" reach your send tool.
You've got the linter from step 5. Next you'll wrap it into lint_copy, run four drafts through it, and then — checkpoint — run the whole batch and produce the queue that goes to Dana.