¶Logging In
The tracker lives at:
https://compliance.motusleap.com/foster/
Your browser will ask for a username and password the first time you visit.
| Field | What to enter |
|---|---|
| Username | anything — acc, your name, leave it blank. The username is ignored. |
| Password | the shared Ledger: Foster password from your supervisor |
Safari, Chrome, and Firefox will all offer to save the password — accept that and you won't be asked again on this device. If you mistype, you'll see "Invalid password"; just close the tab and try again.
Heads up: If the page sits open for a long time and badges stop updating, refresh and re-enter the password.
¶Your Daily Workflow
¶Starting Your Shift
- Open
https://compliance.motusleap.com/foster/and enter your password - Leave the mode set to Issues Only (the default) — this hides anyone in compliance
- Glance at the sidebar — the four count badges (Exam Overdue, Weigh-In Overdue, Agreement Issues, Training Missing) tell you the size of today's queue
- Sort is set to Most Urgent by default. Work top-down.
¶Resolving an Agreement Issue
When a provider has an EXPIRED, EXPIRING, or NO AGREEMENT badge:
- Click the red/amber/coral badge — the Upload Agreement modal opens
- Choose the signed PDF or photo (PDF, JPEG, PNG, HEIC, or WebP)
- Set the Agreement Date — defaults to today in Eastern time
- Click Upload Agreement
- The system uploads to Airtable and auto-sets the expiration to exactly 2 years from the agreement date — you don't compute that yourself
- The provider's badge flips to OK in-place; sidebar counts decrement
¶Closing a Training Gap
When a provider has a NO TRAINING badge:
- Click the badge — it opens the provider's foster details page in ShelterBuddy in a new tab
- Confirm or enter the training completion date in SB
- Wait for the next sync (every 10 minutes) — the badge will clear on its own. The clinical foster refresh runs every 60 minutes (10am–6pm ET) and may also need to fire before exam/weigh data updates.
¶Resolving an Animal Exam or Weigh-In
The tracker doesn't write back to ShelterBuddy for clinical events. You handle those in SB:
- Click the animal ID (e.g.
#248502) — opens the animal in ShelterBuddy - Make sure the most recent Progress Exam / DVM Intake / Tech Exam consultation is logged (telemedicine consults do not count toward the 6-month requirement)
- For weigh-ins, log a Weight record in SB
- Wait for the next sync. The
EXAM OVERDUE/WEIGH OVERDUEbadge clears automatically.
¶Triaging Edge Cases
The Data Quality section appears below the main list when there are unresolved data issues. Two kinds:
| Card | What it means | Where to fix |
|---|---|---|
| Unlinked Animals | In foster but no provider link in Airtable | Check SB foster placement; the next sync usually links them |
| Status Conflicts | Status is Awaiting Foster but location says "In Foster" or "Trial Adoption" | Update the SB status or location to match reality |
¶How the System Decides What's Overdue
Every 10 minutes, the system checks ShelterBuddy and updates the tracker:
- Pulls every in-care animal and every active foster provider
- Calculates days since last exam and days since last weigh-in for each animal
- Calculates days until each agreement expires
- Marks anything past the limit
You don't trigger any of this — you just act on what it shows you.
¶What the limits are
| Flag | Limit | Source |
|---|---|---|
| Exam Overdue | More than 180 days since the last qualifying exam (or since intake, if there's no exam yet) | §429.12 |
| Weigh-In Overdue | More than 180 days since the last weigh-in (or since intake, if there's no weigh-in yet) | §429.12 |
| Agreement Expired | Agreement has passed its expiration date | §432 |
| Agreement Expiring Soon | Agreement is within 60 days of expiring (set automatically) | §432 |
| No Agreement | Provider has no signed agreement on file | §432 |
| Training Missing | Training completion date is blank | §432 |
What the badges look like in real life:
¶Species that don't get overdue flags
Six species are exempt from the exam and weigh-in rules. They still appear in the list, but they won't get EXAM OVERDUE or WEIGH OVERDUE badges:
Rabbit · Guinea Pig · Bird · Ferret · Reptile · Rodent
Everything else — Cat, Dog, Kitten, Puppy, and any animal whose species is blank or unknown — does get those badges. We treat unknown species as needing the same care as cats and dogs, just to be safe.
¶The Layout
The header is sticky and stays put while you scroll. Only the content area scrolls — the sidebar is fixed-height. Brand: ACC teal #4DBAB0, Outfit + JetBrains Mono fonts, light theme.
¶The Sidebar Summary Cards
Six cards total. The Data Quality section auto-hides when both its cards are zero.
¶Animal Issues — §429.12
Hover the §429.12 label for the law text:
Each foster animal shall receive a veterinary examination at least every six months and shall be weighed at least every six months.
| Card | What it counts |
|---|---|
| Exam Overdue | In-care + in-foster animals more than 180 days past last exam (this stay only — prior stays don't count). Sums across all providers and unlinked animals. |
| Weigh-In Overdue | Same logic, but for last weigh-in. |
¶Provider Issues — §432
Hover the §432 label for the law text:
No animal shall be placed in foster care unless a written agreement has been executed between the shelter and the foster care provider. Such agreement shall be renewed at least every two years. Each foster care provider shall complete a training program approved by the department.
| Card | What it counts | Notes |
|---|---|---|
| Agreement Issues | Active providers with status Expired, Expiring Soon, or No Agreement | Card turns amber if there are only Expiring Soon (no urgent action). Otherwise it shows the regular issue color. |
| Training Missing | Active providers with no Training Completed Date |
¶Data Quality
| Card | What it counts |
|---|---|
| Unlinked Animals | In-foster animals with no Foster Provider link in Airtable. Grouped by status (e.g. Adopted - Awaiting Pickup, Trial Adoption, Bite Quarantine). |
| Status Conflicts | Animals whose status is Awaiting Foster but whose location says "In Foster" or "Trial Adoption" — likely either the status or the location is wrong in SB. |
Tip: Click any sidebar card to filter the content area to just that issue type. Click again to clear. The card highlights with a teal left accent and a teal background tint when active.
¶Tabs and Modes
The header has two controls:
| Control | Options | What it does |
|---|---|---|
| Shelter filter (top right dropdown) | All Shelters (default), individual ACC sites | Limits both the provider list and edge cases to animals at that shelter |
| Mode toggle | Issues Only (default) · All | Issues Only hides providers who have nothing wrong AND no animals with issues. All shows every active provider with at least one current animal. |
Inside the content area:
| Control | Options |
|---|---|
| Sort | Most Urgent (default) · Most Animals · Name A–Z |
| Expand All / Collapse All | Toggles every provider group at once |
Note: The current build is provider-centric — there are no separate Animals / Providers / Unlinked tabs. Everything is one scrollable list of providers, with each provider's animals nested underneath, and a Data Quality section at the bottom for unlinked animals + status conflicts.
¶Reading Provider and Animal Rows
Each provider is a collapsible <details> group. Click the row to toggle. If any of the provider's animals have an issue, the group auto-opens when the page loads.
¶Provider header
| Element | Behavior |
|---|---|
| Name | Plain text |
#4521 | ShelterBuddy Person ID — clicking opens …/personInfo/persondetails.aspx?personid=4521 in a new tab |
| Phone | tel: link, formatted (212) 555-1234 for 10-digit numbers |
Plain mailto: — no copy/email modal, just opens your default mail client | |
2 animals | Count of currently fostered animals |
• (filled dot) | Appears when any of this provider's animals has a compliance issue |
¶Animal row (nested)
| Element | Behavior |
|---|---|
| Name | Plain text |
#248502 | ShelterBuddy Animal ID — clicking opens …/animal/search.asp?task=view&animalid=248502 |
| Species · Shelter · Days | Comma-separated meta. Days are formatted 342 days (or 1,293 days with a comma for 1000+) |
¶Badges
Badges show on the right side of each row. Multiple badges stack horizontally and wrap on mobile.
¶Provider badges
Each provider has up to two badges visible — one on the agreement axis (SIGNED / EXPIRED / EXPIRING / NO AGREEMENT) and one on the training axis (TRAINED / NO TRAINING). The green ones signal a positive state; the others flag an issue to resolve.
| Badge | Meaning | Click behavior |
|---|---|---|
| Agreement on file, signed-date shown (M/D/YY) | Opens Upload Agreement modal (to upload a newer version) | |
| Agreement expired N days ago | Opens Upload Agreement modal | |
| Agreement expires in N days | Opens Upload Agreement modal | |
| No agreement on file | Opens Upload Agreement modal | |
| Training completed, completion date shown | None | |
| Training Completed Date is blank | Opens SB foster details page in new tab | |
| No issues | None |
Clicking NO TRAINING opens that provider's foster details page in ShelterBuddy, so you can enter the training completion date there.
¶Animal badges
| Badge | Meaning |
|---|---|
N = days past 180-day threshold (e.g. 342 days since exam → 162d) | |
| Same math for weigh-ins | |
| No issues |
¶Edge-case badges
| Badge | Meaning |
|---|---|
| In foster, no provider link in Airtable | |
| + | Status/location mismatch |
¶Uploading a Signed Agreement
Many agreements come through automatically. Signed agreements stored in ShelterBuddy are synced daily — the system reads each PDF, extracts the signed date (via embedded text, then OCR if needed, then Claude vision as a last resort), and updates the provider's badge to SIGNED M/D/YY without anyone uploading anything here. The manual upload below is for the cases where SB doesn't have it.
Click any agreement badge (EXPIRED, EXPIRING, or NO AGREEMENT) to open the modal.
¶File limits
| Constraint | Value |
|---|---|
| Max file size | 20 MB |
| Accepted file types | PDF, JPEG, PNG, HEIC, HEIF, WebP (.pdf, .jpg, .jpeg, .png, .heic, .webp) |
iPhone photos: HEIC and HEIF both work — no need to convert before uploading.
¶What the date picker does
The Agreement Date defaults to today (in Eastern time, so you won't see yesterday's date by accident). Whatever you set:
- Saved to the provider's Agreement Date field
- Agreement Expiration is computed as exactly 2 years later to the day (e.g.
2026-04-25→2028-04-25) - The provider's badges update in-place without reloading the page
¶If the upload fails
| Error | Cause | Fix |
|---|---|---|
File too large (max 20 MB) | The file is too big | Compress the PDF or photo |
Please select an agreement date. | Date field is empty | Pick a date |
Network error. Please try again. | The browser couldn't reach the server | Check your WiFi, then retry |
Upload failed. Please try again. | Something went wrong on our end | Retry once. If it keeps failing, let John know — an alert was already sent. |
¶Legislation Popovers
Hover (or tap on mobile) the §429.12 and §432 labels in the sidebar. A small popup shows the law text word for word. Tap anywhere outside the label to dismiss it on mobile.
The popup sits above everything else, so it won't get cut off.
¶Data Quality Section
Appears below the provider list whenever there's at least one unlinked animal or status conflict. Each subgroup is a collapsible <details> element, expanded by default.
¶Status / Location Mismatch
Animal's status is "Awaiting Foster" but its location string contains "In Foster" or "Trial Adoption."
These show two coral badges side by side: AWAITING FOSTER and FOSTER LOCATION. Either the staff member who set status forgot to update location, or the animal is actually in a home and someone needs to update status. Open the animal in SB and reconcile.
¶In-Foster, No Provider Link
Animals are grouped by their current status. Common statuses you'll see:
| Status | Why it appears |
|---|---|
Adopted - Awaiting Pickup | Animal is at a foster's home pending pickup; no formal foster placement |
Trial Adoption | Adopter has the animal on trial — counted as in-foster but not linked to a provider |
Bite Quarantine | Quarantined at a foster home for bite hold |
Awaiting Rescue | Foster is holding while a rescue group commits |
Foster - In Home | Should be linked but isn't — investigate SB record |
Each row shows a single NO PROVIDER badge. Click the animal ID to open SB and check the foster placement record.
¶Mobile Polish
The tracker works on phones, but it's optimized for desktop. On screens below ~720 px:
- The sidebar grid collapses to a 2-column compact layout
- Badges wrap onto a second line
- Law popovers dismiss on tap-outside (not just on
:focus) - The agreement upload modal scales to fit the viewport
The provider list itself doesn't reflow — it just becomes scrollable horizontally for the long badge rows. If you're regularly working on mobile, talk to your supervisor — a Mac is the supported device.
¶Sync Status
The bottom of the sidebar shows two timestamps:
Last sync: 4m ago · next ~6m
Clinical refresh: 22m ago · next ~38m
| Sync | How often | What it updates |
|---|---|---|
| Last sync | Every 10 minutes | Animals, foster providers, intake/foster start dates, provider links |
| Clinical refresh | Every 60 minutes, 10 am – 6 pm ET only | Last Exam Date and Last Weigh Date — the values that drive the §429.12 badges |
If the clinical refresh shows "over 1h ago" during business hours, let John know.
¶Email Digests
The Foster Team is subscribed to two daily compliance emails. Subscriptions live in the Airtable Notification Recipients table.
To add or remove someone from any digest, edit the Notification Recipients table in Airtable — no code change. Filter by Digest Name (
Foster 6-Month Exam,Agreement Expiry, orWeekly Summary) and add/remove the email there.
¶Sample: Foster 6-Month Exam digest
The Animal ID column links to ShelterBuddy — click straight from the email into the animal's record. The "Last Exam" column shows — never — for animals that have no exam on file at all (rare, but possible for very new placements).
This summary goes out daily around 8:10 am ET. If no animals are due, no email is sent that day — silence means nothing's overdue.
¶Sample: Foster Agreement Expiry digest
This summary goes out daily around 8:15 am ET. Same rule — no email means no providers in the "Expiring Soon" status today. The status flips from "Active" to "Expiring Soon" automatically as the renewal date approaches; you don't change it manually.
¶Weekly Compliance Summary
You may also receive the Weekly Compliance Summary every Monday morning around 9 am ET. It bundles four lists into one email — Long-Term Stay, 30-Day Exam Overdue, Foster 6-Month Exam Due, and Protocol Review Overdue — and always sends even on zero-issue weeks (leadership wants to see the all-clear). Primary audience is leadership, but Foster Team coordinators are commonly cc'd for awareness.
¶Edge Cases
Provider is missing from the list entirely — They're inactive in Airtable. Foster Status must be Active to appear. Check SB; the next sync brings them back.
An animal you know is in foster has no badge — Check their species. Rabbit, Guinea Pig, Bird, Ferret, Reptile, and Rodent are exempt from §429.12 overdue flags by design.
Agreement upload says "success" but badge didn't clear — The page updates the provider you just uploaded for. If you uploaded for a different provider and the badge looks stale, refresh the page.
Counts in sidebar don't match what I see — Sidebar counts include unlinked animals' issues too. The provider list only shows providers, so an unlinked animal with EXAM OVERDUE will boost the count but live in the Data Quality section, not under any provider.
OK badge on a provider with overdue animals — The provider-level OK only reflects provider-level checks (agreement + training). The animal-level rows below have their own badges. Look at the rows, not just the header.
Phone number shown as raw digits — The formatter only handles 10-digit US and 11-digit 1-prefixed numbers. International or non-numeric phones display as-is.
Modal won't close on Esc — Click the × or Cancel, or click the dark overlay outside the modal. Esc only works while the modal has keyboard focus.
The sidebar shows Sync: just now but a recent change in SB isn't reflected — Two reasons:
- The animal sync runs every 10 min — wait for the next pass
- Exam dates and weight come from the clinical refresh, which only runs hourly during business hours. If it's outside 10am–6pm ET, the field won't update until tomorrow morning.
¶Quick Reference
| I need to... | Click... |
|---|---|
| See providers with any compliance issue | Sidebar → any of the four issue cards (or just leave Issues Only on) |
| See everyone including compliant providers | Header → toggle to All |
| Filter to just one issue type | Click that summary card — click again to clear |
| Filter by shelter | Header dropdown → pick a shelter |
| Sort by most urgent | Default — or Sort dropdown → Most Urgent |
| Sort by who has the most animals | Sort dropdown → Most Animals |
| Open everyone's animal list at once | Expand All button (toggles to Collapse All) |
| Upload a signed agreement | Click EXPIRED / EXPIRING / NO AGREEMENT badge |
| Open a provider in ShelterBuddy | Click the #4521 next to their name |
| Email a provider | Click their email address |
| Call a provider | Click their phone number |
| Mark training as complete | Click NO TRAINING badge → enter date in SB |
| Open an animal in ShelterBuddy | Click the #248502 next to their name |
| See animals in foster with no provider link | Scroll to Data Quality section (or click Unlinked Animals card) |
| See status/location mismatches | Status Conflicts card |
| Add yourself to a digest | Edit the Notification Recipients table in Airtable |
| Check if data is fresh | Bottom of sidebar — sync timestamps |