A Node.js service that put GPT and Gemini behind a WhatsApp number, with per-chat conversation memory and a model switch, several months before Meta shipped an assistant inside the app.
Problem
In early 2023, using a language model meant keeping a browser tab open and pasting context into it by hand. The context people actually wanted to work in was their chat history - the messages where they had already explained what they were dealing with.
So the project was less "build an AI" than "put a router between a messaging webhook and two model APIs, and make the memory behave".
What it does
You message a WhatsApp number. The bot replies using whichever model you have selected, and remembers the conversation you have been having. A command switches between GPT and Gemini, a command clears context, and the model choice is per-chat rather than global.
The value was not the intelligence. It was that the assistant lived in the place where the problem was being typed.
How it's built
Node.js against the WhatsApp Web client library, which is how this existed at all before the official Business API became the only sanctioned path. Inbound messages are keyed by chat identifier into a rolling context window; outbound replies are streamed back as they arrive so long answers do not look like a hang.
Two design decisions did most of the work. First, the context window is stored per chat with a token budget rather than per user, because the same person uses one thread for work and another for something else entirely, and merging them is worse than truncating them. Second, model selection is an explicit command rather than automatic routing: the two models had genuinely different strengths at the time, and pretending a router could pick correctly would have been a worse product.
The unglamorous parts were rate limiting, message-length truncation to fit WhatsApp's limits, and reconnect handling for the unofficial client session, which drops far more often than any API contract suggests it should.
Status
Archived. WhatsApp closed off the unofficial client route, and the official Business API path made the personal-number experience that motivated the project impossible. The interesting parts - per-chat context, streaming into a chat client, provider abstraction - were carried forward into later work.
Credits
- OpenAI and Google DeepMind for the model APIs
- The WhatsApp Web client library maintainers, for the unofficial bridge this rode on

