MA
← Selected systemsENGINEERING CASE STUDY

Automation · state reconciliation

Centris Property Monitoring

A scheduled n8n workflow that discovers the full listing result set, reconciles it against persisted state, validates detail records, and sends controlled Telegram alerts without collapsing discovery, persistence, and notification into one fragile script.

ContributionSolo · designed and built end-to-end
Stackn8n · REST · Google Sheets · Telegram · JavaScript
Workflowv8.1 · 28 nodes · 9 code nodes · 15-minute monitoring cycle

Operational proof

From a real source listing to a stateful downstream alert.

The same monitored property appears at the source boundary and in the Telegram notification path. The workflow also distinguishes a first-seen listing from a later price transition instead of treating every poll as a fresh event.

01 · SOURCE STATEObserved listing
Centris listing page for a monitored quintuple property priced at $1,825,000
02 · DOWNSTREAM STATETelegram delivery
Telegram channel showing a new Centris listing alert and a subsequent price-change alert for the same property

Hard part

The difficult problem was not sending Telegram messages. It was preserving truth when the source was restrictive and changed underneath the workflow.

The monitor had to survive changing request contracts, session-bound discovery, pagination, remote-source volatility, and automation-runtime differences without turning incomplete data into false NEW or PRICE alerts.

01

Source contract drift

Remote request shape and runtime assumptions changed during implementation. The workflow isolates discovery and validates the returned set before classification.

02

Incomplete-set risk

A successful HTTP response is not enough. Pagination cardinality and state overlap are checked before the observed set is trusted.

03

Automation-runtime drift

Code-node behavior is written for the actual n8n execution environment rather than assuming every browser or Node global is available.

04

False-alert prevention

Persisted listing state, explicit change classification, bounded processing, and delivery status prevent repeated side effects from becoming the product.

Run model

A stateful monitor with separate failure boundaries.

Design decisions

The workflow is organized around failure semantics, not diagram aesthetics.

01

Treat source drift as an operational risk

The monitored source changed request behavior and runtime assumptions during development. Discovery therefore has explicit contract checks, bounded retries, and data-quality gates instead of assuming the remote surface is stable.

02

Persist before notification

State is committed before the external message path so a Telegram failure cannot make the next run rediscover the same listing as if it were new.

03

Discover the set before enriching records

Full pagination and set reconciliation happen before expensive detail calls, preventing a partial page from becoming the system's market truth.

04

Pace side effects deliberately

Per-listing enrichment and notification are bounded, sequential where needed, and delayed between external side effects rather than emitted as an uncontrolled burst.

Benchmark surface

What the monitor is designed to measure.

MEASUREMENT CONTRACT

A monitoring run is successful only when the observed market set is complete enough to reconcile state without false new/change alerts.

Full-set pagination checks, state-overlap gates, source-contract regression fixtures, notification replay, and end-to-end listing-to-alert verification.
01Set coveragediscovered count vs planned pages
02Cycle latencyschedule → reconciled state
03Change fidelityNEW / PRICE / unchanged classification
04Duplicate alertsrepeat-notification prevention
05State integritypersist-before-notify semantics
06DeliveryTelegram acknowledgement + status

Evidence

Artifact, workflow, and operational evidence.

SignalEvidenceInterpretation boundary
Workflow nodes28VerifiedStatic audit of the packaged v8.1 workflow.
Code-node syntax9 / 9VerifiedSyntax validation only; not live workflow execution.
Reachability28 / 28 nodes reachable from triggersVerifiedStatic workflow graph audit.
Centris request contractHTTP 200VerifiedSingle sampled live debugging response.
Operational notificationNEW LISTING + PRICE CHANGE delivered to TelegramVerifiedUser-provided operational capture from the monitored workflow.
Source-to-alert match$1,825,000 listing state appears at source and downstream alertVerifiedThe public case study uses a single sanitized observed property as an artifact-level trace, not a market-wide accuracy claim.