Commercial-real-estate scouting against technical requirements: criteria-based analysis, data collection and reconciliation
A single criteria-based summary instead of trawling links: every property described by one set of fields, scored against one checklist, and comparable to the rest on a normalized rate
Context
The commercial-lease market is organized around standard scenarios — office, retail, warehouse. The moment a tenant has special technical requirements, standard search tools stop working: classifieds can't filter by ceiling height, hall configuration, engineering capacity, or acoustic surroundings. Listings are written in the seller's language, while the decision has to be made on operational criteria that are either absent from the listing cards or hidden in the photos and caveats. As a result, selection degenerates into a manual trawl through dozens of incomparable offers.
For a nighttime entertainment venue this gap is at its maximum. The format imposes a hard and poorly compatible set of requirements on the space: ceiling height from 4–5 meters with an ideal of 6+, a large column-free hall, ground floor or a standalone building, no residential development in the immediate vicinity because of the noise load, and serious headroom in electrical capacity and ventilation. None of these parameters is a standard search filter, and most of them owners don't state at all — they have to be reconstructed from indirect signs.
The third layer of the problem is data closure. The largest listing source systematically resists automated access: programmatic requests get a 403, interactive sessions hit a CAPTCHA, and there is no legal API for exporting listing cards. The classic path of "write a scraper and aggregate the market" is closed here by construction. Any engineering process on top of such a source has to be designed around a semi-manual data-intake channel — and still not lose analytical rigor.
The task
A private investor in an entertainment venture was selecting a space for a cabaret-format venue and sending a stream of scattered material: listing links, screenshots of cards, his own notes. The task was to turn this stream into a manageable decision process — a single summary where every property is described by one set of fields, run through one checklist, and comparable to the rest on a normalized cost metric.
The second part of the task was not just to collect the data but to deliver a reasoned suitability verdict on each property for the specific operating scenario and to group the suitable options into strategic alternatives: what to choose if the priority is location and status; what if it's hall geometry and stage; what if it's speed of launch and budget. The outcome is not a table for its own sake, but a tool that replaces emotional trawling with a structured choice between clear scenarios.
A separate constraint was fixed from the outset: no circumvention of the source's technical protections. Data arrives only through legal means — from screenshots and material the client obtains as an ordinary user. The rigor of the methodology has to compensate for the imperfection of the channel.
Approach
The first decision: the criteria model is fixed before data collection begins. The checklist is defined in advance and doesn't change from property to property: ceiling height, presence of a large column-free hall, floor and placement type, residential surroundings, electrical and ventilation headroom. Every new property is run through the same axes, and ranking goes by criteria rather than the impression from the photos — a classic real-estate trap where a striking interior in the frame outweighs low ceilings and a residential building behind the wall.
The second decision: cost normalization. Monthly lease rates in the sample differ several-fold and say nothing on their own: an expensive property may turn out cheap per square meter, and vice versa. The main comparison metric became the rate per square meter per month — and it immediately exposed the real market picture: a spread from 1,500 to 5,725 RUB/m², nearly fourfold within one sample for one and the same function. The cheapest property by rate also turned out to be one of the largest and with the best hall geometry.
The third decision: the data channel. Since the source blocks programmatic access, data is extracted from screenshots of listing cards via multimodal analysis: an image is turned into structured fields — area, floor and building height, price, address, condition, and property features, deal terms. The client sends screenshots with his notes, the system parses them into a card and updates the summary. This channel is slower than a scraper, but it is fully legal, independent of changes to the anti-bot protection, and will outlive any change in the source's markup.
Summary architecture
The project's central artifact is a single analytical HTML document that lives on the client's side and updates as properties come in. The core of the document is a comparison table: area, price, address, normalized RUB/m² rate, a suitability verdict for the target scenario, and an expanded criteria checklist for each property. The table reads in minutes and answers the main question — which properties even deserve a viewing.
A property card records not only numeric fields but also qualitative signs that determine the economics of launch: a ready fit-for-purpose interior, a banquet hall, a standalone mansion, a basement level, building class, transport access, the size of the agent's commission. The "ready interior for the target function" sign turned out to be one of the weightiest: it converts directly into months and budget that won't have to be spent on renovation. In the sample, such properties were found in three different price segments.
On top of the table sits an audit section with scenario baskets. Basket A — a premium location downtown: maximum rate, prestige surroundings, ready for the format. Basket B — best geometry: a property with an 11-meter ceiling and the lowest rate per meter, the trade-off being not a ground floor. Basket C — fast start and budget: ready interiors of smaller area or a basement level with a large area at a low rate. The document is live: properties get statuses, filtered-out options return to play by the client's decision, cards with incomplete data are explicitly flagged and excluded from ranking until completed.
Verification and data quality
A semi-manual intake channel creates a specific class of risks unfamiliar to classic scrapers: a screenshot may be incomplete, the client's note may diverge from the listing text, and one property's parameters may arrive across several sessions days apart. So the methodology has a reconciliation loop built in: each extracted field is compared with data already accumulated for the same property, discrepancies are not silently overwritten but raised for an explicit decision. Identification is done by listing number — the only stable key that survives a price change and the seller editing the card.
The second level of control is completeness. A property card is considered complete only when all comparison-table fields and all checklist rows are closed; until then the property appears in the summary with a pending status and is excluded from ranking. This is a matter of principle: a half-empty row in the comparison table is worse than a missing one, because it creates an illusion of comparability. At the moment the sample was fixed, one property remained in a pending status and did not take part in the verdicts.
The third level is reversibility of decisions. Filtering out a property is a status, not a deletion: all the collected facts about it are preserved, and when the client reconsidered one of the early exclusion decisions, the property returned to play with its full history and no re-collection. For a process where data is mined by hand and expensively, not throwing away what was once collected is a direct saving.
Result
The summary holds seven properties with complete cards: areas from 530 to 1,750 m², floors from basement level −1 to the third floor, ceilings from knowingly low to 11 meters, rates from 1,500 to 5,725 RUB/m² per month. The spread itself confirmed the original thesis: without normalization and a single checklist these offers are incomparable, and a decision made by eye would almost certainly have been suboptimal on one of the key axes.
From the sample, a shortlist of four priority properties and three scenario decision baskets were formed. The client chooses not between dozens of links with differently formatted descriptions, but between three clear strategies with the known trade-offs of each: premium downtown versus best stage versus fast start. Every verdict in the summary is traceable to specific checklist rows — the decision can be defended before partners and investors rather than explained by intuition.
The structural effect is a change in the shape of the decision: instead of dozens of differently formatted links, the client works with one document, four shortlisted properties and three named strategies. The engineering side of the result is reproducible: the methodology — fixed criteria, a normalized metric, a legal data-extraction channel, scenario baskets — transfers to any real-estate selection against technical requirements, from production sites and medical clinics to sports facilities.
What we built
Criteria model
A fixed checklist set before collection begins: ceilings from 4–5 m with an ideal of 6+, a column-free hall, ground floor or standalone building, no residential nearby, electrical and ventilation headroom. Ranking goes by the checklist axes, not the impression from the photos.
Cost normalization
A single comparison metric — the RUB/m² monthly rate. It exposed a 1,500–5,725 RUB/m² spread within one sample and showed that the cheapest property by rate had the best hall geometry.
Legal data channel
The source blocks programmatic access (CAPTCHA, 403), so data is extracted from screenshots of listing cards via multimodal analysis: an image is turned into structured fields with no circumvention of the technical protections.
Unified property card
Area, price, address, floor and building height, building class, transport access, qualitative signs (ready interior, mansion, basement), deal terms including the agent's commission — one format for all properties.
Suitability verdict
Each property gets a verdict for the target operating scenario, traceable to specific checklist rows. The decision can be defended before partners rather than explained by intuition.
Scenario baskets
The summary's audit section groups suitable properties into three strategies: a premium downtown location, best hall geometry (11 m ceiling at the lowest rate), a fast budget start on ready interiors.
Live document
The summary updates as properties arrive: statuses, return of filtered-out options to play by the client's decision, explicit flagging of cards with incomplete data — they don't take part in ranking until completed.
Engineering challenges
The source is closed to machines
Programmatic requests get a 403, interactive sessions hit a CAPTCHA, there is no API. Instead of circumventing the protection, a legal semi-manual channel is built: the user's screenshots are parsed by multimodal analysis into structured cards.
Incomparability of offers
Monthly rates in the sample differ several-fold and don't reflect the real cost. Normalization by RUB/m² revealed a nearly fourfold spread and flipped the intuitive ranking: visually "expensive" properties turned out cheaper per meter.
The emotional pressure of photos
A striking interior in the frame outweighs low ceilings and a residential building behind the wall. A fixed checklist set before collection begins rules out bending the criteria to fit a property one likes.
Data arrives in portions
Property cards aren't filled at once: some parameters appear later, some properties return from being filtered out. The summary is designed as a live document with statuses — incomplete cards are flagged and don't distort the ranking.