Today, computed in your own timezone
Tasks, meetings, follow-ups, bookings and drafts awaiting approval, ranked, with "today" computed in the reader's timezone rather than the server's. Names which sources it could not read.
Works todayAvailable now
In build
The whole team
Nineteen specialists, each with a defined job and an honest status label.
See all nineteenA priority score that shows its working, booking pages that cannot double-book, focus blocks that only ever add time nobody has claimed. Every outbound action is a draft until a person approves it, and the approval is bound to a hash of the exact content — edit an approved draft and it drops back to draft, so nothing sends wording nobody read.
What it does
Every card's status label is derived from the backend's own capability module.
Tasks, meetings, follow-ups, bookings and drafts awaiting approval, ranked, with "today" computed in the reader's timezone rather than the server's. Names which sources it could not read.
Works todayA typed note, a pasted email body, or a transcribed voice memo becomes a reviewable capture. Nothing turns into a task without someone confirming it.
Works todayScored from deadline proximity, stated priority, age and open dependencies, with a written reason per component. A manual override wins outright and says so.
Works todayA five-stage plan whose middle tasks are your own sentences with spread deadlines — deterministic, nothing invented, no credential needed — and it stays draft until you accept it. Asking a model to split the brief into work items instead needs an LLM key, and refuses rather than silently falling back if asked for without one.
Needs a keyPlain-English status from this workspace's own tasks, with the counts it was written from. Never stored, so it cannot go stale against the board it describes.
Works todayWindows, snoozing and a due list all work locally, keyed to a provider message id rather than a subject line. An expired window raises Mitra's own in-app bell notification — no phone number or provider needed. There's no Gmail or Microsoft Graph OAuth in this deployment to watch a real inbox, so resolving a tracker is a route your own mail automation (a forwarding rule, an Apps Script trigger) calls, not something Mitra reaches into your inbox to detect on its own.
Works todayScheduling and dispatch are real, and the opt-in gate is Wavy's own consent record, checked at schedule time and again at send. A dry run is recorded failed, never sent.
Needs a keyPublic page, real open slots from stored busy time, and availability re-checked in the same transaction as the booking — so two people racing for 11:00 cannot both get it.
Works todayFree time across participants whose busy blocks this workspace holds. An external participant comes back unreadable with a booking-link suggestion, never assumed free. Every query is now saved with its result, so looking it back up later answers with what was actually seen rather than recomputing against busy time that has since changed.
Works todayTasks placed into open time around existing commitments — now on every task create and update, not only on demand. A task that will not fit is reported unplaced rather than squeezed in; a newly-added fixed event re-slots any of Mitra's own holds it now overlaps. Only Mitra's own calendar is written — two-way sync with a real Google or Microsoft calendar needs OAuth this deployment does not hold.
Works todayA weekly goal refilled into 90-minute blocks in open time, with utilisation tracked against it. A new busy block overlapping an active focus block is now flagged and still created — suggest, don't hide — with one call to release the flag. Declining or proposing a new time to a real invitee is deliberately absent — this endpoint has no outbound side at all.
Works todayCompared with the prior week, clipped to the window. Meetings held only on an unconnected calendar are not counted, and the response says so rather than reporting a quiet week. A workspace can now define its own named categories, matched first-match- wins so a minute of busy time is never double-counted.
Works todayAction items you listed convert into tracked tasks with a link back to the note, no credential needed. Asking a model to summarise the note and suggest action items of its own needs an LLM key, and a suggestion stays separate from your real list until you promote it — the same capture-then-confirm shape task capture uses. Still no transcript path — joining a call as a recording bot needs every participant's consent.
Needs a keyThis is a draft until a person approves it, and the approval is bound to a SHA-256 digest of the exact content it covers. Edit an approved draft — even one word — and it drops back to draft, because an approval that survived the edit would have approved bytes nobody read. Generating the draft needs a model key; sending needs mail access.
Needs a keyTen Indian scripts, plus Latin. Devanagari is reported as Hindi with a note that Marathi shares the script; Hinglish is reported as indistinguishable from English rather than guessed — and detection plus the confirm-before-create capture both need no credential. Replying in that language, with a plain-English gloss of what it understood so you can confirm at a glance, needs a model key.
Needs a keyRule creation, the classifier and retroactively labelling recent mail under a newly-active rule all run locally, storing metadata only — no message body retained, archiving opt-in per rule. There's no Gmail or Microsoft Graph OAuth in this deployment, so applying a label or archiving inside a real inbox needs your own mail automation to call this route with your own platform credential — nothing here writes back to a real mailbox on its own.
Needs a keyDeterministic date, time and attendee extraction from free text — day-after-tomorrow, weekday names, explicit times, email addresses — always shown back as a draft to confirm or discard, nothing auto-created. Confirming writes to Mitra's own calendar and re-slots anything it now overlaps. A real Google or Outlook invite, instead of a local block, needs calendar OAuth this deployment does not hold.
Works todayThe next four occurrences generate on creation, each its own local calendar block. A colliding slot nudges inside the rule's flexibility window and is marked skipped rather than double-booked when no room remains. Rescheduling an occurrence with external participants is refused until you explicitly confirm, so a client's standing call is never silently moved. Only Mitra's own calendar is written; a real invite needs calendar OAuth this deployment does not hold.
Works todayDraft → approved → sent
The most common support question this mechanism produces is answered by this table: an edit clears an approval, on purpose.
| Action | What happens to the approval |
|---|---|
| A draft is created | A content digest is set. Status: draft. |
| A person approves it | The current digest is stored as approved_digest. Status: approved. |
| The draft is edited — even one word | The digest is recomputed, approved_digest is cleared, and status drops back to draft. |
| Send is attempted and the digest still matches | Sends, under "approval" authority. |
| Send is attempted after an edit broke the match | Refused with approval_stale — approve the new version first. Nothing goes out. |
| An auto-send rule is enabled | Only WhatsApp and SMS may ever be covered, never email, and never a message that reaches outside the business — that still needs an explicit approval. |
How it looks
Limits
Every figure here is a constant or a default in the codebase.
| Priority score range | 0–100 |
|---|---|
| Focus block length | 90 minutes |
| Booking page — default minimum notice | 120 minutes |
| Booking page — default horizon | 30 days ahead |
| Booking page — default daily cap | 20 confirmed bookings |
| Free-slot search — granularity and page size | 15-minute steps, up to 40 slots returned |
What it refuses to do
Before you switch
Tell us how your day gets planned today and we will show you exactly what Mitra carries — and what still needs a credential this deployment hasn't set.
Questions
No — it worked as designed. Every outbound action is a draft until a person approves it, and the approval is bound to a SHA-256 digest of the exact content it covers. Edit an approved draft — even one word — and it drops back to draft, because an approval that survived the edit would have approved bytes nobody read. Approve the corrected version and the send option returns. This is deliberate: an approval that survived your edit would have approved wording you never actually read.
Only in one narrow case: an auto-send rule you turned on, and only for WhatsApp or SMS — never email, never an invite response, never a schedule change. Even then, anything that would reach someone outside the business still needs an explicit approval.
A number from 0 to 100 built from deadline proximity, stated priority, how long a task has waited, and whether it is blocked — with a written reason for every component that moved it. Set your own number instead and it wins outright, labelled as your decision, and survives every recompute.
No. The page shows open slots from stored busy time, but the moment someone submits, availability is re-checked and the booking is written in the same transaction — so a second person racing for the same time finds it already taken, not double-booked.
No. WhatsApp reminders reuse Wavy's own consent records — the same ones Wavy's broadcasts check — and the opt-in is checked twice: once when the reminder is scheduled, and again at the instant it would send.
No. Focus planning only ever adds blocks into time nobody has claimed yet. The specification's own rule is "suggest, don't send", and this endpoint has no outbound side at all — nothing is declined, and nobody but you is written to.