Rescue Retriever operates on two core data types — Animal records sourced from the Austin Animal Center shelter dataset, and RescueProfile objects that define scoring criteria for each program. Both types are compiled into static JavaScript modules at build time and loaded into browser memory when the application starts.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/rescue-retriever/llms.txt
Use this file to discover all available pages before exploring further.
Animal Record
Every entry indata/animals.js is a plain object conforming to this shape. The dataset contains only dogs — animalType is always "Dog" for every record.
Unique shelter identifier assigned by the Austin Animal Center, e.g.
"A706953". Used as the stable key for React rendering and as the URL parameter in /candidates/:id routes.The name recorded at intake. May be an empty string for animals that arrived unnamed. Not normalized or deduplicated — multiple records may share the same name (e.g.
"Daisy", "Mia").Species classification. Always
"Dog" for every record in this dataset — the Austin Animal Center dataset has been pre-filtered to dogs only before inclusion in Rescue Retriever.Shelter staff’s breed assessment based on visual evaluation at intake. May be a single breed (
"Labrador Retriever Mix"), a cross ("German Shepherd/Doberman Pinsch"), or a mix designation ("Pit Bull Mix"). This field is the primary input to breed matching logic.Recorded coat color, e.g.
"Yellow", "Brown/White", "Black/Tan". Used for display only; not involved in scoring.Sex and reproductive status combined in a single string. The four values present in this dataset are:
"Intact Male""Intact Female""Neutered Male""Spayed Female"
animal.sex === profile.sex.Estimated age in fractional weeks stored as a floating-point number, e.g.
30.35. All scoring comparisons and display values round this to the nearest whole number using Math.round(). See Age Handling below.Shelter or service-area location name, e.g.
"Thorndale, Texas, US". Used in the Analytics location chart and Candidate Detail view. Multiple records may share the same location string.Approximate geographic coordinates for the intake location, e.g.
30.2672. Used in geographic visualizations. Values are rounded to four decimal places in CSV exports.Approximate geographic coordinates for the intake location, e.g.
-97.7431. Used in geographic visualizations. Values are rounded to four decimal places in CSV exports.Example Animal Record
RescueProfile
Each rescue program is represented as aRescueProfile object in data/rescueProfiles.js. There are exactly three profiles: "water", "mountain", and "disaster". These objects drive both the scoring algorithm and the program cards displayed on the Rescue Profiles page.
Short identifier used as the program key throughout the application. One of
"water", "mountain", or "disaster".Full human-readable program name, e.g.
"Water Rescue" or "Mountain or Wilderness Rescue".Abbreviated name used in UI badges and score breakdown labels, e.g.
"Water", "Mountain", "Disaster".List of qualifying breed strings. Each string is compared against
animal.breed using normalized substring matching — see Breed Matching below. A match on any single breed in the list earns the full breed score.The required sex value for a sex match. Compared using strict string equality against
animal.sex. Currently "Intact Female" for the Water program and "Intact Male" for Mountain and Disaster.Minimum qualifying age in whole weeks (inclusive). Compared against
Math.round(animal.ageWeeks).Maximum qualifying age in whole weeks (inclusive). Compared against
Math.round(animal.ageWeeks).List of operational capabilities for this program, displayed on the Rescue Profiles page. Not used in scoring.
Description of the operating environment, e.g.
"Rivers, lakes, coastal waters, flood zones". Displayed on the Rescue Profiles page.Typical training timeline string, e.g.
"12–18 months". Displayed on the Rescue Profiles page.Program training success rate as a percentage string, e.g.
"87%". Displayed on the Rescue Profiles page.Primary accent color for this program as a hex string, e.g.
"#DF5A1A". UI display only — not used in scoring.Light background color used in program cards and badges, e.g.
"#FFF1E8". UI display only.Text color used against the
bgColor background, e.g. "#B7430E". UI display only.Border color for program card components, e.g.
"#F6A47C". UI display only.Icon name from the Lucide icon set rendered on program cards, e.g.
"Waves", "Mountain", "Flame". UI display only.Example RescueProfile
All Three Program Criteria at a Glance
| Program | Qualifying Breeds | Required Sex | Age Range (weeks) |
|---|---|---|---|
| Water Rescue | Labrador Retriever Mix, Chesapeake Bay Retriever, Newfoundland | Intact Female | 26–156 |
| Mountain / Wilderness | German Shepherd, Alaskan Malamute, Old English Sheepdog, Siberian Husky, Rottweiler | Intact Male | 26–156 |
| Disaster / Individual Tracking | Doberman Pinscher, German Shepherd, Golden Retriever, Bloodhound, Rottweiler | Intact Male | 20–300 |
Age Handling
TheageWeeks field is stored in the dataset as a floating-point number (e.g. 30.35, 110.11). The application applies Math.round() to this value everywhere age is used — scoring comparisons, age range filters, and all display formatting. This ensures that the age shown to a user is identical to the age used in eligibility checks.
ageWeeks: 25.6 rounds to 26 and falls within the Water and Mountain programs’ minimum of 26 weeks. An animal with ageWeeks: 25.4 rounds to 25 and does not.
Breed Matching
Breed matching does not require an exact string match. Both the animal’s breed and each profile breed string are first normalized, then a bidirectional substring test is applied. Normalization steps (applied to both sides):- Convert to lowercase
- Strip the word
"mix"or"mixed"(/\bmixed?\b/g) - Strip the word
"dog"(/\bdog\b/g) - Replace all non-alphanumeric characters with a space (
/[^a-z0-9]+/g) - Collapse multiple spaces to one (
/\s+/g) - Trim leading and trailing whitespace
"German Shepherd" will match animal breeds like "German Shepherd Mix", "German Shepherd/Labrador Retriever", and "German Shepherd/Doberman Pinsch" — all of which normalize to strings containing "german shepherd".
Breed matching is deliberately broad to account for the inconsistent notation used in shelter intake records. A dog recorded as
"Labrador Retriever/German Shepherd" will match both the Water Rescue profile (via "Labrador Retriever Mix") and the Disaster profile (via "German Shepherd"), earning breed match points against both.Related Reference
Scoring Algorithm
How breed, sex, and age criteria combine into a 0–100 score
Dataset
Source dataset provenance and field notes