A technical deep-dive published on a developer platform examines the architecture of an n8n workflow designed to parse and monitor real-estate listings. The author stresses that the article is neither a customer case study nor a deployment report, but rather a transparent discussion of integration patterns, comparison logic, and the potential role of Luna Decisions API.
The minimal viable contour begins with a Telegram bot trigger or cron schedule that calls an HTTP Request node to fetch listings. Data then passes through Hata_Normalizer to produce flat records containing ad_id, link, price in USD and local currency, room count, area, floor, building year, district, address and publication time. Previous state is read from Google Sheets, which simultaneously serves as a human-readable dashboard and persistent storage.
The core Dispatcher node compares incoming items against the stored snapshot. New advertisements receive the label “НОВИНКА”, price reductions are tagged with the exact drop amount and a coarse bucket, while items absent from the latest full scan are marked “ПРОДАНО/СНЯТО”. The author notes several practical safeguards: null prices must be excluded from calculations, publication dates must be validated, and missing links should be stored as null rather than fabricated URLs.
After the Dispatcher writes both the updated vitrine and an event journal, a Build_Prompt node assembles statistics and filtered events for a conventional language model that produces a human-readable Telegram summary. The author argues that this textual summary is useful for periodic review, yet insufficient when the goal is to trigger separate notifications; a machine-readable decision is required instead.
The discussion then turns to OpenAI GPT-6 Luna Decisions and its Decisions API, which returns typed scores (noul, choice, score) together with a shared state object. The writer proposes inserting an experimental branch that feeds only price-change events possessing valid numeric deltas to the new endpoint, records the model response, and applies a fallback to the existing rule-based path if the call times out or returns an error. No automatic notifications are generated from the experimental branch during the initial test phase.
Several open questions are posed to the community: whether the additional latency and cost of a dedicated Decisions API are justified compared with ordinary structured outputs or simple numeric thresholds; how to handle partial crawls that falsely mark listings as removed; and whether currency-origin data and multi-observation price history should be supplied before any model is asked to classify a price movement.


