All selected work

Papa Rent

One app for Dutch regulated rentals.

Brings social and mid-rent listings from different portals into one feed. Save a search, find matching homes, check eligibility and go straight to the original provider to apply.

PrototypeHousing search

01 / Ecosystem

Inside the ecosystem.

Fast listing detection with separate detail enrichment, saved-search matching and original-provider applications.

Hover, focus or select a node to see what happens there. Arrows show the direction of the work.

Selected step

Public sources
Public sources

Public housing sources

Source adapters read supported public housing listings, respecting load limits and technical access barriers.

  • Public sources leads to Collect + normalise
View capabilities

Every step, explained.

Public sources

Source adapters read supported public housing listings, respecting load limits and technical access barriers.

  • Public sources leads to Collect + normalise
Collect + normalise

Collectors normalise rent, location, area, rooms, segment, allocation model and deadline. Conditional requests and health records support repeated collection.

  • Public sources leads to Collect + normalise
  • Collect + normalise leads to Listings + events
  • Collect + normalise leads to Enrich detailsSeparate queue
Enrich details

A separate queue enriches costs, eligibility, links and geocoding. Detection does not wait for every detail request.

  • Collect + normalise leads to Enrich detailsSeparate queue
  • Enrich details leads to Listings + eventsDetail updates
Listings + events

The store records new, updated, price-changed, removed and reappearing listings, with conservative handling of partial feeds.

  • Collect + normalise leads to Listings + events
  • Enrich details leads to Listings + eventsDetail updates
  • Listings + events leads to Match new listingsNew events
  • Listings + events leads to App + listing detailFeed + facts
Saved radars

People choose area, rent, rooms, segment and tags. Shared matching logic uses saved search preferences.

  • Saved radars leads to Match new listingsSearch preferences
Match new listings

New-listing events are matched to the saved radars. Closing-soon reminders remain future work.

  • Listings + events leads to Match new listingsNew events
  • Saved radars leads to Match new listingsSearch preferences
  • Match new listings leads to Inbox + push + email
Inbox + push + email

Implemented inbox, push and email senders use duplicate prevention, quiet hours and daily digest logic. Delivery speed is not claimed as a measured achievement.

  • Match new listings leads to Inbox + push + email
  • Inbox + push + email leads to App + listing detailListing link
App + listing detail

The app brings feed, map, housing facts, allocation model and eligibility context together.

  • Listings + events leads to App + listing detailFeed + facts
  • Inbox + push + email leads to App + listing detailListing link
  • App + listing detail leads to Apply at source
Apply at source

A link opens the original provider in an in-app browser. Papa Rent does not process applications or bypass access barriers.

  • App + listing detail leads to Apply at source

Detail enrichment is separate from detection, so collection does not wait for every detail request.

The current notification matcher handles new-listing events; other event types do not imply implemented closing-soon notifications.

02 / Product

What the product does.

Dutch social and mid-rent housing is spread across many portals. People need to discover relevant listings and reach the right application page before the opportunity closes.

An implemented app, API and collection engine connect housing feeds, saved radars and notification logic.

Built for
People seeking social or mid-rent housing in the Netherlands
My role
Product concept, research and system design

03 / Capabilities

Features and capabilities.

Explore each part of the product.

Collection & listing dataBring fragmented housing supply into a common listing format.

Source adapters

Source registry and adapters for public JSON, HTML and supported rendered pages

Collection controls

Repeated collection, conditional requests, per-source load limits and run-health records

Normalised fields

Normalised rent, location, area, rooms, segment, allocation model and deadline

Detail enrichment

Separate detail enrichment for costs, eligibility and links, plus PDOK geocoding

Listing events

Events for new, updated, price-changed, removed and reappearing listings

Partial feeds

Partial-feed handling and conservative removal checks

Radars & eligibilitySave what matters to a person’s housing search.

Radar wizard

Radar wizard for municipality or province, segment, maximum rent, rooms and tags

Saved-search controls

Create, edit, pause or delete saved radars

API filters

API filters also support radius, dwelling type, allocation model and excluded labels

Shared matching

Shared matching logic between the API and collection engine

Versioned classification

Versioned market-classification rules

Eligibility context

Household, income and age information shown with listing eligibility criteria

Alerts & inboxTurn a matching new listing into a useful notification.

New-listing matching

New-listing events matched to saved radars

Notification inbox

Notification inbox with read state and listing links

Delivery channels

Implemented push and email senders

Notification controls

Duplicate prevention, quiet hours and daily digest logic

Device health

Grouped push notifications and removal of invalid device tokens

App & listing detailScan the feed, understand a property and continue at its source.

Listing feed

Listing feed with saved-radar filters

Property detail

Detail view with map, housing facts, allocation model and eligibility

Provider application

Original-provider application link opened in an in-app browser

Map previews

Map-based previews instead of copied property photos

Languages

Dutch and English interface

Target platforms

Expo frontend for iOS, Android and web; static web export documented

Account & preferencesKeep search preferences and account controls together.

Authentication

Email-and-password registration, login and persistent sessions

Profile preferences

Profile preferences for language and eligibility information

Alert settings

Per-radar push, email and quiet-hour settings

Push registration

Device registration and notification permission flow

Account controls

Account-data export, account deletion and sign-out

04 / Status

Where it stands.

The app and supporting engine are implemented as a prototype. National coverage, measured alert latency and native-device validation remain unverified. Closing-soon reminders and registration nudges are not yet implemented. Applications stay with the original provider; technical access barriers are not bypassed.

View the code on GitHub

A public copy with fictional data. The production code stays private.

Open the working prototype

Password protected. For access, email hello@rafamaretti.com.

Interface previews use illustrative data.

Next projectGood Bridge