
This is one of the three sample outputs that ship in the Copywriting download, published here in full and unedited so you can see what the skill produces before you buy.
Sample output, not a customer story. Produced in a pre-release test run on 3 November 2026. The business is fictional and the buyer's answers were scripted. Shown unedited so you can see what the skill produces before you buy.
The full conversation:
BUYER: What should our error message say when a card payment fails? And the button under it.
AI: I can write that. Three quick things first:
BUYER: No brand file. It's Basketly, an online grocery app. it shows on the checkout screen in the app, just above the pay button. Nothing there yet; it's a new checkout. Failure reasons vary: declined, expired, network. yes, the payment provider tells us which one it was. No hard limit, but it's a small box on a phone. Friendly but brief.
AI: Because the app knows the reason, each failure gets its own short message and its own button. "Try again" is the wrong button for an expired card. It's still a small job, so here are the options and my pick in one go.
The brief
Five options (character counts include spaces)
A. Say what happened, then the fix
| Reason | Message | Chars | Button | Chars |
|---|---|---|---|---|
| Declined | Your bank declined this card. Try another card, or check with your bank. | 72 | Use another card | 16 |
| Expired | This card has expired. Add a new card to finish your order. | 59 | Add a new card | 14 |
| Connection | We couldn't reach your bank. Check your connection and try again. | 65 | Try again | 9 |
B. A, plus "your basket is saved"
| Reason | Message | Chars | Button | Chars |
|---|---|---|---|---|
| Declined | Your bank declined this card. Your basket is saved, so you can try another card. | 80 | Use another card | 16 |
| Expired | This card has expired. Your basket is saved. Add a new card to finish. | 70 | Add a new card | 14 |
| Connection | We lost the connection to your bank. Your basket is saved. Try again in a moment. | 81 | Try again | 9 |
C. Shortest
| Reason | Message | Chars | Button | Chars |
|---|---|---|---|---|
| Declined | Card declined. Try another card. | 32 | Use another card | 16 |
| Expired | Card expired. Add a new one. | 28 | Add a new card | 14 |
| Connection | Connection lost. Try again. | 27 | Try again | 9 |
D. Names the card (only if the checkout can show the last four digits)
| Reason | Message | Chars | Button | Chars |
|---|---|---|---|---|
| Declined | Your card ending {last4} was declined. Try another card, or check with your bank. | 81 | Use another card | 16 |
| Expired | Your card ending {last4} has expired. Add a new card to finish your order. | 74 | Add a new card | 14 |
| Connection | We couldn't reach your bank to charge your card ending {last4}. Try again. | 74 | Try again | 9 |
E. Same opening every time, then the reason
| Reason | Message | Chars | Button | Chars |
|---|---|---|---|---|
| Declined | Payment didn't go through. Your bank declined this card, so try another one. | 76 | Use another card | 16 |
| Expired | Payment didn't go through. This card has expired, so add a new one. | 67 | Add a new card | 14 |
| Connection | Payment didn't go through. We lost the connection, so please try again. | 71 | Try again | 9 |
My pick: A. Each line says what happened and what to do in the shopper's own terms, each button does exactly what its message asks, and it makes no promise we haven't confirmed.
What's not confirmed yet
[NEEDS: whether any money is taken or held when the connection drops mid-payment, from your payments team]. If none is, add "You haven't been charged." to the connection message in any option. Shoppers will wonder, and option E's "didn't go through" can't be used for the connection case until this is confirmed.[NEEDS: whether the basket and the delivery slot are kept after a failed payment, from your product team]. Option B depends on it.[NEEDS: whether the checkout can show the card's last four digits, from your developers]. Option D depends on it.[NEEDS: ...] means not backed yet; it says what would back it and who has it.
Worth checking once it's live: show the three messages to a few people who shop with you and ask, "What would you do next?" If anyone hesitates, that's the line to fix.
Which one ships, or should I push further in one direction?
BUYER: Approved. I'd add: go with your recommendation, A.
AI: A is final:
Once your payments team confirms no money is taken on a dropped connection, add "You haven't been charged." to the connection message. I've logged this in your brand file.
BUYER: Also give me a subject line for our 'your order is delayed' email.
AI: That one is a subject line for a single send, so the preview text should be written with it. Three quick questions:
BUYER: 1. The new delivery window and an apology. No credit or discount. 2. Yes. 3. Before the original slot, as soon as we know.
AI:
The brief
Five options (subject, then preview; character counts include the field name, so the live length depends on how the window is written)
| Subject | Chars | Preview | Chars | |
|---|---|---|---|---|
| A | Your order will arrive later than planned | 41 | Here's your new delivery window, and our apology. | 49 |
| B | Your Basketly order is running late | 35 | New delivery window inside. Sorry for the wait. | 47 |
| C | New delivery time for your order: {new_window} | 46 | Sorry, it's running later than we said. | 39 |
| D | Sorry, your groceries are running late | 38 | Your new delivery window is {new_window}. | 41 |
| E | Running late: your new delivery window | 38 | Sorry for the change. Here's when to expect it. | 47 |
My pick: D. It apologises first, because the delay is Basketly's to own, says "groceries" so the shopper knows at a glance which order it is, and puts the new window in the preview so they get the answer even if they don't open it.
What's not confirmed yet
[NEEDS: confirmation your email tool can put the new delivery window into the subject and preview, from whoever runs your email tool]. Options C and D depend on it; A, B and E don't.The first line of the email should give the new window straight away, so it pays off the subject. If you send enough of these each week, I can give you a simple test to choose between D and C.
Which one ships, or should I push further in one direction?
BUYER: D. Approved.
AI: D is final. Subject: "Sorry, your groceries are running late". Preview: "Your new delivery window is {new_window}." Once your email tool can fill in the window, it's ready to go. Both pieces are logged in your brand file, with the open checks for your payments, product and email teams.