Files
hyteck-blog/content/post/checking-shelters/index.md
2025-11-08 21:32:12 +01:00

5.5 KiB

title, date, lastmod, draft, image, categories, tags
title date lastmod draft image categories tags
How to manually check hundreds of animal shelters - every 14 days 2025-11-03T12:05:10+02:00 2025-11-03T16:05:10+02:00 false uploads/animal-shelters.png
English
notfellchen
animal shelter
animal welfare
django

I run a website called Notfellchen 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 and I wrote a whole other blog post on how I imported and improved this data.

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 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.