Our own · Mooney adminRunning (our own) · internal

Mooney admin.

Mooney admin is the back office behind Mooney: a composer for the notifications the app sends, and a queue for sorting what users write in. Only the people who run Mooney can reach it; every table is locked to their accounts, and sign-in is by an emailed link. Internal, recorded 2026-07-06.

For your product teamInside: notification composer · feedback queue · team-only access

The short version

The composer, to read.

Running (our own), and internal. The back office is locked to the team, so this is a capture of the push composer from the static page, taken with every network call blocked. The fields hold sample text. It carries no real user data and no email address.

In shortThe team writes a notification, narrows who gets it, and sends it now or saves it for later. What users write in lands in a queue beside it. Both sit behind a gate.

  1. Two jobs, one back office.Notifications go out from the push tab. What users write in is read and sorted on the feedback tabs.Read how
  2. A message is two fields.A title and a body, written by the team.Read how
  3. Filters pick who gets it.Country, tier and install dates. A blank filter means everyone.Read how
  4. Send now, or save as scheduled.One sends it. The other queues it for the time set above.Read how
  5. Only the team gets in.A gate in front of the whole surface, and row-level access on every table.Read how
The long version

The deep dive.

The same back office, taken apart: what each part of the composer holds, the rules behind it, one campaign walked from the push tab to send, and where a send is not the plain case.

The situation

A live app needs a locked place for its team to work.

A live app needs a way to send its users notifications and a way to read what they write back. Both need a place for the team to work, and that place touches user data, so it has to be locked before it is useful.

Mooney admin is that place. It is the back office behind Mooney, OCTYN’s own voice-first Android expense tracker, and the part of Mooney that only the people who run it ever see.

Region by region

The composer, taken apart.

The push tab has six parts: the header, the tabs, and four stretches of the composer from the title down to the send buttons. Here is each one in turn, and what it holds.

The screen

One tab, six parts.

This is the push tab of the back office: a header, a row of tabs, and a composer that runs from the title down to the send buttons. The capture is the static page with every network call blocked, and sample text in the fields.

  1. The screen

    One tab, six parts.

    This is the push tab of the back office: a header, a row of tabs, and a composer that runs from the title down to the send buttons. The capture is the static page with every network call blocked, and sample text in the fields.

  2. Top · The header

    A back office with a door in front.

    The name of the tool on the left, a refresh button and a sign out button on the right. The tool is internal, with no public surface. Sign-in is by an emailed link, and a gate sits in front of the whole page.

  3. Top · The tabs

    Notifications out, feedback in.

    Three tabs: push, feedback and website feedback. Push is where a notification is written and sent, and it is the tab open here. The two feedback tabs are where what users write in is read and sorted.

  4. Upper · Compose

    A title and a body.

    A campaign starts as two fields. The title is one line. The body is a few. The text on this capture is sample text, a line about a week of spending, and it was never sent to anyone.

  5. Middle · Filter

    Who it goes to.

    Four filters narrow the audience: country, tier, installed after and installed before. Country takes two-letter codes. Tier takes free, paid or trial. A blank filter means everyone. The install dates only match devices with an install date on record.

  6. Lower · Schedule

    When it goes.

    A scheduled-at time in UTC, left blank to send now. Under it, a recurrence menu that is one-off by default and can repeat the campaign automatically. To stop a repeat, delete the next scheduled instance.

  7. Foot · Send

    Send now, or save for later.

    Send now sends it. Save as scheduled queues it for the time set above. Save as draft keeps it, and clear form empties the fields. A force box skips the one hour rate limit, for a send now or a scheduled save.

Inside each region

The rules the back office runs on.

Mooney admin is running, and it is ours. These figures are drawings of the rules in the write-up: how a campaign goes out, how what users write in is handled, and what the two locks do. They draw no real data and no counts.

Running (our own) · the composertwo runs, one after the other · drawn, no counts

How a campaign goes out.

The team writes a title and a body.

Compose, filter, schedule, send. Left blank, the filters mean everyone and a blank time means now. Set them, and the campaign reaches only some devices and is saved as scheduled. The dots are drawn, not counted.
Running (our own) · the feedback tabsbars stand in for text · none is real

How what users write in is handled.

Messages from two tabs arrive in one queue.

Feedback and website feedback are two tabs, and what lands in them is read and sorted by the team in one place. This page draws the shape of that work. It holds no message text and no count, and the write-up records none.
Running (our own) · who can reach itthree runs, in turn

Two locks, one behind the other.

A team member, signed in by emailed link

An access gate sits in front of the whole surface, so the pages are not open to anyone outside the team. Behind it, every table carries row-level security tied to the team’s accounts, so the data stays closed even if a page were ever reached.
One campaign, end to end

A notification, from the push tab to send.

One campaign through the composer, on the capture. Each step lifts the part the team is working in and dims the rest.

01 / 5

Push is the open tab.

The team opens the back office and works on the push tab. Feedback and website feedback sit beside it.

Edge cases

Where a send is not the plain case.

  1. A second send inside the hour.

    The composer carries a one hour rate limit. A force box, marked as skipping it, applies to a send now and to a scheduled save. It is a choice the team makes on purpose.

  2. A campaign that repeats.

    Recurrence is one-off by default. Set to repeat, the campaign goes out again on its own. To stop it, delete the next scheduled instance.

  3. Install dates with nothing on record.

    The installed after and installed before filters need an install date on the device’s record. A device without one cannot match them. Country and tier match the user’s own settings.

What a person always decides
  1. Write the messagethe Mooney teamThe title and the body are written by a person on the team.
  2. Choose who gets itthe Mooney teamCountry, tier and install dates. Left blank, the campaign goes to everyone.
  3. Send now, or schedulethe Mooney teamThe team presses send now, or saves it as scheduled for a later time.
What the record holds

What is on the record.

The line it holds
Only the people who run Mooney can reach it. A gate sits in front of the whole surface, and every table carries row-level security tied to the team’s accounts.
What we built
A composer for the notifications Mooney sends: compose, filter, schedule, send, now or saved as scheduled. A triage queue for what users write in. Sign-in by an emailed link. It runs on Next.js and Supabase, with Cloudflare Access as the gate.
What is on the record
Internal, recorded 2026-07-06, with no public surface. The access model is the record: row-level access on every table, and a gate in front of the whole surface.
What is not
OCTYN has recorded no send counts or feedback volumes for it, so none are quoted here.
Left out
No real user data and no email address. The capture is the static page with every network call blocked, and the fields hold sample text.

Back to the composer

Something like this, for your company?

The first conversation is with the people who would build it. If there is a fit, the Consult comes next.

Map something similar