¶Logging In
The Ledger: App lives at:
When you open it, your browser asks for a username and password.
| Field | What to enter |
|---|---|
| Username | Anything — acc, your name, leave it blank. The system ignores the username. |
| Password | The 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.
| Workflow | What it's for | Scan |
|---|---|---|
| Kennel Care | Daily care + cleaning for one animal or kennel | Animal QR code or kennel barcode |
| Sound Level | Decibel reading for a location (Article 26-C §430.1) | Any kennel card in the room |
| Room Disinfection | Logging that you disinfected a whole room | Any kennel card in the room |
| Move Animal | Move an animal to a new kennel in ShelterBuddy | Animal QR, then kennel barcode |
| Room Check | Bulk-log care for every animal in a room at once | Any 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
- Every log you submit is stamped with your Staff ID and the time. You don't need to enter either — the app handles it.
- One log type makes one record. If you tap Feed and Exercise, the app creates two separate records. Same for Full Clean and Disinfection.
- 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.
- 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:
- Scan an animal QR → the form shows Care and Cleaning sections.
- Scan a kennel barcode → the form shows just Cleaning (for empty kennels).
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
- Tap Kennel Care on the home screen.
- The camera opens. Point it at the QR code on the animal's kennel card.
- The app loads the animal — name, ID, kennel, shelter — at the top of the form.
- Tap log types under Care to record what you did.
- Tap log types under Cleaning to record what you cleaned.
- 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 log | What it creates |
|---|---|
| Feeding Observation | Daily Care Log of type Feeding Observation |
| Social Interaction | Daily Care Log of type Social Interaction |
| Exercise | Daily Care Log of type Exercise |
| Enrichment | Daily Care Log of type Enrichment |
| Daily Rounds | Daily 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:
- A dedicated Feeding Outcome field (singleSelect) — so the outcome is queryable and groupable in Airtable.
- A
Feeding Outcome: <value>line in the Notes field, on its own line.
| Button | Saved value |
|---|---|
| Normal (default) | Normal |
| Partial | Partial |
| Didn't eat | Didn'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 log | What it creates |
|---|---|
| Full Clean | Cleaning record of type Full Clean |
| Spot Clean | Cleaning record of type Spot Clean |
| Disinfection | Cleaning record of type Disinfection |
| Laundry | Cleaning 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:
| Section | When 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:
- Scan Another — go back to the camera for the next animal
- Back to Home — return to the workflow picker
¶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.
| Reason | Use when |
|---|---|
| Health / Medical | Animal in surgery, isolated for illness, on medical hold |
| Behavioral | Bite risk, fear-aggressive on approach, requires sedation |
| Legal Hold | Court order, evidence animal, no-contact restriction |
| Safety | Staff safety risk, evacuation, environmental hazard |
| Other | Anything 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 Type | Use when |
|---|---|
| Full Clean | Couldn't fully clean the kennel |
| Disinfection | Couldn't run the disinfection cycle |
| Animal Removal | Couldn'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
- Tap Sound Level on the home screen.
- Pick a shelter, then the room you're measuring — OR tap Open scanner to scan any kennel card in the room instead.
- Enter the reading from your decibel meter.
- Pick the conditions.
- Tap Submit Sound Level.
| Conditions | Use when |
|---|---|
| Cleaning | During cleaning rounds — naturally loud period |
| Resting | Animals 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
- Tap Room Disinfection on the home screen.
- Pick a shelter, then the room you disinfected — OR tap Open scanner to scan any kennel card in the room instead.
- Add notes (optional).
- 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
- Tap Move Animal. The camera opens, looking only for QR codes (the animal kennel cards).
- Scan the animal's QR.
- The camera switches to look for kennel barcodes instead. Scan the barcode on the destination kennel.
- The Confirm Move screen shows the animal and the new kennel side by side.
- Enter the Move Password. The app remembers it for the rest of the session.
- Tap Confirm Move.
¶When the App Blocks or Warns You
| Situation | What happens |
|---|---|
| The animal is already in that kennel | Submit is blocked. "Already in kennel — no move needed." |
| The destination is at a different shelter | Submit is blocked. "A transfer must be set up in ShelterBuddy." |
| The animal isn't in ShelterBuddy | Submit 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 animal | Yellow warning shows who's there. The move is still allowed. |
| Wrong Move Password | The 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
- Tap Room Check on the home screen.
- 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.
- The form lists every animal currently in that room, sorted by kennel number.
- 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:
- Tap once: done (the default after the bulk tap)
- Tap twice: exception — the app asks you for a reason for that one animal
- Tap three times: clear that animal's mark
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.
Each animal row shows colored dots for 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) appears below that animal's activity buttons. 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).
¶Activity Time Pickers
For the four activities where when matters — Feed, Exercise, Social, and Enrich — a 30-minute time-window picker appears for each animal where that activity is in the "done" state:
- The default is the current 30-minute window. If it's 7:45 PM, the picker pre-selects 7:30p-8:00p.
- Tap to choose a different window if the care happened earlier in your shift.
- Whichever window you pick records to the Daily Care Log so the timestamp reflects when the care actually happened, not the exact moment you tap Submit.
Daily Rounds and Cleaning don't get a time picker — those approximate to submit time. Activities in the "exception" state also don't get a picker (the care didn't happen).
Late-night submissions record yesterday's date. If you submit 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. 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.
- Tap Submit Room Check.
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:
| Dot | Pill | What it means |
|---|---|---|
| Feed | Feeding Observation logged | |
| Exercise | Exercise logged | |
| Social | Social Interaction logged | |
| Enrich | Enrichment logged | |
| Rounds | Daily Rounds logged | |
| Clean | Cleaning 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
- Logging care, cleaning, exceptions, and sound readings. Your submissions are held on the device and sent automatically once you're back online.
- Re-opening the app. The app keeps a copy of itself on your device so it launches even with no signal.
¶What doesn't work offline
- Scanning a new animal or kennel. Looking them up needs a live connection.
¶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).
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.
¶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 animal | Kennel Care → scan QR → Feeding Observation → outcome → Submit |
| Log that I walked an animal | Kennel Care → scan QR → Exercise → duration in notes (optional) → Submit |
| Mark that I couldn't feed an animal | Kennel Care → scan QR → tap Feeding Observation twice (EX Feeding Observation) → reason → notes → Submit |
| Log a full kennel clean | Kennel Care → scan kennel barcode → Full Clean → Submit |
| Log a sound reading | Sound Level → scan any card in the room → enter dB → activity → Submit |
| Log weekly room disinfection | Room Disinfection → scan any card in the room → Submit Disinfection Log |
| Move an animal to a new kennel | Move Animal → scan animal QR → scan kennel barcode → enter Move Password → Confirm Move |
| Log morning rounds for a whole room | Room Check → scan any card → tap log types in the bar → adjust per animal → Submit Room Check |
| See what's already been logged today | Look at the colored pills under the animal/kennel name |
| Switch staff IDs | Person icon (top right of home screen) |
| Use it without a camera | Scanner screen → Enter ID manually |
| Recover from offline | Wait 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:
| Section | What it says | What you log |
|---|---|---|
| §429.4 | Daily feeding, exercise, social interaction, enrichment, daily rounds | Care logs |
| §429.5 | Write down why required care couldn't be provided | Acknowledged Exceptions |
| §429.7 | Cleaning and disinfection records | Cleaning logs |
| §430.1 | Sound level limits and monitoring | Sound 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.