VIDAhof e.V.
The website of an animal sanctuary near Kleve — taken over as a half-finished existing project and carried to completion. For openM!nded it is also the place where this way of working can be checked: what the model contributed is live on the page.
Visit the site: vidahof.de ↗
An existing project, not a blank slate.
The association operates three farms near Kleve with around 130 rescued animals and is a recognized learning center for animal welfare. Therefore, the site must do more than just inform: it needs to recruit sponsorships and donations, showcase each animal individually, and host a community — member area with registration and dashboard, forum, donation flow.
It started at my previous employer and was never finished there. I took over the project: foreign code, foreign custom modules, plus a page builder where pages are stored as JSON in the database. I deliberately created new subpages as simple UIkit articles instead of using the builder — less convenient in the backend, but repairable if needed.
The association pays nothing for it. That is deliberate.
The model did the drudge work
- 148alt texts, live on the site
- 200+Photos with machine-determined cropping
- 0Images that left the computer for it.
Every animal has a profile, every profile a photo, and every photo needs alt text and a crop that fits into two different layouts. With around 130 animals plus farm, team, and blog images, that's several hundred small decisions — none of which is interesting on its own, but together they cost days.
A!ley took over this part, the model running here anyway. No cloud service, no upload, no user data in someone else's hands.
148 alt texts
For each image, a descriptive alt text generated in the same pass as everything else. They appear on the page — I didn't write them myself.
Descriptions for each profile
Every animal has a field describing what can be seen in the photo. It comes from the image itself, not from the association's records — which makes it exactly the part someone would previously have had to type out.
Crops for over 200 photos
Animal photos, team and farm shots: the model determines the meaningful crop for each photo and outputs it as coordinates. I kept them unchanged — no cropping on my part.
Images for the blog
The illustrations in the blog posts are from local image generation and are marked accordingly in the metadata. Photos of animals, of course, are real photos.
Everything is still cross-checked. The model suggests, I decide — but deciding takes minutes and writing takes days.
Why that's more than convenience
Several days of hard work
A municipal tourism project: over 120 physical exhibits were to be put online. What was delivered, as is common in such projects — mobile photos of varying quality and the specifications scattered across manufacturer emails.
Two cuts per piece: the wide shot with base and plaque, the close-up on the object alone. Plus handwritten notes in the schema, alt texts typed out myself, upload, next piece. I sat on this for several days — as an intern. If someone else had done it, those would have been paid developer hours, and they'd end up on the customer's bill.
A stack run overnight
Two of the three steps worked exactly like that at VIDAhof: The crop becomes a coordinate question, and the alt-texts are generated in the same pass. The third — converting unstructured text from emails, notes, and data sheets into a clean schema instead of transcribing it — is the same mechanics, just applied to text instead of images.
What remains is the review. And that's the real work: a proposal that's off falls out in seconds. Writing it yourself from scratch takes minutes — two hundred times over.
What that changes in practice
Time
The stack runs unattended because it's not blocking anything: the model is already loaded. My own time was spent reviewing, not working.
Cost
Routine work is billed at a standard hourly rate and appears on the client's invoice. Here, it falls away without anything missing.
Uniformity
The two hundredth image will be cropped to the same scale as the first. Exactly at this point, a human reliably fails — myself included.
Data protection
Nothing is uploaded. For an association with donor data, animal records, and employee photos, that's not a side issue — it's the prerequisite.
Where the groundwork becomes visible

The overview of all animals — here it pays to have each section follow the same scale. 
A profile summary. The visual description comes from the image analysis, and the story is about the club.