Decide what qualifies before anyone falls in love with a flat
Three friends have been looking for four months and shortlisted nothing. Every listing dies within a day, because nobody wrote down what each of them actually needs before they started looking. HouseMatch is the missing step.
Each person fills in the same form privately, in a Telegram chat with the bot. Nobody sees anybody else’s answers. When all three are in, the bot checks every listing against every stated requirement and posts the options that survive — each one showing what each person gets and what each person gives up.
It does not pick the flat. It ends the argument about whether a place even qualifies, so the only conversation left is which compromise they want to make.
lift === true says no to a
fifth-floor walk-up, and a model asked “would this work for someone with a knee
condition?” eventually says it’s probably fine.
How it works
1 · Everyone answers alone
Each person messages the bot privately and answers eleven questions: the most she can pay, areas she rules out, what the building must have, and every place she needs to be able to reach within a stated number of minutes.
Nothing reaches the group at this stage. That is the point — no listing gets judged one objection at a time.
2 · The rules run
Every listing is checked against all three sets of answers at once. Anything that breaks somebody’s non-negotiable is out, and the rejection is recorded against the person and the reason.
Where a listing simply doesn’t state something, the answer is needs verification — never a pass.
3 · The group sees everything together
Two or three qualifying flats arrive in the group chat, each with a per-person breakdown and a note on who is carrying most of the compromise. Everyone votes interested, discuss or reject.
If nothing qualifies, it says so and names the limits doing the eliminating, rather than quietly relaxing one to fill the list.
Three rules that are easy to get wrong
| Rule | Why it matters here |
|---|---|
| Affordability is per person, never pooled | Each share is checked against that person’s own ceiling. Adding three budgets together and comparing the total to the rent would pass flats that quietly overcommit whoever has the smallest budget. Under an equal split the tightest ceiling in the group sets the rent limit for everyone, which is worth saying out loud. |
| Unknown is not yes | Portal list views genuinely omit lift and parking much of the time. A missing field becomes an open question attached to the option, never a satisfied requirement. |
| Ranked on the worst-off person | Options are ordered by how the person doing worst out of them fares, not by the group average. A flat that delights two people and punishes the third scores well on a mean, and is exactly the outcome this group has spent four months failing to avoid. |
The worked example
This is the live engine, running in your browser on 55 real NoBroker listings and the three profiles from the case. The same code decides what the bot posts to the group.
Running it yourself
The bot needs a Telegram token and a webhook. Both are in the README in the repository, and /api/health reports exactly which pieces are configured on this deployment without echoing any secret.
Once it is live: each person opens a private chat with the bot and sends
/start; the bot is added to the group and sent /usegroup once so it
knows where to post.