Kerencia
A self-hosted rental search that checks property portals on a schedule and ranks listings against conditions I write in plain language.
Kerencia came from looking for an apartment in Buenos Aires. I wanted to write down what mattered to me and have something keep checking the rental portals. My partner and I could then review the same list, like properties, and discard the ones we did not want.
It is a self-hosted service driven by the agent I already use. I describe areas and conditions in plain language. The agent turns them into a saved search and learns how to use each portal. Kerencia handles the scheduled runs and keeps the ranked results in a Spanish web app that works on a phone.
I kept open-ended reasoning outside the service. Exploring a changed portal belongs to the external agent through MCP. Kerencia uses typed model judgments where a condition needs interpretation, and code where the answer can be calculated from listing data. It does not need a general-purpose model to decide every step of a scheduled run.
The agent saves what it learns about a portal as a recipe. All searches on that portal share it. Kerencia can replay the recipe without a model, so a search keeps running after the agent's conversation ends. A repair also fixes the shared recipe rather than leaving separate copies in each search.
Saving a recipe does not activate it. A trial checks the candidate before scheduled searches can use it. That matters because the agent learned from pages controlled by someone else, and those pages can change or contain misleading instructions.
A listing I can still reject
The decision I care about most is how Kerencia handles doubt. A hard condition excludes a listing only when the evidence confidently says it fails. Missing information stays unknown. It does not become a reason to hide the property.
Showing me a bad match costs a review. Hiding a good match means I may never know it existed. The same rule shapes duplicate detection. Kerencia merges listings only with strong evidence that they describe the same property. A doubtful match can stay separate, even if that means seeing a duplicate I thought I had discarded.
Portal access has limits. Kerencia uses an ordinary headed browser, follows robots.txt, and waits between page loads. If a portal blocks it, it asks for attention. I chose to accept an interrupted search instead of adding ways around a portal's refusal.
The current service includes scheduling, ranked review and recipe maintenance. Agent tasks handle work such as a missing recipe or place mapping. Notifications are reserved for things that need my attention, including a challenge I must solve myself. A routine successful search does not need to send me another message.