I gave my WhatsApp an AI brain
Like most of my side projects, Synq started with a mild annoyance: my entire life runs through WhatsApp, and WhatsApp has the long-term memory of a goldfish. Somewhere in those threads is everything: addresses, decisions, promises, that restaurant someone recommended in March. None of it findable, none of it working for me.
So I built myself an assistant that lives where my messages already are. Text it like a person, and it answers with the full weight of every conversation we’ve ever had. This post is how it works and what building it taught me.
Two processes, one brain
Synq is deliberately small: two processes.
The bridge is a Node process speaking the WhatsApp Web protocol through Baileys, the unofficial library. It does one job: receive messages and forward them over HTTP to the server; take replies and send them back. Necessary caveat: this is the unofficial route, WhatsApp doesn’t bless it, and it can break when the protocol shifts. For a personal assistant on my own account, that’s a trade I accept with open eyes. I would not build a business on it.
The server is Rust: Axum for the HTTP layer, SQLite for storage, and Claude via AWS Bedrock for the thinking. Every inbound message follows the same pipeline: store it, embed it, build context, ask the model, store and send the reply.
SQLite deserves a sentence of appreciation here. A personal assistant is a single-user system; the world’s most-deployed database, in a single file I can back up by copying, is not the compromise option. It’s the correct one. The whole system runs on one small box.
Memory is retrieval, not context length
The interesting engineering isn’t calling a model, it’s deciding what the model gets to see. Synq builds context from three sources on every message:
- Recency: the last stretch of the current conversation, for ordinary continuity.
- Semantic memory: every message ever stored gets an embedding on arrival. A new message is embedded too, and its nearest neighbours across all past conversations get pulled into context. This is the goldfish cure: mention the trip, and the relevant threads from months ago surface, regardless of when or where they happened.
- A style profile: more on this below, because it’s the feature people react to.
What I learned building this: memory design beats model choice. The same model with well-chosen context feels dramatically smarter than with a naive transcript window. Retrieval is the product; the model is the engine it feeds. And “what should the assistant remember” turns out to be a design question about you, not a vector-database question.
Teaching it to text like me
After enough messages, Synq analyses my writing patterns and distils a style profile: how I punctuate, how brief I am, what I sound like. That profile rides along in the system prompt, so replies come out in something recognisably close to my texting voice rather than assistant-brochure English.
This is simultaneously the best feature and the one that forces the ethical line. Synq answers me, in my threads; it is not a bot that impersonates me to other people. I keep it that way on purpose. An assistant that texts your friends in your voice without disclosure stops being a productivity tool and starts being a small deception machine. Helpful and creepy are separated mostly by who knows what’s happening.
The boring parts that make it work
Readers of this blog will spot a familiar theme: the reliability of the fun thing is carried by unglamorous invariants.
WhatsApp redelivers messages; networks retry. So every message carries its WhatsApp message ID, and the server tracks processed IDs, making handling idempotent. Without that, a flaky connection means the assistant answers the same message twice, which is exactly the never-process-an-unknown-twice lesson wearing a chat costume.
Everything is config over code: model ID, context depth, the base personality prompt, all environment-driven and overridable at runtime. When a better model ships on Bedrock, adoption is a one-line change. In 2026, hardcoding your model name is planned obsolescence.
What this project is for
Synq will never be a product, and that’s its charm. It’s the kind of project I’d recommend to any engineer who wants to actually understand the current AI stack: small enough to hold in your head, real enough to hit the genuine problems (retrieval quality, context budgets, idempotency, prompt drift), and personally useful every single day, which keeps you honest about whether it actually works.
The fun projects are where the lessons are cheap. Better to learn “memory design is the product” on your own WhatsApp than on a customer’s data.
No account, no tracking. One vote per reader.