A demo room: one person funds it
This is one chat - “shipping the checkout page” - in a splitscreen room called Storefront. Priya owns the room, is on Squad, and holds the Anthropic key and the credits. Sam has neither, and still asks GPT and Gemini - because Priya’s budget covers the replies, and the receipt under each one says so. It is rendered by the same components the real room uses. Sam has also connected their own agent, and its lines are marked. You can use the box at the bottom. Nothing there is sent and nobody is charged.
A curated transcript, written by us to show what the product does - not a recording of a session, not a live room, and not real people. The prices are the ordinary rates on what each AI can do.
We need the checkout page live by Friday - Stripe Elements, guest checkout, and a promo code field. Give me a build order, and say what you would cut if we run out of time.
Build order - each step ships on its own, so Friday becomes a decision about where to stop rather than a scramble.
- Summary panel, server-rendered. Cart totals, tax and shipping from the existing cart endpoint. No payment code in it, so it can merge on day one.
- Payment Element, guest path first. Mount Stripe Elements against a PaymentIntent created on the server. The signed-in path reuses the same intent, so it is a branch in one place rather than a second checkout.
- Promo code field. Check the code against your own promotions table before the intent is created, so an invalid code never reaches Stripe and never shows a total you cannot honour.
- Confirmation and receipt. Land on
/checkout/complete, read the intent status on the server, and send the receipt from the webhook rather than from the browser - a customer who closes the tab still gets one.
What I would cut, in this order: saved cards, then address autocomplete, then the promo field. The promo field is last because it is the only one of the three a support agent can apply by hand afterwards.
Claude - review GPT’s build order against how we actually build. The cart is rendered on the server and we have never used a client-side redirect for payment. Read https://docs.stripe.com/payments/payment-element and tell me where the plan breaks.
read 1 page
Two of the four steps fight the way you build.
Step 2 assumes the browser confirms. Nothing in your checkout has ever redirected from the client, and the plan quietly changes that. If you keep the rule, the server confirms the intent and the browser only collects details - that is a different integration, not a different flag, so decide it now rather than discovering it in step 4.
Step 3 prices the order twice. The panel from step 1 has already rendered a total by the time the promo code is checked, so a code that expires between the two shows a discount the payment will not honour. Recompute the total in the same request that creates the intent and treat the panel as display only.
Steps 1 and 4 read fine to me. The webhook receipt in particular is the part most teams get wrong first time round. Longer notes, line by line, are in the file below.
Run inside Claude's own sandbox. It cannot reach your computer or this app, and it has no access to any repository connected to this room.
checkout-plan-review.mdexit 0
Gemini - rewrite step 3 to Claude’s rule so the total is computed once, and check the current guidance on autocomplete attributes while you are in there. Search, do not guess.
searched the web (2)
- wcag 2.1 identify input purpose 1.3.5 level
- html autocomplete tokens payment form accessibility
Step 3, to Claude's rule - one price, computed once, in the request that creates the intent:
- read the cart and the promo code together on the server;
- compute the total once and hand the same figure to both the summary panel and
PaymentIntent.create; - return the panel’s total from that call, so the page can never render a number the intent does not hold.
That closes the window Claude found without adding a round trip.
On the autocomplete attributes: a requirement, at AA. WCAG 2.1 added 1.3.5 Identify Input Purpose: fields that collect information about the user have to be programmatically identifiable, and the HTML autocomplete tokens - cc-number, cc-exp, cc-csc, postal-code, email - are the ordinary way to meet it. Two things worth knowing before you cite it in review: it arrived in 2.1, so a checklist written against WCAG 2.0 will not mention it at all; and it is about fields describing the user, so a gift-message box needs nothing.
Check what a promo field would actually cost us to build. I want the real number before I agree to keep it.
The promotions table and the code that checks a code is valid are already in the repo: 412 lines with their tests, shipped last release. The checkout form has no promo field yet, and nothing else in the form has its own server route. The suite is green on main.
The promotions table and the code that checks a code is valid are already in the repo, 412 lines with their tests. Is the promo field still the last thing to cut for Friday?
Still last. The 412 lines that check a code already exist, so what is left is a form input and one call, not a feature.
Cut saved cards and address autocomplete ahead of it, in that order. If Friday is still tight after both, ship without the field and let support apply codes by hand. That is why it sits last.
Perfect. I will take the promo field, you take the summary panel - server confirm, agreed.
Free · 50 a day
or ask
Simulated. Nothing is sent and nobody is charged.
Type @ and pick your agent to point a message at an agent you have connected. Nobody has one here, so nothing answers it.
Priya’s budget for this roomPriya’s Anthropic budget $1.9928 · Cover, today $1.9516Details
| After | Priya’s Anthropic budget | Cover, today |
|---|---|---|
| Priya opens the room | $2.0000 | $2.0000 |
| Sam asks GPT | $2.0000 | $1.9943 |
| Priya asks Claude | $1.9928 | $1.9943 |
| Sam asks Gemini | $1.9928 | $1.9567 |
| Sam’s agent asks GPT | $1.9928 | $1.9516 |
- Priya’s Anthropic budget
- Priya’s own key, capped for this room. Her asks bill straight to Anthropic at cost, and splitscreen adds nothing.
- Cover, today
- What this room may spend from Priya’s credits on members who have none. One budget a day for the room, whichever assistant answers.
More of this room
Other chats and panels in the same room. Example content, drawn the way the room draws it.
Cover · Priya covers members here, up to $2.00 a day for the room.
Ask all three
Write one line for the checkout button.
- ClaudePay $48.00 securely$0.0021 · billed to Priya’s Anthropic key
- ChatGPTComplete purchase: $48.00$0.0034 · paid from Priya’s credits
- GeminiPlace order ($48.00)$0.0009 · paid from Priya’s credits
A free reply
@GPT what should the promo field say before anyone types in it?
Handoff to an agent
@Claude Code fix the rounding in the cart total.
Fixed. The total is computed once on the server, and the tests pass.
Approval
Merge the fix into main?
One file changed. Tests pass.
Sam decides. The agent waits.
Room notes
The AI reads these on every reply.
- Checkout ships Friday.
- Totals are computed once, on the server.
- The promo field stays in scope.
Poll
Ship on Friday?
- Yes, Friday2 votes
- Wait for Monday0 votes
Closes tomorrow.
All of these live in Storefront, beside the chat above. In a real room the buttons work.
Three of the four replies in the transcript answered Sam, and all three are bylined “covered by Priya”. Nobody had to add a card to join the room.
What it cost and whose money paid - Priya’s credits on three of them, her own Anthropic key on the one she asked for herself.
The last message in the transcript has no tag and no receipt. Posting is free; the AI answers only messages pointed at it, and only those asks are charged.
- Three models in one threadThree assistants in one thread, three answers that do not agree, and what each one cost.
- One person paying for a teamWhat cover looks like: two people with nothing, one person paying, and the limit that stops it running away.
- What an AI reply actually costsTokens to dollars, worked through twice: the same model on your own key and on credits.
- Not only for codeTwo bakers, a market weekend, and an agent that reads last month’s numbers. No engineering anywhere in it.
This is one kind of room. What else a room is for - comparing three models on one question, an agent of yours doing the work, a repository in the chat.
Bring your own keys or buy credits. Once you have bought credit, set a daily limit and cover the people who have neither. You start with the question this chat opens with, already in the box.