Still Here: Everyone Believes Black Dogs Get Left Behind. I Checked 99,916 Shelter Records. They Don't.
510 dogs have an intake record at the Austin animal shelter and no outcome record. Still Here is the board, ordered by how long they have waited. The one at the top is Pancho, 449 days. Then I went looking for the reason the dogs at the top are the ones at the top, and the answer surprised me: black dog syndrome does not appear in 99,916 completed stays — the colors that wait are the coats bully-type dogs come in. Hold breed constant and coat moves the median by at most 7.5 days; change the breed and it moves by 20.

The claim I set out to check
If you have spent any time around animal shelters you have heard of black dog syndrome: the belief that black dogs sit unadopted while lighter dogs go home. It is repeated in shelter training material, in local news segments, and in a great many well-meaning adoption posts every October. It is a genuinely checkable claim, and Austin has published enough records to check it. I pulled every completed dog stay the city has released since October 2013 and reconstructed how long each one lasted: 99,916 stays, of which 51,413 ended in adoption. Then I took the median wait for each coat color.

The colors that wait are the colors pit bulls come in
But there is something much more interesting sitting in that same table, and it took me a second pass to see it. Look at the top of that list again. Blue, brown brindle, fawn. Those are not random slow colors. They are the coats you picture when you picture a pit bull. So I split every color by whether the dog was a bully-type breed, meaning pit bull, Staffordshire, or American bulldog.

Across the whole corpus: bully-type dogs wait a median of 28 days, and every other dog waits 8. That is 3.5x, on 9,658 bully-type adoptions against 41,755 others. And it is not a historical curiosity: of the 510 dogs sitting in that shelter today, 216 are bully-type. Four of the five longest waits on the board right now are pit bulls.

The thing the adoption site does not tell you
Austin publishes, in open data, exactly how long every dog has been in its care. Its adoption site shows none of it. I checked the listings the city actually serves to adopters. A listing carries breed, sex, size, age, kennel number, and a set of behavior tags. There is no intake date on it, no length of stay, and no way to sort or filter by either. There is a manual 'Long-term resident' tag a staff member can tick, but nothing that gives you a number. So a person browsing Austin's adoption page can look straight at Fritz and have no idea he arrived on May 28 of last year. Both halves of that are public. They are just never printed next to each other. Still Here is the join.

The stack, and the two scripts that matter before publishing
Every number on the site comes out of a Snowflake view. The corpus loads through an internal stage rather than row-by-row inserts. `IS_BULLY()` is a SQL function, so the single judgement call in the whole analysis sits in one auditable place instead of being scattered through application code. `WAITING_RANKED` ranks each of the 510 live waits against all 51,413 completed adoptions in that dog's breed group; that is the number on every card, and it is the part that actually wants a warehouse. `verify.py` and `factcheck.py` are the two scripts that matter before shipping. The first re-runs every headline question in Python and diffs it against Snowflake (102 checks). The second re-reads `stats.json` and asserts each number quoted in the README and post — because a figure written on Saturday and a pipeline re-run on Sunday is exactly how a writeup ends up lying about its own data.

Still Here: 510 Dogs Have an Intake Record at Austin's Shelter and No Outcome Record. Black Dog Syndrome Does Not Appear in 99,916 Stays. The Color That Waits Is Whichever Breed the Coat Belongs To.
View the project