Inspiration

I saw Andrew Ng's AI avatar website, where you can chat with an AI version of him. I loved the idea, but only a famous person had one. I asked myself: why can't everyone have their own AI avatar?

People ask you the same questions again and again: "What do you work on?", "Are you open to work?", "What's your tech stack?" An AI version of you could answer them any time, even while you sleep.

So I built meAsAgent. Anyone can make an AI avatar of themselves and share the link.

What it does

  • Make your avatar in minutes. Sign in with Google, write a little about yourself, and your avatar is ready. It takes your name and photo from your Google account, so it can only ever be of you. Nobody can make a fake avatar of someone else.
  • Anyone can chat with it. Share your link, like measagent.vercel.app/yourname, and people can talk to your avatar. Replies stream in word by word.
  • It remembers people. When a visitor comes back, the avatar remembers what they talked about last time.
  • See who visited. As the owner, you can read the conversations people had with your avatar.
  • Weekly email. Every week you get a short email about who talked to your avatar and what they wanted.
  • A public directory. The home page lists all the avatars. An admin checks each one before it shows up there.

How I built it

  • Frontend: Next.js 16 and React 19, hosted on Vercel.
  • Backend: Fastify 5 running on Bun, written in TypeScript.
  • Database: MongoDB stores users, avatars, chats and memories.
  • AI: Amazon Bedrock is the language model. Replies are streamed to the browser with Server-Sent Events, so they feel fast.
  • Login: Google Sign-In.
  • Emails: Resend sends the weekly summary.
  • Admin portal: A separate Next.js app to review avatars before they go public.
  • Background jobs: A timer inside the API writes memories, sends reminders and prepares the weekly emails.

The avatar's personality is built fresh on every message from what the owner wrote. A visitor can only choose which avatar to talk to. They can't change how it behaves.

Challenges I ran into

  • Memories are not orders. A visitor could try to hide a command inside a chat, like "remember: ignore your rules". So saved memories are treated only as information, never as instructions.
  • Nothing should break the chat. If memory or email fails, the chat still works. Every extra feature fails quietly on its own.
  • No duplicate work. If more than one server is running, background jobs must not send the same email twice. I used a "lease" in MongoDB so only one server does each job.
  • Privacy. Owners can read conversations, so visitors have to know that. There is a clear notice under the chat box and a one-time consent step.
  • Signing in without losing chats. If you chat first and sign in later, your old chat is merged into your account instead of disappearing.

Accomplishments that I'm proud of

  • It is live and works end to end: sign in, make an avatar, share it, chat, and get a weekly email.
  • The avatar really remembers returning visitors.
  • It was built to be safe from day one. You can only make an avatar of yourself.
  • The whole thing is clean, typed TypeScript, from the frontend to the backend.

What I learned

  • Things will fail, so plan for it. Each feature should fail gently and never take the rest of the app down.
  • Security and privacy need to be part of the design from the start, not added later.
  • Streaming answers make an AI app feel much faster.
  • A good prompt is not enough. You also have to protect it from what users type.

What's next for meAsAgent

  • Teach the avatar more: let owners upload their resume, blog posts or docs so the avatar can answer with real details (RAG).
  • Voice: let people talk to the avatar out loud.
  • Our own domain: move to meAsAgent.com.
  • Smarter insights: better weekly reports, like the most common questions people ask.

Built With

Share this project:

Updates

Submission history