CRM2ME
From scattered listings to connected intelligence.
The problem
Listings arrive as text, photographs and messages across different sources. Agencies need consistent records, meaningful search and clear ownership of their data.
What I built
I built multi-stage extraction and validation, source-aware property discovery, asynchronous workers and a hybrid retrieval pipeline combining semantic and lexical search.
Engineering outcome
Structured filters and independent PostgreSQL authorization checks keep search results within the correct agency scope. Unknown fields remain explicit and external publication state is tracked separately.