Skip to main content

How it works

Understand the data and predictions

SecondChance reads the City of Austin's public intake and outcome records for the Austin Animal Center. It pairs each arrival with the outcome that closed it, counts the stays still open, and calculates waiting times and adoption statistics from what actually happened.

For each open cat or dog stay with a recorded date of birth, a model estimates two things from what was known at intake: the chance the stay runs past 60 days, and the chance of adoption by day 30. Nothing about the estimate updates as the stay continues.

Staff should read an estimate as a reason to look earlier and do more, then check the animal's current record before acting. Nothing here decides anything.

Discrimination

0.694

Take two stays, one that ran past 60 days and one that did not. This is how often the model ranks them the right way round on data it never saw. 0.5 is chance.

Calibration error

0.047

Average distance, in probability points, between a stated chance and what happened at that chance. Smaller means the percentage on screen means what it says.

Lift in the top 50

5.57x

In the test block, the 50 highest-ranked stays contained long stays at this multiple of the base rate. Retrospective concentration, not an effect of using the tool.

Evaluation period

30 May 2026 to 2 Sep 2026

Held-out arrivals, 3,079 stays, all later than anything used for training.

Data and refresh

SecondChance connects to the City of Austin's public intake and outcome records. Austin describes these feeds as updating hourly. SecondChance checks for updates automatically and recalculates the affected records and statistics when a refreshed snapshot is available. The data-status panel shows when information was last retrieved and whether the source appears delayed. Changes are not instantaneous, and an open intake record does not confirm that an animal is available for adoption.

Updated records can receive estimates from the current model. The model itself is updated separately after retraining and testing.

  1. 01

    Austin publishes

    Intake and outcome rows, hourly, on the open data portal.

  2. 02

    SecondChance reads

    Every row, validated and paired into stays, reused for thirty minutes.

  3. 03

    Pages recalculate

    Counts, rates and estimates from the same snapshot.

The path, end to end

  1. Austin's Socrata API is read in full, page by page, with a stable ordering so no row is skipped or repeated.
  2. Every row is validated against a schema; rejected rows are counted, never dropped silently.
  3. Each intake is paired with the outcome that names its intake time. Near misses are marked ambiguous and excluded from counts.
  4. Open stays, waits, medians, rates and outcome shares are computed from the paired stays as of one snapshot moment.
  5. Eligible open stays are scored by the published model, from intake-time inputs only.
  6. The finished view is cached for 30 minutes and served to every page. There is no push subscription; the site asks on this schedule.

Current snapshot 22 Sep 2026, 21:17 CDT. Publisher last wrote 22 Sep 2026, 19:00 CDT. Times on Austin's clock.

Source datasets

The archive and current feeds do not share an animal-ID namespace and are never joined by resemblance. Outcomes whose intake predates the cutover are counted as unmatched and shown in the data details.

Metric guide

Every figure on the site has one definition, kept in a shared registry so the dashboard, the queue, a record page and this page cannot disagree. One sentence each; open an entry for the unit, formula, window, sample and limits.

Open shelter stays

Cat and dog intake episodes with no confidently matched recorded outcome as of the snapshot.

Unit:
stays
Formula or cohort:
Count of companion-animal intake rows whose intake is on or before the snapshot and which have no matched outcome on or before it. A repeat arrival is a new stay.
Window:
As of the snapshot time shown in the data details.
Sample and exclusions:
Wildlife and livestock are excluded. Ambiguous joins are excluded. Records open for more than a year are counted but flagged as possibly stale.
Practical use:
A rough size for the population that may need review.
Limitation:
Not verified adoption availability and not exact kennel occupancy: Austin publishes intake and outcome events, not a roster.
Source:
Derived from the two current ShelterBuddy feeds.
Days waiting

Whole days from this stay's intake to the snapshot, for an inferred open stay.

Unit:
days
Formula or cohort:
Snapshot time minus intake time, both read on Austin's clock, rounded down to whole days.
Window:
Intake to snapshot.
Sample and exclusions:
Open stays only.
Practical use:
Finding long waits.
Limitation:
A record the shelter never closed keeps accruing days; past a year it is flagged as possibly stale rather than trusted.
Source:
Intake `source_date` in the current feed; the snapshot time is this site's.
Median days to adoption

The middle wait among animals actually adopted in the cohort: about half waited less and half more.

Unit:
days
Formula or cohort:
Median of intake-to-adoption durations over adopted, confidently matched stays.
Window:
Stays that began in the trailing twelve months.
Sample and exclusions:
Adoptions only. Transfers, returns to owner, euthanasia and open stays are not in the sample.
Practical use:
Comparing observed adoption timelines across periods or groups.
Limitation:
It is not every animal's expected wait: animals still waiting and animals who left another way are not counted.
Source:
Current feeds; adoption variants are folded into one bucket.
Adopted within 30 days, observed

Eligible arrivals adopted by day 30, divided by arrivals that have had a full 30 days in which to be adopted.

Unit:
share of eligible arrivals
Formula or cohort:
Adopted with duration ≤ 30 days ÷ arrivals with at least 30 days between intake and the snapshot.
Window:
Arrivals in the trailing twelve months, excluding the most recent 30 days.
Sample and exclusions:
Arrivals too recent to have had 30 days are excluded, not counted as failures. Other exits within 30 days count as not adopted.
Practical use:
Historical early-adoption frequency.
Limitation:
A recent change in practice shows up only after 30 days have elapsed.
Source:
Current feeds.
Stays longer than 60 days, observed

Completed stays lasting more than 60 days, divided by completed stays.

Unit:
share of completed stays
Formula or cohort:
Completed stays with duration > 60 ÷ completed stays in the cohort.
Window:
Stays that began in the trailing twelve months.
Sample and exclusions:
Completed, confidently matched cat and dog stays, whatever the outcome.
Practical use:
How often long stays happened in completed history.
Limitation:
It is not the fraction of animals currently here who are past 60 days, and it is not a prediction.
Source:
Current feeds.
Predicted long-stay probability

The model's estimate, made from what was known at intake, that the total stay exceeds 60 days.

Unit:
probability
Formula or cohort:
Calibrated output of the long-stay model for the stay's intake-time inputs. Bands: 60% and above, 40%, 25%.
Window:
Answered at intake; not re-asked as the stay continues.
Sample and exclusions:
Cats and dogs with a recorded date of birth. Others show as unavailable.
Practical use:
Ranking which arrivals may deserve earlier attention.
Limitation:
A 70% estimate means roughly 70 of 100 comparable scored cases would pass 60 days if calibration holds. It is not certainty, temperament or an animal's value, and for an animal already past 60 days it is history, not a forecast.
Source:
Published model artifact; version and evaluation on the How it works page.
Predicted 30-day adoption probability

Estimated probability of adoption by day 30 counting from intake.

Unit:
probability
Formula or cohort:
Calibrated output of the 30-day adoption model for intake-time inputs.
Window:
Day 0 to day 30 from arrival.
Sample and exclusions:
Cats and dogs with a recorded date of birth.
Practical use:
A second view of the same arrival: fast exit rather than long stay.
Limitation:
Not "within the next 30 days" for an animal already here, and not one minus the long-stay probability.
Source:
Published model artifact.
Monthly intakes and adoptions

Separate counts of arrival events and adoption events in each month.

Unit:
events per month
Formula or cohort:
Intakes by intake month; adoptions by outcome month.
Window:
Every complete month in the current feeds; the current month is marked partial.
Sample and exclusions:
Cats and dogs, confident joins.
Practical use:
Seasonality and pressure.
Limitation:
The two lines involve different animals. Dividing them is not an adoption rate; the tile uses a cohort rate instead.
Source:
Current feeds.
Life-stage adoption median

Median days to adoption among adopted animals in each age group.

Unit:
days
Formula or cohort:
Median over adopted stays, grouped by life stage at intake.
Window:
Stays that began in the trailing twelve months.
Sample and exclusions:
The adopted count is shown beside each median; the completed count is the share's denominator.
Practical use:
Comparing observed timelines by age.
Limitation:
A short median among successful adoptions can coexist with a low adoption share: the two answer different questions.
Source:
Current feeds.
Outcome share

Each recorded ending, divided by completed stays in the window.

Unit:
share of completed stays
Formula or cohort:
Completed stays with that outcome ÷ completed stays.
Window:
Stays that began in the trailing twelve months.
Sample and exclusions:
Adopted folds every adoption variant. Transfer, return to owner, euthanasia and other statuses keep the feed's own wording.
Practical use:
Where stays actually end.
Limitation:
Transfer is not adoption. Open stays have no outcome and are not included.
Source:
Current outcomes feed.
Sample size

The number of eligible stays or adoptions behind that specific figure.

Unit:
stays
Formula or cohort:
Count of rows contributing to the calculation, after exclusions.
Window:
Same as the figure it accompanies.
Sample and exclusions:
Stated as "based on … stays" or "… adoptions" where the distinction matters.
Practical use:
Judging how much to trust a figure.
Limitation:
A small sample can move sharply when a few records change.
Source:
Computed alongside each figure.
ROC AUC

How often the model ranks a randomly chosen positive case above a randomly chosen negative one.

Unit:
0.5 to 1
Formula or cohort:
Area under the ROC curve on the held-out test block.
Window:
Held-out test arrivals, dates on the How it works page.
Sample and exclusions:
Stays with an observable outcome.
Practical use:
Ranking quality.
Limitation:
0.694 does not mean 69.4% of predictions are correct.
Source:
Published model artifact.
Average precision

Summarises precision against recall as the selection threshold changes.

Unit:
0 to 1
Formula or cohort:
Average precision (scikit-learn), not the trapezoidal precision–recall area. Compare with the event rate: a model with no skill scores about the base rate.
Window:
Held-out test block.
Sample and exclusions:
Same as ROC AUC.
Practical use:
How well the top of the ranking concentrates true cases when the event is rare.
Limitation:
False alarms and missed cases trade off; this is one summary of that trade.
Source:
Published model artifact.
Expected calibration error

The average gap between predicted and observed rates across probability groups, weighted by group size.

Unit:
probability points
Formula or cohort:
Ten equal-width bins; per-bin |observed − predicted| weighted by bin share.
Window:
Held-out test block, after calibration.
Sample and exclusions:
Same as ROC AUC.
Practical use:
Whether the printed percentages mean what they say.
Limitation:
0.047 is about 4.7 percentage points on that evaluation, not a ±4.7-point interval on any one animal.
Source:
Published model artifact.
Calibration slope and intercept

A straight line fitted to observed rate against predicted rate across ten deciles; ideal is slope 1, intercept 0.

Unit:
unitless / probability points
Formula or cohort:
observed = intercept + slope × predicted, fitted by least squares on decile means. A slope below 1 means predictions are more spread than outcomes; a positive intercept means observed rates sit above predictions at the low end.
Window:
Held-out test block.
Sample and exclusions:
Same as ROC AUC.
Practical use:
Naming the shape of a calibration problem.
Limitation:
Neither value alone proves probabilities are trustworthy.
Source:
Published model artifact; the fit is on the untransformed probability scale.
Brier score

Average squared difference between predicted probabilities and binary outcomes.

Unit:
0 (best) to 1
Formula or cohort:
mean((p − y)²).
Window:
Held-out test block.
Sample and exclusions:
Same as ROC AUC.
Practical use:
Overall probability quality; lower is better in a comparable population.
Limitation:
Reflects both ranking and calibration, and depends on the base rate.
Source:
Published model artifact.
Log loss

Probability error that penalises confident wrong predictions strongly.

Unit:
nats, lower is better
Formula or cohort:
−mean(y·ln p + (1−y)·ln(1−p)).
Window:
Held-out test block.
Sample and exclusions:
Same as ROC AUC.
Practical use:
Comparing models on the same evaluation problem.
Limitation:
Not a percentage or an adoption rate.
Source:
Published model artifact.
Precision in the top 50

Of the 50 highest-ranked evaluation cases, the share that actually had the outcome.

Unit:
share
Formula or cohort:
Positives among the top 50 by predicted probability ÷ 50.
Window:
Held-out test block.
Sample and exclusions:
The 50 highest scores in the block.
Practical use:
What a short worked list would have contained, historically.
Limitation:
Retrospective evaluation, not demonstrated outreach success on today's queue.
Source:
Published model artifact.
Lift in the top 50

The top-50 outcome rate divided by the evaluation base rate.

Unit:
multiple
Formula or cohort:
Precision in the top 50 ÷ overall positive rate in the block.
Window:
Held-out test block.
Sample and exclusions:
Same as precision in the top 50.
Practical use:
How concentrated the outcome is at the top of the ranking.
Limitation:
A lift of 5× describes concentration of the outcome. It does not mean 5× more adoptions caused by the tool, and today's queue is not guaranteed the same figure.
Source:
Published model artifact.
Subgroup calibration gap

Mean predicted rate minus observed rate within a group, in percentage points.

Unit:
percentage points
Formula or cohort:
mean(p) − mean(y) for the group's test rows.
Window:
Held-out test block.
Sample and exclusions:
Group sizes are shown beside each gap; small groups move easily.
Practical use:
Whether the model over- or under-states risk for a kind of animal.
Limitation:
Uncertainty is not estimated for small groups, so a small gap is not proof of fairness.
Source:
Published model artifact.
Feature importance

How much the model uses an input across the evaluated population.

Unit:
share of shown gain
Formula or cohort:
LightGBM gain importance, normalised over the inputs shown.
Window:
Training data.
Sample and exclusions:
Whole training population.
Practical use:
Which inputs the model leans on.
Limitation:
Not causation, not direction of effect, and not an explanation of any single animal.
Source:
Published model artifact.
Cumulative adoption incidence

The share estimated to have been adopted by a given day, accounting for competing exits.

Unit:
share
Formula or cohort:
Aalen–Johansen cumulative incidence with transfer, return and euthanasia as competing events.
Window:
Archive study, October 2013 to March 2022.
Sample and exclusions:
Legacy archive stays under the previous shelter system.
Practical use:
Historical context for how quickly groups were adopted.
Limitation:
Archived values describe that period; they are not current rates.
Source:
Earlier archive study.
Hazard ratio

The relative instantaneous adoption rate under a fitted survival model.

Unit:
multiple
Formula or cohort:
Cox proportional-hazards coefficient, exponentiated.
Window:
Archive study.
Sample and exclusions:
At-risk archive stays.
Practical use:
Historical association between a characteristic and adoption speed.
Limitation:
Not an adoption probability and not proof that an action changes outcomes.
Source:
Earlier archive study.
Estimated staff time

The sum of assumed task times for the actions in a plan.

Unit:
minutes
Formula or cohort:
Σ assumed minutes per assigned action.
Window:
This plan.
Sample and exclusions:
The rows in the plan.
Practical use:
Rough workload planning.
Limitation:
Coordination time, not the time to place an animal or complete care.
Source:
Assumptions in the intervention catalogue.
Scenario additional adoptions

A hypothetical count from explicit assumptions about benefit and eligible animals.

Unit:
animals
Formula or cohort:
Σ over eligible animals of min(assumed percentage-point increase, 100% − baseline), where baseline is the intake-time 30-day estimate if the window is still open and zero otherwise.
Window:
The 30-day horizon from intake, for animals still inside it; hypothetical for others.
Sample and exclusions:
Animals in the plan.
Practical use:
Sizing an assumption, not measuring an outcome.
Limitation:
Never achieved impact or a validated forecast.
Source:
Planner assumptions set by the user.

Data-quality labels

Ambiguous pairing
An outcome named an intake time that did not match exactly. The stay is excluded from every count rather than guessed at.
Unmatched outcome
An outcome with no intake in the current feed. Almost all are animals admitted before the May 2025 cutover, whose intake lives in the frozen archive under a different ID format.
Possibly stale open record
Open for more than a year. It may be a genuine long stay or a record never closed. Possibly stale is not proof the animal has left.
Missing intake age
No date of birth was recorded, so age at intake is unknown and the model declines to score the stay. Unknown is not zero.
Unavailable prediction
The model did not produce an estimate for this stay. The wait and record are still real and still shown.

What the model predicts

What it predicts

For every cat and dog currently in the shelter, the model estimates two things from what was known on arrival: the chance the animal is still there after 60 days, and the chance it is adopted within 30 days of intake. Nothing else. It does not decide anything, and it does not rank animals by how much they deserve care.

What it learned from

Completed shelter stays from Austin's current public feeds, which begin in May 2025 when the city moved to the ShelterBuddy system. It uses only what is known when an animal arrives: species, breed, colour, age, sex, why it came in, its health at intake, and how full the shelter was that day.

What the estimate is, and is not

  • It is answered at intake and not re-asked as the stay continues. For an animal already past 60 days, the site leads with that fact and keeps the intake estimate as context.
  • The 30-day figure is adoption by day 30 counting from arrival, not within the next 30 days from today.
  • The two figures are separate models, not one minus the other.
  • A 70% long-stay estimate means roughly 70 in 100 comparable scored arrivals would pass 60 days if the calibration holds. It is not certainty, temperament, or an animal's worth.

What it keys on: stay past 60 days

  1. Age when it arrived37% of the shown weight
  2. Breed: American pit bull terrier14% of the shown weight
  3. Recorded as: Dog12% of the shown weight
  4. Sex: Unknown10% of the shown weight
  5. How full the shelter was that day9% of the shown weight
  6. Breed: Chihuahua, smooth coat8% of the shown weight
  7. How busy the previous week had been5% of the shown weight
  8. Time of day it arrived5% of the shown weight

Bar length is how much the model relies on each input across the whole population, largest first. It is not an explanation of any single animal, and it does not say which direction an input pushes a prediction.

Show the 30-day adoption model's inputs
  1. Age when it arrived66% of the shown weight
  2. Sex: Unknown13% of the shown weight
  3. Reason it came in: animal control impound6% of the shown weight
  4. Reason it came in: Owner surrender5% of the shown weight
  5. Breed: American pit bull terrier3% of the shown weight
  6. How full the shelter was that day2% of the shown weight
  7. Species: Dog2% of the shown weight
  8. Recorded as: Cat2% of the shown weight

Bar length is how much the model relies on each input across the whole population, largest first. It is not an explanation of any single animal, and it does not say which direction an input pushes a prediction.

How it was tested

On stays the model never saw, from a later period than the ones it learned from. Testing on a later window is deliberate. A model checked only against its own era tells you nothing about how it behaves once the shelter changes.

Measured on the held-out test block after calibration. Discrimination is the ability to rank a long stay above a short one. Calibration error is how far a stated percentage is from what actually happened.

Held-out test block: arrivals between 30 May 2026 and 2 Sep 2026 whose outcome was observable (3,079 stays for the long-stay target, 3,217 for adoption), scored after calibration.
MeasureStay past 60 daysAdopted by day 30
Stays evaluatedStays in the held-out block with an observable outcome. None were seen during training.3,0793,217
How often it actually happenedThe base rate. Any model has to beat this to be worth anything, and average precision should be read against it.6.5%33.5%
Discrimination (ROC AUC)How often the model ranks a randomly chosen positive case above a randomly chosen negative one. 0.5 is chance; 0.694 is not 69.4% accuracy.0.6940.803
Average precisionPrecision against recall as the threshold moves, summarised as average precision (not trapezoidal PR area). Compare it with the base rate above: that is roughly what no skill would score. It asks a different question from ROC AUC — how concentrated true cases are at the top — rather than the same question asked honestly.0.1570.605
Calibration error (ECE)Weighted average gap between predicted and observed rates across ten probability bins. 0.047 is about 4.7 percentage points on this evaluation, not a ±4.7-point interval on any single animal.0.0470.062
Calibration slopeSlope of observed rate against predicted rate across deciles; 1.0 is ideal. Below 1 the predictions are more spread out than the outcomes (too confident at the extremes); above 1, less spread.0.6401.198
Calibration interceptWhere that line crosses zero predicted probability; 0 is ideal. Under this fit (observed = intercept + slope × predicted), a positive intercept means observed rates sit above predictions at the low end, so predictions there are too low, not too high. Read with the slope, not alone.−0.64 pp+0.27 pp
Brier scoreAverage squared error of the probabilities. Lower is better in a comparable population; it reflects ranking as well as calibration.0.0610.175
Log lossPenalises confident mistakes hardest. Lower is better on the same problem. Not a percentage.0.2370.502
Precision in the top 50Of the 50 highest-ranked stays in the evaluation block, the share the outcome actually happened to (36% is 18 of 50). Historical evaluation, not demonstrated outreach success.36.0%80.0%
Lift in the top 50That precision divided by the base rate. It describes how concentrated the outcome is at the top of the ranking; it does not mean the tool causes that many more adoptions.5.57x2.39x
Calibration: how the percentages were fitted

The raw model ranks well but its probabilities are not trustworthy on their own. An isotonic mapping is fitted on the validation block and applied to everything shown on this site. The validation figures below are the mapping's fit on the data it was fitted to, so a near-zero calibration error there is expected and is not evidence. The test figures above are the honest ones.

Long stay, validation AUC (fitted set)
0.709
Long stay, validation ECE (fitted set)
0.000
30-day adoption, validation AUC (fitted set)
0.806
30-day adoption, validation ECE (fitted set)
0.000

A reliability curve is not drawn because the artifact does not carry per-bin counts, and a curve interpolated from summary statistics would be a drawing rather than a measurement.

Who it works for

A model that works well on average can still work badly for a particular group of animals, and that is exactly the failure that matters here. Performance is reported by species, life stage, intake condition, breed structure and coat colour rather than summarised away. Uncertainty is not estimated for small groups, so a small gap is not proof of fairness and a large one in a group of 32 is not proof of a problem.

Long-stay performance by subgroup on the held-out test block. The gap is mean predicted rate minus observed rate in percentage points; positive means the model predicted more long stays than happened. Rows past 4 points are flagged; groups under 100 stays are reported without a judgement.
Flag
Breed structureSingle breed3,0796.5%0.694+4.6 ppOver-predicts by +4.6 pp
Coat colourBlack in coat9156.9%0.688+4.8 ppOver-predicts by +4.8 pp
Coat colourNo black in coat2,1646.3%0.692+4.6 ppOver-predicts by +4.6 pp
Intake conditionDead3215.6%0.741−7.9 ppSmall group (32); uncertainty not estimated
Intake conditionInjured7516.0%0.550−1.2 ppSmall group (75); uncertainty not estimated
Intake conditionNeonate590.0%not measured+6.1 ppSmall group (59); uncertainty not estimated
Intake conditionNormal25110.8%0.647+2.1 ppWithin 4 points
Intake conditionSick5610.7%0.737+0.3 ppSmall group (56); uncertainty not estimated
Intake conditionMissing2,6065.7%0.691+5.2 ppOver-predicts by +5.2 pp
Life stageAdult1,0207.1%0.789+7.5 ppOver-predicts by +7.5 pp
Life stageJuvenile1,7456.0%0.637+3.6 ppWithin 4 points
Life stageSenior1246.5%0.787+5.5 ppOver-predicts by +5.5 pp
Life stageUnknown1907.9%0.717−1.7 ppWithin 4 points
SpeciesCat2,0965.3%0.646+2.9 ppWithin 4 points
SpeciesDog9838.9%0.758+8.3 ppOver-predicts by +8.3 pp

A known population issue

The evaluation set includes stays recorded with an intake condition of “Dead”, animals that arrived deceased. They are not candidates for adoption support, and their presence in training and evaluation is a known limitation of this model version. Removing them requires a documented retrain and re-evaluation; the metrics above are reported as published rather than adjusted after the fact. In this artifact 32 test stays carry that condition, with an observed long-stay rate of 15.6%, which points to records left open rather than animals waiting.

Limitations

Where it should not be trusted

It knows nothing about behaviour, temperament, photographs or listing quality, which are among the strongest reasons an animal waits. It was trained on one shelter in one city. It should not be pointed at another shelter without retraining and rechecking there.

When it stops working

A model can keep its ranking and lose its meaning. In the archive study the shelter's operations changed sharply in March 2020: the model kept telling fast adoptions from slow ones about as well as before, but its probabilities drifted until it was predicting a 30-day adoption rate twelve points above what actually happened.

That is the failure mode worth understanding, because a dashboard showing probabilities will keep showing confident, wrong numbers the whole time. Monitoring only the ranking metric would have missed it entirely, which is why calibration error is reported next to discrimination here rather than buried.

What that looks like in this model today

Long-stay discrimination on the held-out block is 0.694 and its calibration error is 0.047. A long stay happened to 6.5% of the block, so the ranking is doing real work on a rare outcome. If the calibration error climbs while discrimination holds, the ranking is still usable and the printed percentages are not.

What it must not be used for

SecondChance estimates how long an animal is likely to wait so that staff attention, foster recruitment, photography and outreach can go to the animals who need them most.

A high predicted long-stay risk is a request for more help, not less. This score must never be used to justify euthanasia, to refuse an intake, to withhold medical or behavioural care, or to deprioritise any animal for any resource. Every prediction in this system exists to increase what an animal receives.

If you are being asked to use this tool to reduce care for an animal, the tool is being misused. Say so.

Technical lineage

Every value in this panel is read from the published model artifact. Nothing on this page is typed in by hand.

Model version
sc-sb-2026-09-02-v1
Trained at
2 Sep 2026, 16:14 CDT
Source system
ShelterBuddy, via the City of Austin
Source datasets
pyqf-r2dc, gsvs-ypi7
Source rows read
16,993 intakes, 16,825 outcomes
Source retrieved
2 Sep 2026, 16:14 CDT
Feature transform
sb-features-1
Random seed
20260902
Training block
4 May 2025 to 1 Mar 2026 · 9,153 stays
Validation block
1 Mar 2026 to 30 May 2026 · 3,152 stays
Test block
30 May 2026 to 2 Sep 2026 · 3,079 stays
Inputs used
69 features, all known at intake
Learner
LightGBM gradient-boosted trees, isotonic calibration on the validation block
Runtime
Committed JSON tree dump, evaluated in TypeScript; golden vectors keep it in step with the Python trainer

The earlier archive study

An earlier version of this project studied the full Austin archive from October 2013 to March 2022, under the previous shelter system. Those results are kept because the methodology and its findings still stand, but that model is not the one scoring this site: the source system, schema and operating period all changed in May 2025, and applying it to the current feed would be unsound.

Archive-era findings that still appear on this site (foster pathways, intake condition, the senior band) are labelled as historical associations from 2013–2022 wherever they are used. They describe that period, not current rates, and they do not measure what an action changes.