113 lines
5.5 KiB
Markdown
113 lines
5.5 KiB
Markdown
---
|
|
title: "How to manually check hundreds of animal shelters - every 14 days"
|
|
date: 2025-11-03T12:05:10+02:00
|
|
lastmod: 2025-11-03T16:05:10+02:00
|
|
draft: false
|
|
image: "uploads/animal-shelters.png"
|
|
categories: [ 'English' ]
|
|
tags: [ 'notfellchen', 'animal shelter', 'animal welfare', 'django' ]
|
|
---
|
|
|
|
I run a website called [Notfellchen](https://notfellchen.org) that list animals that are waiting for adoption. It's
|
|
currently restricted to fancy rats in Germany and that for good reason: Running this website involves **checking every
|
|
shelter every two weeks manually**. You need to visit the website, check if there are new animals, contact the shelter
|
|
and add them to notfellchen if they allow it. This takes time. A lot. Here is how the process works in detail and how I
|
|
reduced it to a manageable effort.
|
|
|
|
## General process
|
|
|
|
Here is how the general process looks
|
|
|
|
{{< html animal-discovery.drawio.html >}}
|
|
|
|
## List of animal shelters
|
|
|
|
Focusing on the first step: We want to check the website of an animal shelter - but where do we get a list of animal
|
|
shelters from? Luckily there is an easy answer: [OpenStreetMap](https://openstreetmap.org) and I wrote a
|
|
whole [other blog post on how I imported and improved this data](https://hyteck.de/post/improve-osm-by-using-it/).
|
|
|
|
## Species-specific link
|
|
|
|
Importing this data provides us (most of the time) with a link to the shelter's website. However, rats are usually not
|
|
listed on the home page but on a subsite.
|
|
In order to save time, I introduced the concept of a species-specific link per organization and species.
|
|
|
|
So for the Tierheim Entenhausen this might look like this
|
|
|
|
| Species | Species specific link |
|
|
|---------|--------------------------------------------------------|
|
|
| Cat | https://tierheim-entenhausen.de/adoption/cats |
|
|
| Rats | https://tierheim-entenhausen.de/adoption/small-mammals |
|
|
|
|
As animal shelter pages look very different from each other, clicking this link provides an enormous time benefit
|
|
compared to clicking through a homepage manually.
|
|
|
|
# Org check page
|
|
|
|
I set up a special page to make it most efficient to check shelters. It's structured in four parts:
|
|
|
|
* **Stats**: The stats show how many animal shelters are checked in the last two weeks and how many to go.
|
|
* **Not checked for the longest period**: Shows the animal shelters to check next, it's therefore sorted by the date
|
|
they were last checked
|
|
* **In active communication**: A overview of the organizations where there is communication (or an attempt thereof).
|
|
This can take multiple das or even weeks so the internal comment field is very useful to keep track.
|
|
* **Last checked** It sometimes happens that I accidentally set a organization to "Checked" by accident. I added this
|
|
section to make it easier to revert that.
|
|
|
|

|
|
|
|
## Shortcuts
|
|
|
|
To make it even faster to work through the organizations I added some shortcuts for the most common functionality and
|
|
documented the browser own shortcut to close a tab.
|
|
|
|
* `O`: Open website of the first organization
|
|
* `CTRL+W`: Close tab (Firefox, Chrome)
|
|
* `C`: Mark first organization as checked
|
|
|
|
## Results
|
|
|
|
After implementing all this, how long does it take now to check all organizations? Here are the numbers
|
|
|
|
| Measurement | |
|
|
|-----------------------------------------------------------|--------------|
|
|
| Time to check one organization (avg.) | 12.1s |
|
|
| Organization checked per minute | 4.96 org/min |
|
|
| Time to check all (eligible) german animal shelters (429) | 1 h 16 min |
|
|
|
|
This excludes the time, it takes to add animals or contact rescue organizations. One of these actions must be taken
|
|
whenever an eligible animal is found on a website. Here you can see how this interrupts the process:
|
|
|
|

|
|
|
|
And here is the breakdown of time per activity. A big caveat here is, that I did not follow up on previous conversations
|
|
here, therefore the contacting number is likely an underestimation.
|
|
|
|
| Activity | Time spent | Percentage |
|
|
|------------|------------|------------|
|
|
| Checking | 54 min 44s | 72.3% |
|
|
| Adding | 11 min 15s | 14.9% |
|
|
| Contacting | 9min 41s | 12.8% |
|
|
|
|
To me, this looks like a pretty good result. I can't say which optimizations brought how much improvement, but I'd argue
|
|
they all play a role in reaching the 12s per rescue organizations that is checked.
|
|
|
|
In order to check all german animal shelters, one needs to put in about 2 and a half hours every two weeks. That seems
|
|
reasonable to me. Further improvements of the likely do not lie in the organization check page but the contact process
|
|
and adoption notice form.
|
|
|
|
For now, I'm happy with the results.
|
|
|
|
# Addendum: Common annoyances
|
|
|
|
When doing this over the last few months I encountered some recurring issues that not only were annoying but also take
|
|
up a majority of the time. Here are some that stood out
|
|
|
|
* **Broken SSL encryption** So many animal shelters do not have a functioning SSL certificate. It takes time to work
|
|
around the warnings.
|
|
* **No results not indicated** More often than not, animal shelters do not have rats. However, when you visit a page
|
|
like [this](https://tierschutzliga.de/tierheime/tierparadies-oberdinger-moos/tiervermittlung/#?THM=TOM&Tierart=Kleintiere)
|
|
it's hard to know if there is a technical issue or if there are no animals for your search.
|
|
* **No static links** Sites where you have to click through a menu to get to the right page, but you can not link
|
|
directly to it.
|