This post was co-authored with Max Silfverberg (Data Scientist, AI Solutions Lead), Antti Hallavo (Lead AI Software Engineer), and Pontus Huotari (Lead Data Scientist). We work at Alma Media, a Finnish digital services, marketplaces and media company. One of our focus areas is developing AI/ML solutions for real estate listing services, where understanding image content plays an important role. Our solution is to automatically tag photos with room-type and content classes. Our room types include LIVING ROOM, KITCHEN, and BEDROOM. We also tag schematic content like floor plans and site plans. Additionally, we recognize realtor marketing materials, aerial shots, and garden photos. Altogether, there are 23 classes. As Figure 1 shows, this is a classic multi-label classification task; the same space can encompass several room types at once. On the face of it, this sounds simple, but we need to make some tricky decisions. How should you treat a living room photo that shows a bedroom through a doorway? What if the photo only shows 10% living room and the remaining 90% is dining area? The answers depend on the application. If we need to find all photos showing kitchens, we also want to identify living room photos that show a kitchen in the background. However, if the user specifically asks for kitchen photos, we only want to show the ones where the kitchen is in focus. To help decide what to return, classification confidence is important. But depending on how you implement your classifier, you might not have access to that information. Image classifiers can be built in many ways. The modern default approach is to run images through a third-party API which internally uses a vision-language model (VLM) to analyze images and generate tags according to a prompt. Another option is to train image classifiers on top of