DEV Community

Grais
Grais

Posted on

Why I stopped drafting WhatsApp replies in ChatGPT

Tuesday, 23:40. A WhatsApp thread I last opened on Thursday.

"hey did you send those API notes to Priya?"

I did not. I said I would on Monday. I also said I would look at the staging deploy. ChatGPT is already open on a different problem, so I copy the last six messages, paste them in, and type: draft a casual reply, I forgot, I'll do it tomorrow morning.

What comes back is polite, slightly corporate, and completely sure of itself. "Hey! Super sorry for the delay, totally slipped my mind. I'll send those over first thing." I do not say "super sorry." I do not say "totally slipped my mind." I say "ah damn, no, tomorrow AM" and I attach the file if I have it.

I send a rewritten version. Then I remember the staging deploy. Then I do not.

That loop is the whole problem.

The second-tab tax

The workflow looks cheap. Another tab, a paste, a prompt. Builders do this all day for LinkedIn DMs, Telegram groups, Instagram replies, the same WhatsApp thread that should have been closed two days ago.

The cost is not the paste. The cost is everything the paste leaves behind.

A chat model in another tab only knows what you gave it. You grab the last screen because scrolling back feels like work. You skip the bit from three weeks ago where you already promised Friday. You skip how you write to this contact: shorter, fewer exclamation marks, never "hope you're well."

You also skip the other thread. The same person pinged you on LinkedIn yesterday. You already answered. The WhatsApp draft asks the question they already answered.

None of that is a model failure. It is a context failure. The model did what a model does with a six-message clip and a one-line instruction.

Timing dies in the switch too. You leave WhatsApp, write a prompt longer than the reply, come back, and they have already sent a follow-up. Now your draft answers the previous message. I have sent that draft. It reads like you were not in the room.

What to paste if you still do this

Treat the paste like a briefing, not a screenshot.

Put the relationship in one line before the messages. Who they are, how you talk to them, what you owe them. "Priya's eng manager, we are blunt, I promised API notes Monday and a staging look, I have not done either."

Paste more history than feels reasonable. The last six messages are the punchline. The promise usually sat twelve messages earlier, or in a voice note you never transcribed.

Say what you will not write. "No 'hope you're well.' No 'circle back.' I use lowercase. I do not apologize twice."

Name the job of the reply. Acknowledging is different from committing. "I'll send it tomorrow" is a new promise. "I already sent it, check email" is a close. If you do not say which one you want, the model picks the warmer one, because warmer scores well in a vacuum.

Then read the draft as if you already sent it. If they quote this back in a week, are you fine with that sentence existing? And paste one of your old messages to that person. "Match this register" beats "be casual." Casual is a mood. A real message is evidence.

Why "write like me" keeps failing

The model has never seen you write to this person. It has seen a billion helpful assistants. Those hedge, add warmth, and close with a question so the thread stays alive. You may want the thread to end.

Voice is also per-contact. I write to my sister in fragments. I write to a recruiter in complete sentences. A single "my voice" blob in ChatGPT custom instructions averages those into something nobody I know would recognize.

If you keep a second tab, keep a contact note, not a persona. Register (lowercase, short). Standing promises. Last decision. Update it when a promise lands or dies.

Second language makes this worse. You ask for English and get conference-English. "I'll try to look at it tonight" and "I'll take a look tonight" are not the same person. Without last month's messages, the model picks the stiffer one.

Dating and sales DMs fail the same way. The model forgets the joke you already made, or the objection you already answered, and invents a fresh opener. Fresh openers mid-thread sound like a script.

Promises are a habit, not a later feature

The Priya message was not hard because the wording was hard. It was hard because I had made two commitments and only one was in the visible scrollback.

If you do nothing else from this post, keep a single running list outside the chat apps: what I promised, what they promised, date, channel. Glance at it before you type. The model cannot save you from a promise it never saw.

When you draft in ChatGPT, paste the list for that person. "Open: API notes (me, Monday). Staging (me, this week). They said they would share the error log." The draft stops being a vibe and becomes a status update you can stand behind.

Subtext is the sibling habit. Before you ask a model to reply, ask it what the last message is doing. Are they chasing the file, or checking if you are flaky? A wrong read produces a fluent reply that answers the wrong job. I have watched a "sure, no rush" land on a message that was not offering time. It was asking whether the work still existed.

In-thread is a different job than a chat window

I stopped using the ChatGPT tab for this because the job is not "generate text." The job is to reply inside a conversation that already has unfinished business.

A separate tab will always be a briefing tool. You can get better at briefings. You will still lose the thing you did not think to copy.

Grais is built for the other shape: a communication partner that sits where the conversation already is (WhatsApp, Telegram, Instagram, LinkedIn, Tinder in the Chrome extension today). ChatGPT lives in a separate tab. Grais lives in the thread, reads context without a paste, remembers months with that person, tracks promises in both directions, and drafts in how you already write to that contact.

The trust model matters more than the pitch. Auto-send is an option, not a default for day one. If a tool can send, you want a ladder you can set per contact: read every draft, approve then send, or (only if you ask) handle the threads you already trust. You choose a trust level. Local extension storage plus cloud. You can delete memories. If you cannot delete it, do not feed it.

None of that replaces the habits above. If you never install anything, the briefing and the promise list still fix most of the damage.

Open the thread. Scroll until you find the last commitment, not the last joke. Check whether you already answered this on another channel. Write in the box, or take a draft and cut it until it sounds like a text you would send at 23:40. If a sentence could have been written to anyone, delete it.

The ChatGPT tab is still open for code and the weird regex. I do not take my DMs there anymore. The conversation already has the context. The second tab is where I keep losing it.

For unread piles and second-language register, the persona pages work as a checklist of failure modes, even if you stay in a plain ChatGPT tab.

Top comments (0)