Case Study:
Automated Fraud Prevention

Microservice for automated fraud detection and prevention in accommodation portals

Customer

Funke Digital, with its brand Passion4Gästezimmer (P4G), operates several well-established online platforms for accommodation listings, including monteurzimmer.de and pension.de. The company acts as a neutral intermediary between those seeking accommodation and providers, with all bookings and payments handled directly between the involved parties. With this open model, P4G enables straightforward contact and flexible payment arrangements. However, it also faces challenges regarding fraud prevention. Because transactions on the platform are largely unregulated, it is especially important for P4G to maintain user trust and detect and prevent fraudulent activity at an early stage. The increasing complexity and high volume of transactions present the company with the ongoing task of safeguarding both the security and quality of its services.

Project

Until the start of this project, P4G relied exclusively on manual verification by customer support staff. Every new or modified listing was reviewed and approved by hand, which was not only resource-intensive and prone to errors, but also led to considerable delays in activation, especially during peak times. The client wanted to make this approval process more efficient, relieve the support team, and simultaneously enhance security by automatically identifying suspicious listings as early as possible. The goal was to automate as many of the recurring heuristic checks—previously performed manually by staff—as possible and to translate them into a transparent scoring system. This technical support would allow for quick assessment of new and modified listings and direct manual checks toward cases that appeared suspicious. Alongside reducing workload and fraud cases, a major objective was a clear increase in process speed.

Implementation

CosmoCode developed a modular anti-fraud system for Funke Digital / Passion4Gästezimmer based on microservices, seamlessly integrating backend and frontend components to largely automate fraud prevention. Python/Django and Django Rest Framework were chosen for the backend. Redis serves as a caching solution to efficiently store data and third-party API requests, thereby increasing performance and reliability. Besides the proprietary P4G API, the system communicates with a variety of external APIs such as Google Maps, ProxyCheck.io, StopForumSpam, and TinEye.

Integration into the P4G support portal is achieved using a web component widget built with React and TypeScript. This widget handles authentication via JWT tokens, displays the overall fraud score, and, upon request, provides detailed inspection reports. The widget assists the support team with ratings, actionable feedback, and clear recommendations.

A particular highlight is the modular data processing architecture in the backend: various modules—including analyses and ratings of email domains, matching IP addresses against proxy and VPN lists, address validation via Google Places, image verification through EXIF analysis, GPS matching, and reverse image search—are executed mostly in parallel. Each module processes data independently, calculates individual scores, and presents results transparently in both German and English. Thanks to its resilient design, failures in individual modules do not interrupt the overall scoring process, which increases system stability and reliability. To minimize response times, frequently requested queries and results are cached using Redis.

This solution is highly extensible: new verification modules can be added quickly, allowing the system to adapt rapidly to changing fraud patterns. The scoring system is also easily adjustable. As a standalone microservice, it maintains minimal coupling with P4G’s core business system, greatly simplifying maintenance and further development.

Kunde
Funke Digital / Passion4Gästezimmer (P4G)
Zeitraum
2024 - 2025

We can also implement your project!

Do you want to implement a similar project? Or do you have a completely different idea? Talk to us and we will find the best solution together.