DEV Community

Robin Beraud-Sudreau
Robin Beraud-Sudreau

Posted on

Stop doing price-per-m math by hand on property alert emails

If you follow property alerts, you know the routine: ten emails, each with a price and a surface, and you divide in your head to see whether anything is actually cheap for the area. It is boring, error-prone, and the one good listing is usually buried.

I wrote a small Hermes skill, listing-alert-triage, that does this step for you. It is one Python file using only the standard library. No API key, no network.

It reads plain text, HTML or .eml exports, finds an amount followed by €/EUR and a number followed by m²/m2, guesses the city (Lyon 69003, 33000 Bordeaux, à Lille), and computes the price per m². You provide your own reference price per m² for each city, and it ranks listings as GEM, watch or pass. Anything absurdly cheap gets a ? because that is more often a typo or a scam than a bargain. You can also exclude by min/max surface or max price, and output text, JSON or CSV.

python3 scripts/triage.py alerts/*.eml \
  --ref Nantes=3900 --ref Rennes=3400 --max-price 400000
Enter fullscreen mode Exit fullscreen mode
[watch   ] Nantes  168 000 EUR  48 m2  3 500 EUR/m2  ref 3900.0  ratio 0.90x
Enter fullscreen mode Exit fullscreen mode

Honest limits: extraction is heuristic, so check the first run against the original email. It does not value anything, and it only knows euros and square metres. I tested it on synthetic fixtures only.

The skill is MIT licensed in the hermes-skills library.


Skill (MIT): https://github.com/RobinBeraud/hermes-skills/tree/main/automation/listing-alert-triage
All skills: https://github.com/RobinBeraud/hermes-skills

This post was written with AI assistance and reviewed through automated checks.

Top comments (0)