Real Estate CRM, Limassol
About 80 agents ran the busiest agency in the city on ten Telegram groups and a set of spreadsheets.
- 80
- agents off Telegram
- ~1 hour
- lead response, from about half a day
- 2.5 years
- in production
- Region
- Limassol, Cyprus
- Role
- Tech lead
- Duration
- 2022 – 2024 · 2.5 years
- Status
- Handed off.
- Team
- 2 junior developers
What was broken
The agency was the busiest in Limassol. Its operating system was ten Telegram groups and Google Sheets. The founder posted listings into each group by hand and collected replies by hand.
A lead that came in at noon got an answer in the evening, when an agent finally scrolled back through the group. Repeat clients were not recognized. Nobody knew the history of a property.
The segment was premium rentals, sales and offices. Each property carried a lot of information and a lot of conversation. All of it lived in chats.
What I did
Build native instead of buying a CRM
Django, Mongo, Python bots. A CRM with lead history, property history, who is working which property, and competitor tracking.
WhyThe founder needed dozens of small features that off-the-shelf CRMs either did not have or sold in their most expensive tier. Every micro-feature became one more reason to own the code.
The bot picks when to post
An agent adds a listing to a queue. The bot chooses the time window and posts to the agency's own Telegram groups. Spam, competitor and scraper protection on the groups came with it.
WhyPosting by hand was the founder's full-time job. The groups grew once the timing became consistent.
An auto-responder that chooses, not writes
First-line answers in the groups came from an algorithmic responder with GPT-3.5, later GPT-4, choosing between prepared answers.
WhyMost first questions are the same. The model only had to pick, so it could not make promises.
Parse the listings portal, do not retype it
A parser for Bazaraki, the main local portal, with bot protection on the other side. It was the hardest scraping I had done at that point.
WhyA new listing had to be in the CRM minutes after it appeared on the market. That is the whole business.
Follow the agents to the phone
Once bots handled selection and posting, agents' work became calls. Calls were recorded, attached to leads and reviewed by managers.
WhyThe CRM has to live where the work is. The work moved.
Proof
- 80
- agents off Telegram
- ~1 hour
- lead response, from about half a day
- 2.5 years
- in production
Listings in, leads out, everything logged.
What I would do differently
Define the support boundary in the contract before the first line of code. Years of small post-handoff requests are a contract problem, not a code problem.
Stack
- Python
- Django
- MongoDB
- Telegram Bot API
- OpenAI GPT-3.5 / 4
- AWS
Tell me what is broken.
I will tell you what I see.
30 minutes. You describe the system, I ask questions. No pitch.