Ledger Platform · Staff Guides
For Animal Care

Ledger App

Updated
2026-07-27
Reading time
~29 min
Sections
15

Logging In

The Ledger: App lives at:

https://compliance.motusleap.com/care/

When you open it, your browser asks for a username and password.

FieldWhat to enter
UsernameAnything — acc, your name, leave it blank. The system ignores the username.
PasswordThe shared Ledger: App password. Ask your supervisor.

The password is checked once per browser window. Close the tab and reopen — you'll be asked again.

Add it to your phone's home screen. This is the recommended way to use the app.

  • iPhone (Safari): Tap the Share icon → Add to Home Screen → name it Ledger: App.
  • Android (Chrome): Tap the three-dot menu → Install app or Add to Home Screen.

Once installed, the app launches full-screen with no browser bar — exactly like a native app.

After auth, you'll see a one-time Staff ID Number screen. Enter your 99-number (e.g. 990000) and tap Start Logging. The app remembers it on this device. To switch users, tap the person icon in the top right of the home screen.


The Home Screen

Five workflows. Tap the one you need.

WorkflowWhat it's forScan
Kennel CareDaily care + cleaning for one animal or kennelAnimal QR code or kennel barcode
Sound LevelDecibel reading for a location (Article 26-C §430.1)Any kennel card in the room
Room DisinfectionLogging that you disinfected a whole roomAny kennel card in the room
Move AnimalMove an animal to a new kennel in ShelterBuddyAnimal QR, then kennel barcode
Room CheckBulk-log care for every animal in a room at onceAny kennel card in the room

Heads up: Move Animal requires a separate Move Password from your supervisor. Without it, the workflow won't submit.


A Few Things Worth Knowing

  1. Every log you submit is stamped with your Staff ID and the time. You don't need to enter either — the app handles it.
  2. One log type makes one record. If you tap Feed and Exercise, the app creates two separate records. Same for Full Clean and Disinfection.
  3. If you're offline, the app holds your submissions and sends them once you're back online. You don't need to do anything — just don't tap Submit a second time. The first tap is already saved.
  4. Repeat exceptions on the same animal get flagged for the Behavior Team. If 5 of the same kind of exception pile up on one animal in 5 days, the pattern likely means the animal needs intervention — a different care plan, a behavior consult, or an environmental change. An email goes out automatically so the Behavior Team doesn't miss the pattern (more on the alert near the end of the guide).

One Scan, Two Things

You don't need to think about whether you're scanning an animal's QR code or a kennel barcode. The app figures it out:

Either way, the room and shelter come from the scan — you don't type them.


Workflow 1: Kennel Care (the main one)

This is the workflow you'll use for almost every interaction with an animal.

Steps

  1. Tap Kennel Care on the home screen.
  2. The camera opens. Point it at the QR code on the animal's kennel card.
  3. The app loads the animal — name, ID, kennel, shelter — at the top of the form.
  4. Tap log types under Care to record what you did.
  5. Tap log types under Cleaning to record what you cleaned.
  6. Tap Submit.

If the camera can't read the code, tap Enter ID manually at the bottom of the scanner and type the Animal ID. Manual entry only accepts numeric IDs.

The Care Section

The Care section appears only when you scanned an animal QR (not a kennel barcode).

Tap to logWhat it creates
Feeding ObservationDaily Care Log of type Feeding Observation
Social InteractionDaily Care Log of type Social Interaction
ExerciseDaily Care Log of type Exercise
EnrichmentDaily Care Log of type Enrichment
Daily RoundsDaily Care Log of type Daily Rounds

Each button has three states. Tap once to mark it done. Tap again to mark it as an exception (you couldn't do it). Tap a third time to clear it. In the exception state, the button reads "EX " plus the activity name — for example, EX Feeding Observation or EX Exercise.

You can pick any combination. Tapping Feed + Exercise + Rounds creates three separate Daily Care Log records when you submit.

TDO dogs and long-stay cats — the AUTO Exercise state. When you scan a dog marked Transfer Door Only, or a long-stay cat housed in a room that doesn't meet the 18 sq ft per cat threshold of §430.4.a, the Exercise button starts in a fourth state labeled AUTO Exercise (dashed purple outline). The 5 AM cron has already documented the exemption — you don't need to log Exercise for that animal. If you actually did exercise them, tap once to override (button becomes solid Exercise, done). The full cycle for these animals is: AUTO Exercise → Exercise (done) → EX Exercise → AUTO Exercise — AUTO is always reachable within at most two taps. Submitting an AUTO entry writes nothing to Airtable (no Care Log, no Exception row) — the cron's record stands.

The "Ate" Picker

When Feeding Observation is in the "done" state, a small picker labeled Ate appears with three options. Whichever you pick is saved in two places on the Daily Care Log:

  1. A dedicated Feeding Outcome field (singleSelect) — so the outcome is queryable and groupable in Airtable.
  2. A Feeding Outcome: <value> line in the Notes field, on its own line.
ButtonSaved value
Normal (default)Normal
PartialPartial
Didn't eatDidn't eat

Every Kennel Care log also gets a submission timestamp as the first line of Notes — Kennel Care doesn't have Room Check's time-window picker, so the timestamp captures the "when" of the care. Anything you type in the Care Notes box becomes a Notes: <your text> line below the Feeding Outcome line.

So a typical Feeding Observation log's Notes might read:

5/24/26 7:32p
Feeding Outcome: Normal
Notes: frisky today

A non-feeding log (e.g., Exercise) in the same submission would have only the timestamp + Notes line:

5/24/26 7:32p
Notes: frisky today

The Feeding Outcome field and line are only added to the Feeding Observation record, not to other care types you logged at the same time. The timestamp and Notes: line appear on every care log in that submission.

The Cleaning Section

Cleaning is always available — even on a kennel-only scan.

Tap to logWhat it creates
Full CleanCleaning record of type Full Clean
Spot CleanCleaning record of type Spot Clean
DisinfectionCleaning record of type Disinfection
LaundryCleaning record of type Laundry

Cleaning buttons work the same way — three states (done / exception / clear). One Cleaning record per type.

Notes

Two textareas are available — one for Care notes, one for Cleaning notes. Both are optional. Use them when something is off:

SectionWhen to add notes
Care Notes"Limped on left rear during walk", "Took treats from hand for the first time"
Cleaning Notes"Heavy soiling, replaced bedding", "Drain blocked, reported to facilities"

Submitting

Tap Submit. The button stays grey until you've picked at least one care type, cleaning type, or marked an exception with a reason.

The app sends everything at once. You'll see one of these on the next screen:

Logged successfully

or, if you're offline:

Saved offline — will sync when connected

The success screen also offers two buttons:


Workflow 2: Logging an Exception

An exception documents that a required care obligation could not be completed and explains why. Article 26-C §429.5 requires the reason to be documented — it doesn't excuse missing the care.

There are two ways to log an exception, depending on whether it's tied to an animal or to a kennel.

Exception for an Animal (inside Kennel Care)

This is the normal way. Inside the Kennel Care form, every Care and Cleaning button has three states (idle, done, exception):

For TDO dogs and qualifying long-stay cats, the Exercise button replaces "idle" with the AUTO state — system-pre-marked, no action required, tap to override:

When any button is in exception state, an Exception — why? section appears below the form.

ReasonUse when
Health / MedicalAnimal in surgery, isolated for illness, on medical hold
BehavioralBite risk, fear-aggressive on approach, requires sedation
Legal HoldCourt order, evidence animal, no-contact restriction
SafetyStaff safety risk, evacuation, environmental hazard
OtherAnything else — explain in notes

The Explain field is required for every exception. Be specific: "Skipped exercise — animal flagged red on bite history; awaiting behavior team handler" beats "couldn't walk her".

Cleaning Exception (empty kennel)

If you scanned a kennel barcode for an empty kennel, the exception choices are different — they cover cleaning instead of animal care:

Obligation TypeUse when
Full CleanCouldn't fully clean the kennel
DisinfectionCouldn't run the disinfection cycle
Animal RemovalCouldn't safely move animal out for cleaning

The reason categories are the same (Health/Medical, Behavioral, Legal Hold, Safety, Other) and the Explain field is still required.

What Happens After You Submit an Exception

The exception is saved with the reason you wrote. For exceptions tied to an animal, the system also checks for a pattern:

If this animal has had 5 or more exceptions of the same kind in the last 5 days, the Behavior Team gets a notification. The pattern usually means the animal needs a different care plan or a behavior consult.

You don't see this happen — it runs in the background. See Pattern Alerts to the Behavior Team below for an example.


Workflow 3: Sound Level

Article 26-C §430.1 requires regular sound level checks. Each submission creates one Sound Level record.

Steps

  1. Tap Sound Level on the home screen.
  2. Pick a shelter, then the room you're measuring — OR tap Open scanner to scan any kennel card in the room instead.
  3. Enter the reading from your decibel meter.
  4. Pick the conditions.
  5. Tap Submit Sound Level.
ConditionsUse when
CleaningDuring cleaning rounds — naturally loud period
RestingAnimals at rest — sound should be ambient/low

A reading above 85 dB shows a yellow warning under the input. The reading still saves — the warning is just a heads-up so you can flag the room for follow-up.

The activity strip above the form shows sound readings from this room over the past 7 days, so you can see if it's been trending up.


Workflow 4: Room Disinfection

For weekly disinfection of a whole room. One submission, one record — tied to the room, not a specific kennel.

Steps

  1. Tap Room Disinfection on the home screen.
  2. Pick a shelter, then the room you disinfected — OR tap Open scanner to scan any kennel card in the room instead.
  3. Add notes (optional).
  4. Tap Submit Disinfection Log.

The room and shelter come from the scan. Any disinfection logged for this room today appears at the top of the form so you can see if someone already did it.


Workflow 5: Move Animal

Moves an animal to a new kennel in ShelterBuddy directly. The change shows up everywhere else on the next sync (within 10 minutes).

Steps

  1. Tap Move Animal. The camera opens, looking only for QR codes (the animal kennel cards).
  2. Scan the animal's QR.
  3. The camera switches to look for kennel barcodes instead. Scan the barcode on the destination kennel.
  4. The Confirm Move screen shows the animal and the new kennel side by side.
  5. Enter the Move Password. The app remembers it for the rest of the session.
  6. Tap Confirm Move.

When the App Blocks or Warns You

SituationWhat happens
The animal is already in that kennelSubmit is blocked. "Already in kennel — no move needed."
The destination is at a different shelterSubmit is blocked. "A transfer must be set up in ShelterBuddy."
The animal isn't in ShelterBuddySubmit is blocked. "Animal not found in ShelterBuddy." Usually means a stale or damaged QR code — let your supervisor know.
The destination kennel already has an animalYellow warning shows who's there. The move is still allowed.
Wrong Move PasswordThe app clears the password and asks you to enter it again.

The Move Password is separate from the Ledger: App login. Ask your supervisor for it. It's there because moves update ShelterBuddy directly.


Workflow 6: Room Check (log a whole room at once)

For when you want to log the same care for every animal in a room — for example, morning feeding rounds.

Steps

  1. Tap Room Check on the home screen.

  2. Pick a shelter, then the room — OR tap Open scanner to scan any kennel card or animal QR in the room. The app resolves the room from whichever path you choose.

  3. The form lists every animal currently in that room, sorted by kennel number. A header bar stays pinned at the top while you scroll, showing the room, a running count, and Submit Room Check — so you can submit from anywhere in a long room without scrolling to the bottom.

    The count tells you how many animals still need you to look at them — for example 28 animals · 2 to review, or 28 animals · all match when nothing stands out. It is deliberately not a "26 of 28 done" progress bar: tapping a log type already marks every animal done, so a progress count would read as though you had 2 animals left to log when in fact you have 2 that differ from the rest. An animal is counted when it has an exception, has been cleared so nothing will be logged for it, or ate anything other than normally. Animals resting on AUTO are not counted — that is their expected state.

  4. Tap log types in the Log types for room bar at the top:

[🍽️ Feed] [🏃 Exercise] [🤝 Social] [🧩 Enrich] [👁️ Rounds] [🧹 Clean]

Tapping a type marks every animal in the room as "done" for that type. From there, change any animal that needs an exception by tapping its activity chip — the chips sit right on the closed row, so this stays one tap:

Exception: Exercise on TDO dogs and qualifying long-stay cats. Tapping Exercise in the bulk bar marks every animal as done — except TDO dogs and long-stay cats whose room doesn't meet §430.4.a's 18-sq-ft-per-cat threshold. Those animals get an AUTO Exercise badge (dashed purple) on their row instead. The 5 AM cron already wrote their exemption for the day; submitting Room Check with AUTO entries leaves them alone — no contradicting Care Log is written. If you actually exercised one of them, tap their Exercise button once to override to done.

Rows stay folded until something needs you

Each animal is a compact two-line card: name, animal number, badges and the day's colored dots on the first line; kennel, a plain-language status like "Fed · 3:00p-3:30p" or "Auto-exempt", and a small arrow on the second. The colored dots show what's already been logged today (Feed, Exercise, Social, Enrich, Rounds, Clean) so you don't accidentally double-log.

The "Ate" Picker (Feed only)

When an animal has Feed in the "done" state, the same Ate picker from Kennel Care (Normal / Partial / Didn't eat) sits inside the animal's card — open the card (tap its name line) to reach it. Whichever you pick saves to the Feeding Outcome field on the Daily Care Log AND appears as a Feeding Outcome: <value> line in Notes, exactly like Kennel Care. Room Check doesn't have a free-text Notes box per animal, so Notes only shows the activity-time line plus the Feeding Outcome line (no Notes: line).

Marking a dog TDO from Room Check

Dog and puppy cards have a Mark as TDO / TDO — Transfer Door Only toggle inside the opened card, the same one on the Dashboard's animal card. Tap it and the row updates right away: the Exercise button switches to (or out of) the AUTO Exercise state to match, and the flag chips and dots re-draw.

Cats and other species don't show this toggle.

Split a Session into Time Slots (Exercise and Social)

Walking a room takes a couple of hours, a few dogs at a time — so one time for the whole room isn't true. Under the log-type bar, a Split a session into time slots section appears when you select Exercise or Social, with a start picker, an end picker, and an Assign button. This one starts open, since it's the section you'll usually want while walking a room; its heading shows the times you've assigned. Pick the time the session started and the time it ended — single clock times, like 9:00a to 11:00a — tap Assign, and the app splits that span into 30-minute slots and spreads the animals evenly across them. Tap the heading to fold the section away if you need the screen space.

A walk counts as socialization too. If a dog is marked done for both Exercise and Social, its Social time is set to the same slot as its walk — one event, one time. This works whichever order you select the two activities.

This replaces a Social time you set by hand. If you gave one dog a specific Social time — say 3:00p for a shy dog on a behavior protocol — and then assign an Exercise session, that dog's Social time moves to its walk slot. Set it again afterward. (Assigning a Social session is the one thing an Exercise session won't override.)

To change a session, assign it again. Social times are copied from the walk once, when you tap Assign. If you then fix the Exercise time a different way — the Set-all row, or one dog's own picker — Social stays where it was, and the two will disagree about the same walk. Re-assigning the session is the reliable fix: it re-splits the room and re-copies the Social times together. (You'll notice the session summary text disappears when you use Set-all on that activity — that's the sign the session no longer describes the room.)

It only goes that direction. Logging Social never changes an Exercise time: social often happens without a walk (every TDO dog and long-stay cat gets social), so the app won't assume one. If you run an Exercise session and then a Social session at a different time, the Social session sets Social only and your Exercise times stay exactly as you left them.

If you mark an animal done after assigning the session, it doesn't get a slot — the groups were already worked out and the app won't quietly reshuffle times you've already read. It gets the room's normal default time instead, so give it its own time if it needs one. This is most likely on a TDO dog you walked anyway.

Assigning a session and using the Set-all row are two ways of answering the same question, so the newer one wins: assigning a session clears that activity's Set-all text, and using Set-all clears the session summary.

Set the Time Once for the Whole Room

Below the session section, a Set time for all animals heading appears once you've selected a timed activity. It starts open, with the room's current answer also shown next to the title — something like "Feed 3:00p-3:30p · Exercise not set". Tap the heading if you want to fold it away.

Inside is one row per activity you've selected — All Feed, All Exercise, All Social, All Enrich, All Rounds, All Clean. Pick a window on one of those rows and it lands on every animal in the room at once, so you don't walk down the list setting the same time over and over.

Activity Time Pickers

For every activity — Feed, Exercise, Social, Enrich, Rounds, and Clean — a 30-minute time-window picker appears inside each animal's card where that activity is in the "done" state (open the card to reach it; the folded card's status line shows the time it's set to):

Activities in the "exception" state don't get a picker (the care didn't happen).

Late-night submissions record yesterday's date. If you complete a Room Check between midnight and 4:00 AM, the date saved with each activity time is the previous day — since you're typically wrapping up the prior shift (the day's first time window starts at 4:00 AM). A 12:30 AM submission with a picker set to 8:00p-8:30p records as 8:00 PM the day before, not the day that just started. (This is based on when you finished the check, even if the submission was held offline and synced later.)

  1. Tap Submit Room Check in the pinned header at the top of the screen.

The result screen shows what saved and what didn't, one row per animal. If any failed, a Retry Failed button submits just those again.


Today's Activity Strip

After you scan an animal or kennel, the top of the form shows what's already been logged today (or, for sound, in the past 7 days). It's there to help you avoid logging the same thing twice.

Pill Colors

A row showing two feeds, one exercise, no social yet, one enrichment, one rounds, two cleanings:

DotPillWhat it means
FeedFeeding Observation logged
ExerciseExercise logged
SocialSocial Interaction logged
EnrichEnrichment logged
RoundsDaily Rounds logged
CleanCleaning of any kind logged
EX [type]An exception was logged (shown in purple)

If something's been logged more than once, you'll see a count like 2x Feed. Tap any pill to see the times, who logged it, and any notes.


Working Offline

The Ledger: App is built to keep working when the WiFi is patchy.

What still works without WiFi

What doesn't work offline

How you'll know you're offline

A red bar appears at the top of the screen:

Offline — logs will be saved and synced later

When you submit, the success screen will read Saved offline — will sync when connected. The held submissions go out the next time the app reaches the network (usually within seconds of WiFi coming back).

Held submissions record under the time you logged the care, not the time they finally synced — so care logged at 8 PM that syncs the next morning still counts for the right day. (This has always been true for Room Checks; it now applies to every submission type.)

Held submissions keep the date and time you finished the check. If a Room Check is held overnight — say you completed it at 8pm but the app only reconnects the next morning — it still records under the evening you actually did the work, not the morning it finally synced.

If a submission is held offline, don't keep tapping Submit. Each tap creates another held copy, which will turn into duplicate records once you're back online.

The "not saved yet" banner

While anything on the device is still waiting for the server, a banner stays visible on every screen:

2 submissions not saved yet — tap to retry

Tapping it retries everything that's waiting. It disappears on its own once the server has confirmed every submission.

If a submission has been failing for days (or the server keeps rejecting it), the app stops auto-retrying it and the banner changes to:

1 needs attention

Both can show at once — each part is its own fact:

1 needs attention · 2 submissions not saved yet — tap to retry

That submission is not lost — it stays on the device. What to do:

  1. Open Today's Registered Logs for that room and check whether the work is already recorded (it often is — a retry may have landed even when the app never saw the confirmation).
  2. If it's recorded: on that submission's result screen you can tap Dismiss to delete the unsaved copy (it asks you to tap twice — dismissing is permanent). If the result screen is gone, the entry can be left; the office already got an automatic alert about it.
  3. If it's not recorded: re-enter the room check, or use Retry Now on that submission's own result screen if it's still open.

Dismiss only after checking Today's Registered Logs. Dismiss deletes the unsaved copy from the device — if the work wasn't recorded on the server, it's gone for good. The app never dismisses anything on its own.

The office gets an automatic alert whenever a submission reaches this state, so if you're unsure, just carry on — someone will follow up.

"N items could not be submitted — rescan this room." Rarely, the result screen shows this yellow line: it means some scanned entries no longer matched an animal in the room when you hit Submit (for example, the animal was moved while the room check was open). Those items were never sent — rescan the room and log them again.


Edge Cases

The app says it can't find the animal. Most likely the animal was just intaked and our records haven't caught up yet (this happens every 10 minutes). Try again in 10 minutes. If it still can't be found, ask your supervisor.

The app says the animal isn't in care. It will show the animal's current status (for example, "Adopted - Awaiting Pickup"). You can't log care on an animal that's been adopted, transferred, or outcomed. Check ShelterBuddy if you think this is wrong.

The app says the animal is in foster. Care for foster animals is logged by the foster home, not here. The app will block the scan.

The kennel barcode isn't recognized. The app refreshes its list of kennels once a day. If the kennel was added today, it might not be in the list yet. Try again in a few hours, or just scan an animal in that kennel instead.

The camera won't open. The scanner shows a message about needing the camera. Tap Enter ID manually at the bottom and type the Animal ID. Also check if another app (like Zoom) has the camera open.

The scan beeps but nothing happens. The scanner only accepts ACC kennel cards. If you're scanning something else, the app just keeps looking.

Submit fails when you're online. An error message appears explaining what's missing. Most often you forgot to pick a log type, or you marked an exception but didn't enter a reason. Fix it and tap Submit again.

You typed your Staff ID wrong. Tap the person icon in the top right of the home screen and enter the correct ID. The app saves it for next time.

You submitted to the wrong animal. The Ledger: App doesn't have an undo button. Ask your supervisor to fix the record.


Pattern Alerts to the Behavior Team

Most of what you log is silent — it just feeds the dashboard and the compliance reports. One pattern triggers an automatic email: an exception that pushes an animal over the repeat-exception threshold, signaling the animal may need intervention.

Exception Pattern Alert

When it sends: Right after you submit an exception for an animal, if that animal has had 5 or more exceptions of the same kind in the last 5 days. Cleaning exceptions don't trigger this.

Who gets it: The Behavior Team, with the local Shelter Manager cc'd for awareness.

What it looks like:

(Sample email — animal name and counts are illustrative.)

The email is intentionally short. It's a flag, not a full report — the recipient is expected to look up the animal's history themselves.

Other Daily Emails

The system also sends scheduled daily summaries (Long-Term Stay, 6-Month Exam Overdue, Foster Agreement Expiring, etc.). These aren't triggered by anything you do — they go out on a schedule. If you also get those, see the Ledger: Foster guide for examples.


Quick Reference

I need to...Tap
Log feeding for one animalKennel Care → scan QR → Feeding Observation → outcome → Submit
Log that I walked an animalKennel Care → scan QR → Exercise → duration in notes (optional) → Submit
Mark that I couldn't feed an animalKennel Care → scan QR → tap Feeding Observation twice (EX Feeding Observation) → reason → notes → Submit
Log a full kennel cleanKennel Care → scan kennel barcode → Full CleanSubmit
Log a sound readingSound Level → scan any card in the room → enter dB → activity → Submit
Log weekly room disinfectionRoom Disinfection → scan any card in the room → Submit Disinfection Log
Move an animal to a new kennelMove Animal → scan animal QR → scan kennel barcode → enter Move Password → Confirm Move
Log morning rounds for a whole roomRoom Check → scan any card → tap log types in the bar → adjust per animal → Submit Room Check
See what's already been logged todayLook at the colored pills under the animal/kennel name
Switch staff IDsPerson icon (top right of home screen)
Use it without a cameraScanner screen → Enter ID manually
Recover from offlineWait for the WiFi to come back. The app sends your held logs automatically.

What Article 26-C Actually Requires

This guide covers how to log. The why comes from the regulation:

SectionWhat it saysWhat you log
§429.4Daily feeding, exercise, social interaction, enrichment, daily roundsCare logs
§429.5Write down why required care couldn't be providedAcknowledged Exceptions
§429.7Cleaning and disinfection recordsCleaning logs
§430.1Sound level limits and monitoringSound Level logs

When an inspector visits, they pull these records. Every log you make is the evidence. Log it before you forget. Log the exception when you can't.