# How do you hand off work from ChatGPT to Claude Code without explaining it twice? > Stop handing over the conversation. Fix four things in one shape (purpose, background, acceptance criteria, attached spec), give the work one name, and hand the builder only that name. ## We opened the terminal and started typing the same explanation again We spent about an hour in ChatGPT working out how to do something. There were three options and we dropped two of them. Decision made, we opened the terminal. And there we were, typing the same background out from scratch. We tried pasting the transcript instead. It is long. Worse, the rejected options are still in it, and once the builder picked one of those up and started implementing it. It ran for ten minutes before we caught it and said no, that is the one we threw away. What we want to hand over is not the conversation. It is what we decided, what we deliberately did not decide, and what finished looks like. The conversation contains those, along with an equal volume of dead ends. And the decisions are dissolved into it. Telling a conclusion apart from a half-formed idea takes the person who was there and the context they had at the time. To the AI receiving it, both are just text. ## Paste it, write it, or have it written In the order we tried them. All of these worked to some degree. Pasting the transcript is the fastest. For a short exchange we still do it. Once it gets long we have to summarise it ourselves before pasting so the rejected options do not come along, which puts us right back to retyping. Next we wrote Markdown specs into the repo. This was good. The AI can read them, they persist, and they show up in diffs. The problem arrives after the work ships. Spent specs pile up, and which one describes the current behaviour is only encoded in the filename. The bigger `docs/` got, the longer we spent looking. A PRD in Notion is the nicest of these to read as a human. But every time the builder needed it, we were the ones copying and pasting it over. If the copying stays, we have not really saved the retyping. Having ChatGPT write a GitHub issue worked well. The number is the valuable part: anything with a number does not need explaining. The body, though, is prose written for humans, and the acceptance criteria come out as a column of checkboxes. Turning that into something a builder can read as "done means this" was manual work, every time. Some days we handed over nothing and just explained it out loud. That one is the most exhausting. ## Where each one stopped working They all stopped in the same place. The options with a fixed shape cost us the effort of writing it out. The cheap options have no shape at all. Pasting a transcript takes one second and brings the rejected options along with it, and the acceptance criteria stay buried in the chat. What we wanted was something the thinking side could drop in mid-conversation that already had a shape by the time the building side read it. ## Now it is one sentence at the end of the conversation Mid-conversation in ChatGPT we say: put that in Dazbench. What comes out is not just a title. Purpose, background, acceptance criteria and the things to watch out for are already filled in. We do not rewrite the description from scratch, and the AI that just read the whole conversation writes it faster than we would. On work that starts from a requirements document, we attach the Markdown we produced with ChatGPT straight to the card. What to build and how to build it sit on the same card. Whoever implements it later does not go hunting through old chats. A card does not have to be complete the moment it is created. Plenty of ours start as a title and two lines, pick up a purpose and acceptance criteria in a conversation on some other day, and only then become something we can hand over. As the picture sharpens we grow the same card rather than making a new one. What we type in the terminal is a number. Implement dz57. The background does not get typed again. ## How we designed it in Dazbench There were only two things we wanted. To be able to say "put it in" inside the chat. And to be able to say nothing but a number in the terminal. So the handover shape is fixed at four things: purpose, background, acceptance criteria, attached spec. One name for the work, which is the card number. Both AIs read and write those same four. 1. Connect ChatGPT once. In settings, under Apps, add it as an outside connection (MCP) in developer mode. claude.ai connects with no extra setup. 2. At the end of the conversation, say: put this in Dazbench. The AI makes a card and fills in the purpose, the background and the acceptance criteria. 3. If there is a spec, say: attach that too. Markdown text goes straight onto the same card. There is a per-file size cap, so anything large goes up from the web app. 4. The card gets a ref like `dz57`. From here on, that number is the name of the work. 5. In Claude Code, type: implement dz57. The builder opens that card, reads the purpose, the background and the acceptance criteria, and reads the attachment body as written. 6. On pickup the card goes to in progress, and each satisfied criterion gets ticked off one at a time. 7. A card can only be completed after a person approves. An AI cannot decide its own work is finished. 8. If the approach changes, open the same card from another chat and revise it. Do not create a second card. One card, in one shape, sitting between the AI that thinks and the AI that builds. That alone turned the handover into one sentence. ## What actually changed We no longer type the same background twice. What goes into the terminal is a verb and a number. Since the shape got fixed, nothing has picked up a rejected option. Only decisions land on the card; the dead ends stay in the chat. We stopped looking for where the spec went. The work and the spec are on the same card, so the time we used to spend scanning `docs/` is gone. > The conditions and the unsolved parts. ChatGPT needs the connector added once in developer mode (expected to become unnecessary if it ships as an official app). A card is never better than what the chat actually decided: say "put it in" over a vague conversation and you get one vague card, and the builder starts from that vagueness. Reading old cards and attachments back from the ChatGPT side is something we have attempted, not something we can say works. And an AI memorises the tool list at the moment it connects, so new tools stay invisible until you reconnect. ## FAQ ### Why not just paste the whole conversation? For a short exchange we do. With a long one, the options we rejected are still in the text and the builder sometimes picks one up. In our case an implementation ran about ten minutes down the wrong path before we noticed. Handing over only the decisions is faster. ### Does this work with AIs other than ChatGPT? claude.ai connects with no extra setup. ChatGPT needs a one-time connector added from settings under Apps, in developer mode. On the building side, Claude Code and Codex both read the same card by its number. ### Should the spec go in the card or be attached to it? Short acceptance criteria go in the card's acceptance criteria. Long requirements documents we attach as Markdown, because the builder can then read the body directly, even in a later session. There is a per-file size cap, so large files go up from the web app. ## Related - Hand what you discussed in ChatGPT straight to Claude Code: https://dazbench.app/tips#handoff-by-card-number - Save Markdown deliverables to the card and pass them to the next AI: https://dazbench.app/tips#attach-deliverables - Turn a requirements doc into work an AI can actually execute: https://dazbench.app/tips#spec-to-cards - Connecting ChatGPT: https://dazbench.app/manual#connect/chatgpt - Connecting Claude Code: https://dazbench.app/manual#connect/claude-code - Even a one-line card gets its context from the project: https://dazbench.app/manual#about/project-context - How do you keep work context across Claude Code sessions?: https://dazbench.app/docs/keep-context-across-claude-code-sessions - How do you stop telling Claude Code what to work on next?: https://dazbench.app/docs/stop-telling-claude-code-whats-next Updated: 2026-09-12 --- The latest version of this file is always at https://dazbench.app/docs/handoff-from-chatgpt-to-claude-code.md. The version for humans to read is at https://dazbench.app/docs/handoff-from-chatgpt-to-claude-code.