¶What This Dashboard Is For
Ledger: Operations — the Ops Dashboard button on the Ledger home page — shows you, at a glance, whether each kennel and room in your shelter is meeting NYS Article 26-C compliance for the day.
It tracks the obligations the floor team is responsible for:
| Obligation | What it counts | Required per day |
|---|---|---|
| Feeding Observation (§430) | Daily Care Logs | 2 |
| Exercise (§430) | Daily Care Logs | 2 |
| Social Interaction (§430) | Daily Care Logs | 1 |
| Enrichment (§430) | Daily Care Logs | 1 |
| Daily Rounds (§429) | Daily Care Logs | 1 |
| Cleaning (§432) | Cleaning records | 1 per kennel |
| Sound Reading (§424.10) | Sound Level Logs | 2 per room per week (1 Cleaning + 1 Resting) |
| Room Disinfection (§432) | Cleaning records (type "Disinfection") | 1 per room per week |
Exam due dates (30-day staff exam, 6-month DVM exam) are followed on Ledger: Medical, not here.
The dashboard is view-only. You don't enter data here — you read it. Care entries come from the Ledger: App PWA. Exam dates come from ShelterBuddy and copy into our records every 10 minutes. The one exception is the Mark as TDO toggle on dog/puppy cards, which writes back to the animal's record.
¶Signing in
Sign-in uses an email link tied to your @nycacc.org address — no
shared password to remember:
- Visit any dashboard URL. If you're not signed in, you'll be redirected to
/dashboard/login. - Enter your
@nycacc.orgemail and click Send sign-in link. - Check your inbox for an email from
compliance@mail.motusleap.com(subject: Sign in to ACC Ledger). The link is good for 15 minutes. - Click the Sign in to dashboard button in the email. You'll land back on the page you originally tried to open, signed in for 30 days on this device.
Anyone with an
@nycacc.orgemail can sign in — no separate list to maintain. If your work email is disabled, dashboard access goes with it.
If a sign-in link doesn't arrive: check your spam folder, confirm the email address is right, and try again. Asking for more than five links in fifteen minutes will show Too many requests — just wait a few minutes and try again.
If a kennel looks wrong on the dashboard but you know the work was done, the care record probably went into the wrong workflow in the Ledger: App. Check the Ledger: App first before assuming the dashboard is broken.
¶The Three View Levels
The dashboard has three screens. You drill down: shelter → room → kennel detail.
| Level | URL | What you see |
|---|---|---|
| 1. Shelter Picker | /dashboard/#/ | One card per shelter with animal counts |
| 2. Room Picker | /dashboard/#/shelter/:shelterId | One card per room in that shelter, with compliance flags |
| 3. Room View | /dashboard/#/room/:shelterId/:roomName | Kennel cards with care dots (Today / Week tabs) |
You can bookmark any of these URLs. The room view URL is the one most worth saving — bookmark the room you stand in, and the dashboard opens straight to it.
Examples:
https://compliance.motusleap.com/dashboard/#/
https://compliance.motusleap.com/dashboard/#/shelter/55
https://compliance.motusleap.com/dashboard/#/room/55/M209%20-%20Cat%20Holding%20Room
Shelter IDs come from ShelterBuddy: 55 Manhattan, 56 Staten Island, 58 Queens. Brooklyn (54) and Bronx (57) are hidden — see below.
¶Shelter Picker
The first screen lists every shelter you have access to. Each card shows:
| Field | Meaning |
|---|---|
| Animals in care | Live count from Airtable — every animal flagged In Care |
| In pop-up crates | Subset above housed in PC kennels (pop-up crates) |
| Sick | Animals whose most recent vet evaluation includes a watch-list condition (CIRDC, Pneumonia, feline or rabbit URI). Cats includes kittens; dogs includes puppies. Line is hidden when both species counts are zero. |
Click or tap a card to enter the room picker for that shelter.
¶Hidden Shelters
Two ShelterBuddy sites are hidden from this view because they don't house animals in long-term care:
| Shelter | Abbrev | Why hidden |
|---|---|---|
| Brooklyn Animal Care Center | BACC | No animals currently in care |
| Bronx Admissions Center | BRC | Admissions only — not a holding facility |
If you need to see one of those, talk to your supervisor — it's a setting that needs to be changed in the system.
¶Room Picker
After you pick a shelter, you see one card per room. Cards include the room name, kennel and animal counts, and compliance flags that show what's wrong in that room at a glance — so you can spot issues without opening each room.
¶Room flags — what each one means
| Flag | Meaning | What to do |
|---|---|---|
| An exception was logged for an animal in this room today | Open the room to see why | |
| N animals in this room are on the medical watch list (CIRDC, Pneumonia, feline or rabbit URI) | Open the room — hover the SICK pill on each kennel card to see exact conditions | |
| A kennel has 3 or more animals assigned to it | Confirm the assignment in ShelterBuddy is correct | |
| N animals are at this location with no kennel assigned | Assign a kennel in SB | |
| N animals are housed in pop-up crates (not flagged as a problem, just informational) | — | |
| N kennels in the room have no animal assigned | Use for new intakes | |
| A sound reading was taken in the last 4 days | — | |
| Last sound reading was 5–6 days ago — approaching the weekly deadline | Take a reading today | |
| No sound reading in 7+ days | Take a reading immediately | |
| Room was disinfected in the last 4 days | — | |
| Last disinfection was 5–6 days ago | Schedule disinfection | |
| No disinfection in 7+ days | Disinfect immediately |
The thresholds are fixed:
| State | Days since last log |
|---|---|
| OK | 0–4 days |
| Approaching | 5–6 days |
| Overdue | 7+ days |
Rule of thumb for the room picker: if you see anything red, that room is out of compliance right now. Anything amber is on track to be non-compliant tomorrow. Green means you're fine.
Tap Legend in the top right of the room picker to see all flag meanings on screen.
¶Which rooms appear
A room shows up if it has kennels in ShelterBuddy or at least one in-care animal. Rooms with neither are hidden. The dashboard also hard-excludes non-care locations regardless of animal count: freezer, fridge, morgue, deceased/DOA, disposal, euthanasia, foster homes, trial adoption, and adopter-home locations.
¶Room View
The room view is the main screen. You'll see two tabs:
The header shows:
- Room name + shelter abbreviation
- Compliance pills for Sound Reading and Room Disinfection (click them to see the underlying readings)
- Refresh button (⟳) — manual refresh
- Last-updated label —
Care data: 3m ago · SB sync: 7m ago. The first number is when the dashboard last pulled care data; the second is when ShelterBuddy animal records last synced into the Ledger. - More menu (⋮, to the left of Legend) — overflow with Force sweep this room. Use it when an animal is stuck on the dashboard even though they've already been adopted, returned to owner, euthanized, or otherwise moved out of ShelterBuddy. The sweep checks SB for every in-care animal in this room and removes any the SB record says is no longer in care. A status line ("Sweeping…" → "Cleared N of M · just now") appears between the tabs and Legend while it runs. The button is rate-limited to one sweep per room every 5 minutes.
¶Today tab
The Today tab is a grid of kennel cards. One card per kennel — or, in group housing rooms, one card per animal.
¶Reading the kennel header
| Element | Meaning |
|---|---|
Kennel label (e.g. M209-04) | The kennel barcode/name from ShelterBuddy |
| Two animals share this kennel | |
| Three or more animals in this kennel — review | |
| Same as Shared, with the count — pulses coral as a capacity warning | |
| + | Animal exists at this location but has no kennel assigned |
If the room is group housing (no kennels in SB), each animal gets its own card and the kennel label is hidden — tap anywhere on the card to expand detail.
¶Animal status flags
These appear inline before the animal name:
| Flag | Trigger |
|---|---|
| Animal has been housed in the shelter 14+ days (long-term stay). Time in a foster home or on trial adoption does not count, and a return to the shelter restarts the clock. | |
| Animal is marked Transfer Door Only — exercise obligation auto-excepted | |
| (with count) | N manual exceptions logged for this animal today |
| Animal's most recent SB vet evaluation includes a watch-list condition. Hover the badge to see the exact conditions in a popover — linger over the popover to read and copy the list. Auto-clears when the next eval omits them. |
Exams logged before the animal's current intake don't count. If an animal was returned to the shelter, the clock starts over from the new intake date.
¶The dot system
Six dots per animal, left to right, in this order and color:
| Dot | Obligation | Target |
|---|---|---|
| Feed | Feeding Observation | 2 |
| Exercise | Exercise | 2 |
| Social | Social Interaction | 1 |
| Enrich | Enrichment | 1 |
| Rounds | Daily Rounds | 1 |
| Clean | Cleaning (per kennel) | 1 |
Each dot has three base states:
| Visual | State | Meaning |
|---|---|---|
| Dim (faded outline) | 0 logs of that type today | |
| Half-lit gradient | Partially done (e.g. 1 of 2 feedings) | |
| Fully lit | Target met |
A clean demo of all three states across the six dot types — first two dim, next two half, last two full:
If an animal has an acknowledged exception for an obligation type (or is TDO, or a long-stay cat, for the Exercise obligation), the dot colors only the unlogged remainder purple:
- Nothing logged yet → the whole dot is solid purple.
- Partially logged (e.g. 1 of 2 feedings, then excepted) → half the activity's normal color, half purple — the logged portion still shows in its normal color.
- Fully logged → the dot shows its normal full color, same as any other animal. Real documentation always wins over an exception.
Either way — purple or fully logged — an excepted obligation counts as satisfied for the kennel card's "complete" highlight (below). The purple portion is your signal that some or all of the activity wasn't actually logged, but the exception was documented.
A card whose animals have all obligations either fully lit or satisfied by an exception gets a subtle "complete" highlight on its border. That's your at-a-glance "this kennel is good" signal.
¶Tapping a card
Tap or click a kennel card (or an animal section in a shared kennel) to expand the detail. You'll see:
- Each individual care log entry — type, staff ID, time, notes
- Each exception entry — obligation, reason, staff, notes
- Each cleaning log on this kennel — type (Spot Clean, Full Clean, Disinfection), staff, time
- For dogs/puppies, a Mark as TDO / TDO — Transfer Door Only toggle button. This is the one place the dashboard does write data — toggling it updates the animal's TDO flag in Airtable.
Click an animal ID (the #248502 link) to open the animal in
ShelterBuddy in a new tab.
¶Week tab
The Week tab shows 7 days as a compliance matrix. Rows are kennels; columns are the 7 days ending on the day you've chosen — by default today, in the right-most column. There are no future days on the grid.
Going back in time. Above the grid, ‹ Previous week and Next week › move the window a week at a time, and the Week ending date picker jumps straight to any day (it won't accept a future date). This week brings you back. The week you're looking at is in the page address, so you can copy the link to show someone exactly that week.
Past weeks show a different roster. For a week that's over, the grid lists the animals that have records in this room that week — the system has no history of who sat in which kennel on a given day, so an animal that was here but has no records that week isn't listed, and a caption above the grid says so. Status flags (LT, TDO, SICK) aren't shown for past weeks either: they describe an animal now, not then. The current week works as before — every animal in the room today, with its flags.
| Element | Meaning |
|---|---|
| 6 small dots per cell | Same Feed/Exer/Soc/Enri/Round/Clean dots as the Today view, scaled down. Cleaning follows the animal here: a cell's Clean dot counts only cleaning recorded for that animal, wherever it was that day — never a previous occupant's cleaning of the same kennel. A kennel cleaned with no animal in it (a kennel-only scan, or room disinfection) shows in the Today view and the header pills, not on an animal's week row. |
N EX flag in a cell | N exceptions logged for that animal that day |
— dash | Empty kennel that day (no animal) |
| Highlighted column | Today |
Tap any cell to see the detailed log entries (care logs, cleaning, and exceptions) for that animal on that day, each with the staff ID and time.
Which time you see, and which day an entry lands on. When staff pick a
care window in the App (for example 7:30a-8:00a), that window is what the
Dashboard shows, and the entry counts on the day of that window. An entry
recorded without a window shows its submit time instead. So a Room Check
submitted at 1:00 AM for the previous operating day's 8:00p window appears
on the previous day, where the care happened, not on the day it was
submitted. All times are Eastern. The same rule applies to the Today tab.
Click an animal's name in the Week tab to open its full record in the
Inspector view (/inspector): every care, cleaning, exception, sound,
movement, foster, and medical entry since intake, with date filters, CSV
export, and a print layout. It uses the same sign-in as the Dashboard. The
#A-number link beside the name still opens ShelterBuddy.
The Week tab does not show sound or disinfection history — those are in the header pills (whose colors reflect the most recent reading) and their popovers (the last 30 days).
¶Compliance Pills (Sound + Disinfection)
The pills at the top of the room view summarize the room's two weekly obligations:
| Pill | Meaning |
|---|---|
| Reading taken today | |
| 0–4 days | |
| 5–6 days (approaching) | |
| 7+ days (overdue) | |
| None in the past 7 days | |
| Disinfection logged today | |
| 5–6 days (approaching) | |
| 7+ days (overdue) | |
| None in the past 7 days |
Click either pill to see every reading from the past 30 days — decibel value, activity level, staff ID, and timestamp. Sound readings above 85 dB are highlighted as a warning (§424.10: "sound levels exceeding eighty-five decibels"; a reading of exactly 85 is not flagged).
¶Quick Switch + Refresh
In the room view header you also have:
- Room dropdown — switch to any other room in the same shelter without going back to the picker. Switching this way preserves your current tab (Today vs Week).
- Refresh button (⟳) — pulls fresh data immediately.
- Back button (←) — returns to the room picker for the current shelter.
¶Edge Cases
A kennel card looks wrong (e.g. dots not filling in even though the work
was done).
First check the time stamp in the header (Care data: Xm ago). If it's recent,
the care record probably went into the wrong type — open Ledger: App, find
the entry, and fix it. The dashboard will catch up on the next refresh.
A kennel shows Verify (3) or higher.
Three or more animals are mapped to the same kennel in Airtable. Open
ShelterBuddy and verify each animal's actual location. Almost always this is
a kennel-move that wasn't reflected when the staff member entered care
notes.
A room flag says No Kennel (N).
There are N animals in the room with no kennel assigned. They show up at the
top of the room view as kennel No Kennel with a Verify badge. Assign them in
SB.
Where did the 30EX and DVM flags go? Exam due dates (the 30-day staff exam and the 6-month DVM exam) now live on Ledger: Medical, where the medical team follows them room by room. They no longer show here.
An EX flag (purple) is showing. A manual exception was logged for an obligation today (e.g. "Animal too fearful to handle"). Tap the card to read the reason. Exceptions are valid documentation under Article 26-C, but the system flags repeat exceptions for review.
The card says LT and the animal is in foster.
The dashboard shows an animal at its current location. If the animal is in
foster, it should not appear here at all. If it does, the In Foster flag
hasn't synced yet — wait for the next sync (every 10 minutes), or flag a
manager.
The "SB sync" timestamp is more than 30 minutes old. The ShelterBuddy → Airtable sync is stuck. Tell your supervisor — they can trigger a manual sync. Until then, animal moves and new intakes won't appear on the dashboard.
The dashboard is blank or shows an error. Force-refresh the page (Cmd-Shift-R on Mac, Ctrl-Shift-R on Windows). If it's still broken, our records system may be busy. Wait 30 seconds and reload.
¶Quick Reference
| I need to know... | Where on the dashboard |
|---|---|
| Which rooms haven't been disinfected this week | Room picker → look for Not Disinfected or Disinfected Nd ago flags |
| Which rooms missed their weekly sound reading | Room picker → look for No Weekly Sound (both conditions missing), No Cleaning Sound / No Resting Sound (one missing), or Sound — [Cleaning/Resting] Nd (approaching) flags |
| Whether a specific kennel got fed today | Room view → kennel card → gold Feed dot |
| Everything logged for one animal since intake | Room view → Week tab → click the animal's name (Inspector view: date filters, CSV, print) |
| Whether a specific kennel got cleaned today | Room view → kennel card → teal Clean dot |
| Why an animal is exempt from an obligation today | Room view → tap the card → read exception detail |
| When a sound reading was last taken in this room | Room view → click the Sound Reading pill |
| When this room was last disinfected | Room view → click the Room Disinfected pill |
| What an animal's compliance looked like 3 days ago | Room view → Week tab → tap that day's cell |
| Which animals are long-term stays (housed 14+ days) | Room view → look for blue LT flags on cards |
| Switch rooms without going back | Room view → room dropdown in the header |
| Mark a dog as Transfer Door Only | Room view → tap card → Mark as TDO |
| Open an animal in ShelterBuddy | Click the #NNNNNN animal ID on any card |
¶Clinical role
Any @nycacc.org account can sign in to the Dashboard and Ledger: Medical.
Some upcoming Medical pages show animal-level disease information: the
disease-surveillance case lists, spread signals, acknowledgements, and the
health digest emails. Those need the Clinical role on top of signing in.
The Disease Tracker's aggregate charts (counts and trends, no animal lists)
stay open to every signed-in account.
If you see "Request access": your account does not have the Clinical role. Ask a Ledger admin to grant it. Once it is granted, reload the page. You do not need to sign in again.
For admins: the role is managed on the Roles tab of the config admin
at /admin/config (open to accounts on the ADMIN_EMAILS allowlist).
- Grant: open "Grant the clinical role", enter the
@nycacc.orgaddress the person signs in with, and submit. Granting a role someone already has changes nothing. - Revoke: press Revoke next to the person. It takes effect on their next page load.
- Audit: each grant and revoke is written to the server log
(
admin_role_grantedandadmin_role_revoked, with the admin who made the change). The Roles tab shows who granted each current role and when.
Being a config admin does not grant the Clinical role. An admin who needs the clinical pages grants it to themselves like anyone else.
¶Notification Digests
The dashboard does not send emails. If you also receive the daily compliance digest emails or use the Ledger: App and Ledger: Foster, see the App guide and the Foster guide for those workflows.