Case study
Safe House — Real Estate Platform (Website + Agent Portal)
Strategic focus · Self-hosted Armenian real estate platform with 15-layer market-specific search
Custom React/Node.js platform replacing a broken WordPress site — public discovery with 15-layer filtration, 3-step agent listing flow, branch-isolated admin portal, and real-time analytics across 607 active properties.
Role
Lead PM · Development Manager · QA Oversight
Duration
6 months
Delivery
Full Agile — design through production
Team
2 Developers (FE/BE) · 1 Designer · 1 QA
Market
Armenia (hybrid — on-site + remote)
Domain
Real Estate · SaaS · B2B
607
Active Properties
91,786
Total Property Views
4,072
Properties Shared
3
Languages Supported
The problem
Safe House was managing their entire property portfolio on a broken WordPress site — constant performance issues, no data ownership, no agent accountability, and no analytics. Agents had no centralized tool to manage their listings, track inquiries, or update statuses. The business was growing but their infrastructure couldn't support it.
Problem Statement
What was broken — and what we built instead.
Before Safe House
- Broken WordPress site — frequent stucks, poor performance, shared hosting
- No data sovereignty — client's property data on third-party servers
- No agent portal — property listings managed manually, no accountability per agent
- No analytics — no way to track views, shares, or listing performance
- No inbox system — inquiries from property pages lost or manually tracked
- No branch structure — all agents in one flat environment
- Single language — excluding Russian and English-speaking clients
Safe House Solution
- Custom self-hosted React/Node.js platform — client owns all data and server
- Role-based agent portal — each agent manages only their own listings and inbox
- Branch isolation — Dashboard/My Properties/Inbox/Contacts/Users/Branches per role
- Real-time analytics dashboard — total views (91,786), shares (4,072), active properties (607)
- 15-layer search and filtration system across 6 property categories
- 3-language support: Armenian, Russian, English — per listing title and description
- Yandex Maps integration — pin-point property location on interactive map
Discovery
Research & Discovery
Client workshops, Armenian real estate buyer research, and third-party API discovery (Yandex Maps) — before specifying the custom React/Node.js platform.
Delivery
Execution & Artifacts
Public website
Public Website — Hero & Search
The public-facing website is the primary discovery surface for buyers, renters, and daily rental seekers. The hero search is designed for immediate engagement — property type, transaction type, province/district, room count, and sq/m range all accessible from the landing screen without navigating away.
Public website hero
"Discover your safe home" — navigation (Sell/Rent/Daily rent), address search bar, property type tabs (Apartment/House/Commercial/Land), Province/District dropdowns, Number of rooms (Studio Apt to 5+), sq/m range slider, More Filter and Search CTAs — 3 languages, USD currency toggle, phone number CTA in header.
Filtration & listing
Filtration & Property Listing Flow
Filtration and listing work as one product loop: buyers search with the 15-layer panel, agents post through a 3-step flow (Fill In → Preview → Post), and every published property feeds back into the same filter dimensions. Progressive disclosure keeps casual browsers light while power users get full Armenian-market depth.
Listing page screen
Address with Yandex Maps pin, Province/District fields, title in 3 languages (Armenian/English/Russian), description in 3 languages, Best offer? checkbox, social media URLs, photo drop/upload zone, Preview CTA.
Step 1: Fill In
Category (Buy/Rent/Daily rent), Type (House/Apartment/Commercial/Land), House Type, Building Type (Stone/Bricks/Wooden), rooms/bathrooms/floors counters, Renovation level, Utilities checklist, Additionals (Garage/Parking/Security/Intercom/Fireplace/AC/Pool/BBQ), Price (USD), Land surface + House area (sq/m), custom ID generation.
15-layer filtration
Buy/Rent/Daily rent, property type (Apartment/House/Commercial/Land), Investment/New Construction/By Developer checkboxes, Province (all 11 Armenian provinces), District (per selected province), Price range slider, Number of rooms (Studio Apt to 5+), Construction type, Floor area sq/m range, Renovation, Utilities, Additionals — same system used after each property goes live.
Step 2: Preview
Full listing as it appears to buyers: property photo, price, address, rooms/bathrooms/area/floors/renovation, building features (Yes/No per item), agent card with WhatsApp/Viber icons, contact form, Edit or Post CTAs.
Step 3: Post
Listing thumbnail, property type, address, rooms/bathrooms/area, "Are you ready to post?" review prompt, Cancel / Post CTAs.
Admin portal
Agent Admin Portal
The admin portal is the operational backbone. Each agent works in an isolated environment — only their own listings, inbox, and contacts. Branch managers see their branch. Super Admin sees everything.
My Properties
All/Buy/Rent/Daily Rent/Draft/Archive tabs, search by Property ID or Address, listing cards with photo, publication date, views/shares/favorites counts, property type, full address, rooms/bathrooms/area, price (USD), Update CTA — real data across Yerevan districts.
Analytics & profile
Analytics & agent profile
Analytics dashboard
Total Watch (91,786), Share (4,072), Active properties (607), yearly property views bar chart (2023–2026) showing platform growth — all real production data.
Profile settings
Full name, email, phone number with messenger selector (Telegram/WhatsApp/Viber/Messenger) per phone — agents attach multiple messaging channels shown on listing detail pages.
Architecture Decision
5-Tier RBAC with Branch Isolation
Key architecture decisions shaped for full data ownership, branch isolation, and the Armenian/Russian-speaking market.
Super Admin
Full platform visibility
Branch Manager
Branch-scoped data
Agent
Own listings & inbox
View-only
Read-only access
- Self-Hosted — custom React/Node.js on client-controlled server; full data ownership, no third-party dependency.
- Branch Isolation — agents cannot see other branches' listings, inbox, or contacts; 4-level permission model.
- 3-Language Listings — independent title and description in Armenian, Russian, and English per listing (manual entry, not auto-translated).
- 15-Layer Filtration — Armenian provinces, construction types, and utility configurations at depth international platforms lack.
- Messenger Integration — Telegram, WhatsApp, Viber, and Messenger attached to agent phone numbers on listing pages.
- Yandex Maps — chosen over Google Maps for better local coverage, faster load, and familiarity with the primary user base.
My role
What I owned vs what I delegated
My Ownership
- Full product discovery — client workshops, requirements gathering, problem definition
- System architecture — permission model, branch structure, data ownership strategy
- Feature specification — every screen, every field, every validation rule
- 15-layer filtration system design — researched Armenian real estate market specifically
- 3-step listing flow design — engineered to prevent data quality issues
- Development management — technical tasks to 2 developers across Agile sprints
- QA oversight — acceptance criteria definition and UAT
- Stakeholder communication — hybrid delivery with client team on-site and remote
- API research — Yandex Maps integration specification
Team Execution
- 1 Front-End Developer — React implementation from my specs
- 1 Back-End Developer — Node.js API and database from my architecture
- 1 Designer — visual execution from my UX direction
- 1 QA — test execution against my acceptance criteria
Outcomes
Impact & Metrics
Approach
- Led full product discovery — client workshops, requirements gathering, and problem definition.
- Specified system architecture — permission model, branch structure, and data ownership on client-controlled servers.
- Designed 15-layer filtration researched specifically for Armenian real estate buyer behavior.
- Engineered 3-step listing flow (Fill In → Preview → Post) to prevent incomplete or misclassified listings.
- Managed 2 developers across Agile sprints with QA oversight and hybrid stakeholder delivery.
- Specified Yandex Maps integration and 3-language listing structure (Armenian, Russian, English).
Outcomes
- Custom self-hosted React/Node.js platform — client owns all data and server.
- Role-based agent portal — each agent manages only their own listings and inbox.
- Branch isolation — Dashboard, My Properties, Inbox, Contacts, Users, and Branches per role.
- Real-time analytics — 91,786 total views, 4,072 shares, 607 active properties (production data).
- 15-layer search and filtration across 6 property categories.
- 3-language support per listing title and description — Armenian, Russian, and English.
- Yandex Maps pin-point property location on interactive map.
Skills demonstrated
PM competencies proven in this project
Product Roadmap
6-month end-to-end delivery — discovery through production, zero scope creep
Agile/Scrum
Sprint planning and backlog management across 4-person cross-functional team
Technical PM
React/Node.js stack, Yandex Maps API, server architecture, branch permissions
User Research
Armenian buyer behavior informed market-specific 15-layer filtration
KPIs/Metrics
Analytics dashboard — views, shares, active listings per agent and branch
Stakeholder Mgmt
Hybrid delivery over 6 months with Armenian-speaking client
QA/UAT
Acceptance criteria per feature — zero post-launch critical bugs reported
Go-to-Market
3-language support and Yandex Maps for Armenian/Russian-speaking market
Platform Capabilities