← All projects

M.I.R.A. v2

My personal assistant: 6 AI agents that answer with text, numbers and charts, from Telegram or a voice web app.

Status
Used every day in the personal version. The public demo runs real AI on a made-up shop with test data. Built in one week of work.

The problem

People in marketing and e-commerce jump every day between Shopify, Klaviyo, Meta, documents, briefs and code, and put the numbers together by hand.

I needed one place to ask a question and get an answer that's already reasoned through, with the data visualised.

What it does

A router reads the request and passes it to the best agent: Marketing, Research, Development, Reports, Assistant, and Soolù in the personal version.

When it talks numbers it draws charts: lines for trends, bars for comparisons, never with invented figures. It reads PDF, Word, TXT and CSV, speaks and listens, remembers recent exchanges and shows how many tokens it used.

How I built it

Orchestration is an n8n workflow: Claude Haiku is the router, Claude Sonnet answers with the chosen agent's prompt. Each agent is a Markdown file versioned on Git, and a Python script regenerates the workflow from those files.

Accounts and projects on Supabase with Row Level Security. The app is plain HTML, CSS and JavaScript, installable as a PWA, with hand-made SVG charts, a Canvas voice wave and in-browser document reading with pdf.js and mammoth.

Security first: Telegram answers only me, accounts are invite-only, secrets live only in the backend, and documents and emails are treated as data, never as instructions. The demo has server-side usage limits. Over 90 automated tests, Playwright interface checks and a check that blocks keys and tokens in the code.

What I learned

Keeping prompts in separate files, one per agent, makes the system easy to change and test: I edit a file and regenerate the workflow.

Stack

  • Claude Opus 5.5
  • Claude Code
  • Claude Haiku
  • Claude Sonnet
  • n8n Cloud
  • Supabase
  • Row Level Security
  • Telegram Bot API
  • Netlify
  • PWA
  • Web Speech API
  • pdf.js
  • GitHub Actions
  • Playwright

Telegram

The bot is private and only answers me; here are the screenshots.

A reel plan, second by second
A reel plan, second by second
A fix on an unverified claim and the first carousel
A fix on an unverified claim and the first carousel
The full carousel, slide by slide
The full carousel, slide by slide