4leggedIT
4leggedIT
Portal Planning Docs

Workflows

Human-readable (non-technical)
Use this page to understand the story, decisions, and why the work matters.
Technical building data
Use this page to implement: entities, rules, workflows, and required behaviors.
Last updated: Feb 8, 2026

Summary

  • Sighting → tasks → custody → placement → outcome.
  • Protect safety: stray locations are Sensitive by default; use aliases for field coordination.
  • Make next steps explicit via tasks, appointments, and timeline events.

1) Stray monitoring → custody → outcome

flowchart TD A["Report stray / sighting"] --> B["Create Animal (Monitoring)"] B --> C["Add Sighting event (GPS + photo + notes)"] C --> D["Create Tasks (feed, monitor, trap, vet consult)"] D --> E["Optional: Add to Feeding Route (stops + schedule)"] C --> F["Mark Sensitive Case (default for monitoring)"] F --> G["Redact exact location for most roles"] D --> H{"Custody obtained?"} H -- "No" --> C H -- "Yes" --> I["Start Custody Episode (In Custody)"] I --> J["Intake checklist + baseline medical"] J --> K{"Placement?"} K -- "Foster" --> L["Start Foster Placement (dates + agreement)"] K -- "Boarding" --> M["Record Boarding / holding details"] L --> N["Adoption-ready evaluation"] M --> N N --> O{"Outcome"} O -- "Adopted" --> P["Adoption contract + close case"] O -- "Transfer" --> Q["Transfer record + close case"] O -- "RTF" --> R["Return-to-field event + monitoring optional"]

Rules

  • Every sighting is an Event with a time and a Location (GPS required; address optional).
  • Location supports an optional alias name (volunteer-known place name) for quick reference and search.
  • Monitoring animals are Sensitive by default unless explicitly downgraded.
  • All stray animals’ exact locations are Sensitive (staff-only by default), even if custody is later obtained.
  • Sensitive hides exact GPS, trap plans, and internal notes from fosters/adopters/most volunteers.
  • Custody transition is explicit: create a Custody Episode with start date and source.

2) Feeding route runs (mobile-first)

flowchart LR A["Route (scheduled)"] --> B["Assigned feeder"] B --> C["Open route on mobile"] C --> D["Navigate to stop (GPS)"] D --> E["Check-in: time + photo + notes"] E --> F["Optional: create Sighting event"] F --> G["Optional: create Task (needs vet / behavior concern)"]

Rules

  • Check-ins can be recorded even if the feeder cannot see the full sensitive context.
  • The system keeps a durable history of check-ins per stop for transparency and continuity.
  • Route stops should display a human-friendly alias name (e.g., “Stop A”) in addition to coordinates.

3) Foster placement lifecycle + foster notes

flowchart TD A["Animal in custody"] --> B["Match to foster"] B --> C["Start Placement (start date + contact + agreement)"] C --> D["Foster portal access granted (redacted)"] D --> E["Foster adds notes (behavior/health) + uploads"] E --> F{"Needs staff action?"} F -- "No" --> E F -- "Yes" --> G["Create triage Task (medical/behavior/follow-up)"] C --> H["End Placement (end date + reason)"] H --> I["Next placement or outcome"]

Rules

  • Foster notes are timestamped events; staff can mark notes as actioned.
  • Sensitive internal notes remain staff-only; fosters see a curated record.

3a) Foster support services (supplies, help, education)

Fosters often need operational support to keep an animal stable and healthy. Track these as requests that become tasks, with clear owners and due dates.

flowchart TD A["Foster submits support request"] --> B["Categorize request"] B --> C["Supplies delivery (food, crates, pads, meds)"] B --> D["Home help (cleaning, setup, transport assist)"] B --> E["Education (care guidance, behavior plan, FAQs)"] C --> F["Create tasks + assign volunteers"] D --> F E --> F F --> G["Complete + confirm with foster"] G --> H["Record outcome + notes + attachments"]

Rules

  • Requests link to a Placement (if active) or at least to the Foster Contact and Animal.
  • Keep request details share-safe: no sensitive locations; delivery logistics handled privately.
  • Standardize categories so reporting is possible (what help is needed most, and where volunteers time goes).

4) Adoption + foster applications → approvals → e-sign

flowchart TD A["Applicant submits application"] --> B["Auto-ack email"] B --> C["Stage 1: Eligibility review"] C --> D{"Approved?"} D -- "No" --> E["Deny + reason code + close"] D -- "Yes" --> F["Stage 2: Reference / home check tasks"] F --> G["Stage 3: Meet & greet / trial"] G --> H{"Final approval?"} H -- "No" --> E H -- "Yes" --> I["Generate contract packet"] I --> J["E-sign (provider)"] J --> K["Finalize placement/adoption + record outcome"]

Rules

  • Workflow stages are configurable; each stage can require tasks before advancing.
  • Every decision stores: who, when, reason code, and optional notes (auditable).
  • Post-placement tasks are allowed (especially for adopted dogs/cats who still need follow-up care like spay/neuter).

Post-adoption follow-ups (recommended)

flowchart TD A["Adoption finalized"] --> B["Create PostAdoptionFollowUp plan"] B --> C["Create tasks with due dates"] C --> D["Schedule clinic / vet visit (if needed)"] C --> E["Microchip registry update/transfer (if chipped)"] C --> F["Spay/neuter task (if unfixed)"] C --> G["Booster vaccines / meds follow-up (if needed)"] D --> H["Mark tasks complete + store documents"] E --> H F --> H G --> H

5) Adoption listing registry publish (Phase 2)

flowchart TD A["Animal status = Available"] --> B{"Listing ready?"} B -- "No" --> C["Show missing requirements (photos, fields, medical ok)"] B -- "Yes" --> D["Queue publish job"] D --> E["Select registry provider (Petfinder / Adopt-a-Pet / other)"] E --> F["Push listing (one-way)"] F --> G{"Success?"} G -- "No" --> H["Log error + retry/backoff + alert"] G -- "Yes" --> I["Store sync snapshot + timestamp"]

Note: Mermaid is included as plain text blocks to keep copy/paste clean; render it later if desired.

6) Volunteer management (coordination)

flowchart TD A["New volunteer application / intake"] --> B["Volunteer profile (Contact + VolunteerProfile)"] B --> C["Waiver + basic training checklist"] C --> D{"Approved to volunteer?"} D -- "No" --> E["Archive / deny with reason"] D -- "Yes" --> F["Assign skills (feeder, transporter, events, admin)"] F --> G["Assign tasks/routes/shifts"] G --> H["Track hours / activity log"]

Rules

  • Volunteer access is role-based and must respect Sensitive case redactions.
  • Volunteer-facing UIs prioritize: assigned tasks, upcoming routes, and simple check-ins.

7) Spay/neuter appointment coordination (clinic + transport)

flowchart TD A["Identify candidate animal (monitoring or in custody)"] --> B["Create Appointment request"] B --> C["Select clinic + preferred dates"] C --> D["Confirm appointment"] D --> E["Create Transport tasks (pickup/dropoff)"] E --> F["Day-of check-in (arrived + paperwork)"] F --> G["Procedure outcome (spay/neuter done?) + notes"] G --> H["Post-op care tasks + meds"]

Rules

  • Appointment records should link to: animal, clinic contact, transport volunteer(s), and outcome notes.
  • Missed/canceled appointments should create a follow-up task automatically.

8) Lost dog recovery / field trapping (request → plan → recover)

flowchart TD A["Owner requests recovery help"] --> B["Create LostDogRecoveryCase"] B --> C["Capture last known location (GPS + alias) + timeline"] C --> D["Assign field lead + create tasks"] D --> E["Set feeding station(s) + schedule"] E --> F["Deploy trail cameras (optional)"] F --> G["Sighting events (owner/volunteers)"] G --> H["Trap plan + trap deployment"] H --> I{"Recovered?"} I -- "No" --> G I -- "Yes" --> J["Recovery outcome: reunited / in custody / transferred"]

Rules

  • Cases can involve an owned dog (reunification) or a stray (transition to custody).
  • Equipment (traps/cameras) should be tracked: checkout → deployed at location → returned.
  • Exact locations/trap notes should be Sensitive by default.

9) Community aid (unhoused / low-income owner support)

flowchart TD A["Outreach visit planned"] --> B["Create OutreachVisit (location + alias)"] B --> C["Link owner Contact + pet (if known)"] C --> D["Record aid delivered (food/supplies/basic care)"] D --> E["Create follow-up tasks (vet, vaccines, spay/neuter)"] E --> F["Optional: referral to partner org/clinic"]

Rules

  • Owner identities/locations may be Sensitive depending on circumstances.
  • Aid records help continuity (what was delivered, when, and what follow-up is needed).