Skip to content
Sayam Jain
CV

Message Yourself OS

Turn everyday messages into useful workflows.

A private command centre inside WhatsApp's Message yourself chat.

Role
Solo, end to end
When
Built May to September 2026
Status
Personal tool
Sheet
03 of 05
  • 5 months

    May to September 2026, solo

  • 58

    test files across 88 source files

  • 50

    chats at most reach the AI in a run, ranked first in plain code

  • 40,000

    token budget a run; the rest wait for the next one

Overview

My WhatsApp is where things slip: a promise made in a group, a friend waiting three days for a reply.

Message Yourself OS turns WhatsApp's “Message yourself” chat into a private command centre. I type !today there and get who's waiting on me, what I said I'd do, and what to reply next. Nobody else sees any of it.

What I built

  • WhatsApp client

    • A Node.js service on whatsapp-web.js with a saved linked device session, so it restarts without scanning the QR code again.
    • Commands such as !today, !waiting, !promises, !people and !sync, private in the self chat and shared in any other chat.
  • Attention engine

    • A local index of every chat, ranked in plain code with my preferences: important, watched, ignored, and a policy per group.
    • Only a short list of candidates goes to the AI, and !attention shows why each one was picked.
  • AI layer

    • Groq (gpt-oss-120b) by default, with OpenAI as fallback and Gemini still supported, behind a request budget and provider routing.
  • Memory

    • Commitments and open loops saved locally with the source quote, date and confidence.
    • A history for each person that !sync builds from their chat.
  • Operations

    • Separate readiness checks for startup, sign in, WhatsApp sync and the chat index, with a health endpoint.
    • A scheduled daily digest.
  • Quality

    • 58 test files on Vitest, golden tests for the AI reply parsers, a local evaluation runner with metrics, and a gate of seven reviewed days before the ranked brief becomes the default.

How it works

Pick

  1. All chatsindexed locally
  2. Rankingplain code
  3. Short candidate list

Answer

  1. ModelGroq, OpenAI as fallback
  2. Evidencequote, date, confidence
  3. !today
Fig. 1 From chats to !today

Every chat is indexed locally. Plain code ranks the chats and picks a short candidate list. Only those candidates go to the model, whose findings are stored with their quotes as evidence. !today puts verified findings in Focus and lists the rest for review.

Key decisions

  1. D-01

    Private by default

    Commands typed in my own self chat answer only me. The same commands work inside other chats, where everyone sees the reply, so the self chat is where the real work happens.

    In Fig. 1:!today

  2. D-02

    The model sees a little, not everything

    The bot indexes every chat locally, but only a short, ranked list of candidates goes to the AI. Ranking happens in plain code first, so every pick can be explained.

    In Fig. 1:RankingShort candidate listModel

  3. D-03

    Every claim comes with a quote

    When the bot says I promised something, it keeps the message that shows it: the quote, the date and the model's own confidence label. Missing evidence is flagged, and !correct records why an extraction was wrong.

    In Fig. 1:Evidence

  4. D-04

    Report quota limits honestly

    If the provider's quota runs out, the result is marked “not scored” and the evidence is kept for the next run.

    In Fig. 1:ModelEvidence

  5. D-05

    Prove it's useful with real days

    Tests keep it safe. Usefulness has to be shown on real days: the ranked, evidence backed !today stays behind a switch until it passes a gate of seven reviewed days with no errors and no misses.

    In Fig. 1:!today

Where it is

My personal command centre; I run it when I need it.

What I learned

The hard part isn't adding commands; it's trust. A bot that says “you promised this” has to be right. I started with commands like summaries, tasks and a sarcastic recap, and next time I'd start with evidence.

Stack

  • Runtime

    TypeScript / Node.js / whatsapp-web.js / node-cron

  • AI

    Groq (gpt-oss-120b) / OpenAI / Gemini 2.5 Flash

  • Testing

    Vitest

Want to talk through Message Yourself OS, or build something like it?