Catalog Website and CRM System for the M2 Group Real Estate Agency

A real estate catalog website with a CRM system and AI-assisted catalog management for the M2 Group agency in Kyiv.

m2group.com.ua
M2 Group real estate agency homepage in a browser window
Category
Catalog Websites / CRM Systems · 2026
Development time
2.5 months
Client

About the client

M2 Group is a full-cycle real estate agency based in Kyiv. The team helps clients buy, sell or rent apartments, houses, townhouses and commercial premises in Kyiv and its suburbs — Irpin, Bucha, Boryspil — and supports each deal from the first shortlist to the signed contract. Before the project, listings lived in Excel and messengers, every website card had to be filled in by hand, and requests from different channels got lost: there was no single place to see a client, their request and the properties offered to them.

M2 Group property catalog with filters by deal type, city, rooms and price
M2 Group property catalog with filters by deal type, city, rooms and price
Property page: attributes, apartment variants with UAH and USD prices and the manager contact
Property page: attributes, apartment variants with UAH and USD prices and the manager contact
Homepage categories block: houses, apartments, townhouses with listing counts
Homepage categories block: houses, apartments, townhouses with listing counts
Goals and Tasks

Goals

Replace Excel and messengers with one system: a public catalog for clients and a CRM for realtors, connected to each other, plus a fast way to add listings without filling in dozens of fields by hand.

01

Catalog website from scratch

Design a real estate catalog with filters, a map and property pages.
02

Flexible dictionaries

Categories, attributes, cities, districts and residential complexes the agency manages itself, no developer needed.
03

CRM for realtors

Buyer/tenant and owner pipelines, shortlists and viewings in one card.
04

No lost requests

Turn website requests into leads automatically, with source and UTM tags.
05

AI-assisted listings

Let realtors add and edit listings through an AI assistant.
06

Prices and photos

Show prices in UAH at the current exchange rate and protect photos with a watermark.
What we built

Key solutions

AI-assisted catalog management

The project's main advantage. A realtor describes a property in plain words in ChatGPT, Claude or Gemini (or triggers an n8n workflow), and the assistant uses the secured catalog REST API to pick the category, city, district and residential complex, fill in the filter attributes, write the title and description in Ukrainian and Russian and generate the SEO title and description. A new complex or district that is not in the dictionary yet is created automatically, and the assistant reports what is still missing (photos, for example). The listing lands in the CRM as a draft — a person reviews and publishes it. The same assistant can find a listing by its database number and update the price or status.

How the M2 Group catalog is filled via an AI assistant: realtor request, API call and CRM draft

AI-created listings in a familiar admin panel

Everything the assistant creates shows up in the CRM listings table next to manually added properties: search by title, address or database number, filters by category, city and status, photo and view counts. Listings without photos stand out right away in the Photo column, so the realtor knows which ones still need pictures before publishing.

M2 Group CRM property list with search, filters, prices and statuses

Photos: watermark and optimisation on upload

Realtors simply drag photos from a phone or camera — up to 25 MB each, several at once. The server does the rest: it rotates the image by its EXIF orientation, converts CMYK to sRGB, scales it down to 2000 px on the long side, places a semi-transparent M2 Group logo in the centre (60% of the width, no more than 30% of the height) and saves it as WebP without metadata, so geolocation and camera data never reach the website. A light 900 px preview is prepared for catalog cards, and a 1200×630 JPEG og:image for social networks and messengers is generated on the first page view. Originals without the watermark are kept in a folder closed to the web: if the agency changes its logo, every photo is rebuilt without re-uploading. Photo order is changed by drag and drop (the first one is the cover), and the «Download all (zip)» button exports an archive for posting on other platforms — already watermarked.

Photo block in the CRM property form: drag-and-drop upload, M2 Group watermarked photos, cover and zip download

Attributes and filters for every category

Apartments, houses, townhouses and commercial properties need different parameters, so attributes are not hard-coded: the agency adds them to the dictionary and binds them to categories. Each binding defines whether the attribute is a catalog filter, an extra filter, a row on the property page or a badge on the card. New-build listings support variants — several identical apartments in one building, each with its own area, floor, price and stock.

CRM property form: house attributes — rooms, area, walls, heating, renovation, backup power

Real estate agency CRM: two deal pipelines

Buyers and tenants move through their own pipeline — from New through shortlisting, viewing and negotiation to deposit and a closed deal — while owners have theirs: inspection and valuation, contract, listed in the catalog, sold or rented. Every website form knows which pipeline a request belongs to: «Get a valuation» on the Sell page creates an owner lead. The lead card shows the page the request came from, its source and UTM tags (first touch is kept for 30 days and a new ad click overrides it), and several managers get a Telegram notification instantly. When a lead is lost, the CRM asks for the reason.

CRM lead card: client contacts, request page with UTM tags, pipeline, deal type and source

How the CRM lead kanban works

Leads open as a Vue.js kanban board: a column is a pipeline stage, a card is a lead. Each card shows the number, name, phone, request summary and badges — rent or purchase, budget, source, next contact and viewing dates, number of offered properties and files. The contact date is colour-coded, so overdue follow-ups are visible without opening the card. Stages change by drag and drop (vuedraggable on SortableJS): the CRM saves the new stage and the card order within the column right away, logs the event in the client history, and if a lead is dropped into «Lost» it opens the card and asks for the reason. Above the board there is a pipeline switch (Buyers & tenants / Owners), filters by deal type and source, search by number, name or phone, and a «Today» button listing today's viewings and calls. Closed deals stay on the board for 60 days to keep columns clean; older ones are available via search or the list view, and the selected pipeline and view are remembered.

Lead kanban board in the real estate agency CRM: buyer pipeline stages, cards with source and dates

Shortlists and viewings inside the lead card

A realtor attaches catalog properties to a lead by searching by title, address or database number and tracks the status of each one: website request, offered, shown, liked, rejected. Viewings are scheduled right there for a property or any address, files such as contracts are attached, and the full history of calls and comments stays in the client card — a new manager can pick up the deal without asking around.

«Properties for the client» block in the lead card: offered apartments with statuses and viewing scheduling

One client base without duplicates

Phone numbers in any format (0…, 80…, +38…) are normalised, so a repeat request from the same person does not create a duplicate: the CRM finds the client by phone or e-mail, fills in only empty fields and adds a new role — buyer, tenant or owner. The list shows the source, leads in progress and files, and every deal is one click away from the client card.

Client list in the real estate agency CRM: contacts, client roles, source, active leads

Catalog map with automatic pins

The catalog switches between a list and a map (Leaflet + CARTO): properties are clustered and pins show prices. Nobody looks up coordinates by hand — the pin is placed by address on save, including listings created by the AI assistant. If the geocoder gets it wrong, the realtor drags the pin in the property form.

M2 Group property catalog on a map of Kyiv and suburbs with clusters and prices

UAH prices at the PrivatBank exchange rate

Realtors enter prices in US dollars, and the website also shows them in hryvnias at PrivatBank's non-cash rate, updated daily; the catalog filter lets visitors switch currency. Featured properties for the homepage are marked with a single toggle in the CRM, and badges such as «Discount» are picked from a list.

«Featured offers» block on the homepage: property cards with UAH and USD prices and watermarked photos
Result

Result

The agency now runs its catalog website and CRM as one system on our Atom CMF: a listing created in the CRM appears in the catalog and on the map right away, and a request sent from a property page lands in the lead pipeline together with that property, its source and UTM tags. Realtors add new listings through the AI assistant: the description, attributes, SEO tags and map pin are generated automatically, leaving a person to add photos and publish.

  • Technical specification2 weeks
  • Custom turnkey design1 month
  • Front-end markup2 days
  • Website, CRM and catalog API development2 weeks
  • Development time2.5 months
Team
  • Project Manager / Analyst
  • UI/UX Designer
  • Front-end Developer
  • Back-end Developer
Technologies
  • PHP 8.2
  • CodeIgniter 4
  • CMF Atom
  • MySQL
  • Vue.js
  • Bootstrap
  • HTML
  • CSS
  • JavaScript
  • REST API
  • OpenAPI
  • Leaflet
  • CARTO
  • Telegram Bot API

Website and CRM pages

the end.

That's it for this case. We'd be glad to work on your project next!

Telegram
Write us on Telegram We reply within 5 min