-
-
Echo: a private AI agent that texts back as you, built on NVIDIA Nemotron and Nebius Token Factory.
-
Why I built it: important messages get buried under small talk, and I forget to reply.
-
Echo learns your texting style from your own chats. The numbers are measured from real messages, not guessed.
-
A casual message comes in. Echo drafts a reply in your style and you tap Send. (illustrative mockup)
-
Approved replies become new memory, and /auto on lets Echo answer casual messages by itself.
-
Money is never Echo’s decision. A rule catches it before the AI model sees it and asks you.
-
You answer in one line, like “say I’ll check tomorrow”, and Echo sends it in your voice.
-
Urgent messages ping you right away, and Echo does not reply on its own.
-
The evening digest: who texted, what happened, what Echo did, and what still waits for you.
-
safety rules, then fast Nemotron for triage and drafting, strong Nemotron for the style profile and digest, all through Nebius Token Factory
-
Open source under the MIT license. Message the bot at t.me/shreettbot.
Inspiration
I forget to text people back. Not because I don't care, but because important messages get buried under "good morning" and "what's up", and I never find the time to reply to everything. I kept asking myself: what is AI for, if it doesn't help with a problem this ordinary?
So I built Echo: a private AI agent that texts back as me, handles the small talk, pings me only when something really matters, and never decides anything about my money or privacy without asking me first.
What it does
- Replies as me. Echo learns how I write from my own chats (length, casing, punctuation, little quirks like stretched words) and drafts replies that sound like me.
- Remembers. Conversations and every reply I approve are stored, so Echo gets closer to my real voice over time.
- Knows what to leave alone. Every message is triaged: casual (Echo handles it), urgent (it pings me), or needs me / money / privacy (it asks me and never answers on its own).
- I stay in control. By default Echo drafts and I tap Send. With
/auto onit answers casual messages itself. I can reply to any alert with one line, like "say I'll check tomorrow", and Echo sends it in my voice. - Evening digest. A 4-5 point summary: who texted, what happened, what Echo did, and what still waits for me.
- Optional voice notes. It can transcribe incoming voice notes and reply in my cloned voice, built from my own recordings.
How I built it
Echo is a Python Telegram bot with a small, testable core.
- Safety rules run first. Money, passwords/OTPs, personal data and "are you a bot?" are caught by rules that run before any model, and the model cannot override them. If the model is unavailable, Echo asks me instead of guessing.
- NVIDIA Nemotron on Nebius Token Factory. All inference goes through Nebius Token Factory's OpenAI-compatible API. A fast Nemotron model classifies messages and drafts replies. A stronger one writes my style profile, handles owner-directed replies and writes the digest.
- Style memory. My past replies are stored in SQLite as (message -> my reply) examples. For each new message Echo retrieves the most similar examples and adds a measured "style card" (average length, lowercase rate, punctuation habits) to the prompt.
- Learning loop. Replies I approve or direct become new examples.
- Control panel in Telegram. Inline buttons plus
/pending,/digest,/style,/auto.
The Nebius client uses only the Python standard library, and 15 offline tests cover style parsing, retrieval, the safety rules, failure fallbacks, the digest and the Nebius client (against a local OpenAI-compatible test server).
Challenges we ran into
- Telegram bots can't read personal chats. The Bot API only sees messages sent to the bot, so in the demo contacts message the bot directly. Telegram Business mode could attach the same logic to a personal account, but it needs Premium.
- Safety can't depend on the model. An agent that talks as you must never be talked into paying someone or leaking data. So the hard rules sit in front of the model, and every failure path ends with "ask the owner".
- Very little data. I only had a handful of my own messages, so instead of pretending to fine-tune, I measured my style directly and retrieved real examples at reply time.
- Honesty. If someone sincerely asks whether they're talking to a bot, Echo doesn't deny it. It hands the question to me.
- A two-day deadline. I cut cloned video replies and kept voice optional so the core text agent would be solid.
Accomplishments that we're proud of
- A complete working pipeline in two days: style learning, triage, drafting, approval, memory and digest.
- Safety that doesn't rely on a prompt: money, credentials and personal data can never get a generated reply, and that is covered by automated tests.
- A recognizable writing style from a tiny sample, using measured style plus retrieved examples.
- A private-by-default design: my chats and voice stay on my machine, and only the prompt goes to my own Nebius account.
What we learned
- For personal agents, safety is mostly about what the agent is not allowed to decide, not about better prompts.
- Retrieval plus a measured style card gets a recognizable voice from very little data.
- A fast model and a strong model split the work well: quick and cheap for every message, deeper reasoning for the style profile and digest.
What's next for Echo: Your Private Reply-as-Me Agent
- Telegram Business integration, so Echo can work inside a personal account
- Cloned video-note replies
- NVIDIA NeMo Guardrails as an extra safety layer
- Deploying on Nebius so it runs 24/7
Code (MIT): [https://github.com/shree1614/echo-agent]
Log in or sign up for Devpost to join the conversation.