Discover, Search, and Book Properties — Powered by Artificial Intelligence
About · Architecture · Repositories · Tech Stack · Features · Getting Started · Team
Baytology is a full-stack, AI-powered real estate marketplace designed for the Egyptian market. The platform connects property Buyers with Agents through an intelligent search and recommendation system, enabling seamless property discovery, booking, real-time communication, and secure online payments.
What sets Baytology apart is its deep AI integration — users can search for properties using natural language text, voice commands in Arabic, or even uploading an image of a property they like. The platform also features an Arabic NLP Chatbot and a FAISS vector-based recommendation engine that learns from user preferences.
Baytology follows a microservices-oriented architecture with four independently deployable services orchestrated via Docker Compose:
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ CLIENTS │
│ Web Browser (Angular 21 SPA) │
└────────────────┬──────────────────────────┬──────────────────────────┬───────────────────┘
│ HTTPS │ WSS (SignalR) │ HTTPS
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ BACKEND API (.NET 10) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────────┐ │
│ │ Identity │ │ Properties │ │ Bookings │ │ Payments │ │ AI Orchestrator │ │
│ │ (JWT) │ │ (CRUD) │ │ │ │ (Paymob) │ │ (Outbox + Fallback) │ │
│ └──────────┘ └──────────────┘ └──────────┘ └──────────┘ └─────────┬───────────┘ │
│ │ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────────────────────────────┐ │ │
│ │ SignalR │ │ Admin │ │ Background Services │ │ │
│ │ Hubs │ │ Dashboard │ │ (Outbox Processor + Recovery) │ │ │
│ └──────────┘ └──────────────┘ └──────────────────────────────────┘ │ │
└──────────────────────────────┬───────────────────────────────────────────┘──────────────┘
│ │
┌──────────▼──────────┐ ┌──────────▼──────────┐
│ SQL Server 2022 │ │ RabbitMQ 3.13 │
│ (Primary DB) │ │ (Message Broker) │
└─────────────────────┘ └──────────┬──────────┘
│
┌──────────────────────────────────────────┐│
│ AI SERVICES (Python) ││
│ ││
│ ┌────────────────┐ ┌────────────────┐ ││
│ │ 🤖 Chatbot │ │ 🔍 Image │◄─┘│
│ │ Arabic NLP │ │ Search │ │
│ │ + Voice (ASR) │ │ │ │
│ │ Port 8000 │ │ Port 8001 │ │
│ └────────────────┘ └────────────────┘ │
│ │
│ ┌────────────────────────────────────┐ │
│ │ 📊 Recommendation Engine │ │
│ │ FAISS Vector Similarity │ │
│ │ Port 8002 │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────┘
| Repository | Description | Stack |
|---|---|---|
| baytology-backend | Core API server — Clean Architecture, CQRS, DDD with 15 versioned controllers and 78 tests | .NET 10, EF Core, SignalR, MediatR |
| baytology-frontend | Single Page Application — 16 feature modules with full i18n (Arabic/English) | Angular 21, TailwindCSS 4, RxJS |
| baytology-chatbot | Arabic NLP chatbot with voice recognition (Whisper) and image-based property search | Python, FastAPI, LM Studio, Whisper |
| baytology-recommendation | FAISS vector-based property recommendation engine with real-time scoring | Python, FastAPI, FAISS, scikit-learn |
|
|
|
- Full Property CRUD — Create, edit, and manage listings with images, amenities, and location
- Advanced Filtering — Search by type, price range, location, bedrooms, and more
- Save & Favorites — Bookmark properties for later
- Agent Profiles — Verified agents with reviews and ratings
- Interactive Maps — Leaflet-powered location visualization
- Natural Language Search — Describe what you want in plain Arabic or English
- Voice Search — Speak your query with Whisper-powered Arabic ASR
- Image Search — Upload a property photo to find similar listings
- Smart Recommendations — FAISS vector-based personalized suggestions
- Arabic Chatbot — Conversational AI assistant for property questions
- Hybrid AI Pipeline — RabbitMQ Outbox pattern with automatic in-process fallback
- Viewing Scheduling — Book property viewings with date validation
- Agent Confirmation — Agents confirm or decline booking requests
- Paymob Integration — Secure online payments with webhook verification
- Escrow Flow — Payment held until service delivered
- Refund System — Request and admin-approved refund workflow
- SignalR Chat — Instant buyer ↔ agent messaging
- Push Notifications — Real-time alerts for bookings, messages, and updates
- Conversation Groups — Organized messaging with participant authorization
- Read Tracking — Message read receipts
- Platform Analytics — Key metrics and performance insights
- User Management — Manage buyers, agents, and admins
- Payment & Refund Oversight — Review and approve financial transactions
- AI Monitoring — Track and resolve AI search/recommendation requests
- Audit Logs & Domain Events — Full system traceability
- Bilingual UI — Full Arabic and English support
- RTL Layout — Native right-to-left rendering for Arabic
- Localized Content — Translated labels, errors, and notifications
| Pattern | Implementation |
|---|---|
| Clean Architecture | 5-project .NET solution with strict dependency inversion |
| Domain-Driven Design | Rich entities, value objects, domain events |
| CQRS | Command/Query separation via MediatR |
| Result Pattern | Result<T> for explicit error handling — no exceptions for flow control |
| Outbox Pattern | DomainEventLog table + background processor for reliable messaging |
| Pipeline Behaviors | Validation, Caching, Cache Invalidation, Logging, Performance, Exception Handling |
| Saga (Choreography) | Domain Events → Event Handlers → Commands |
| Strategy Pattern | IAiDispatchPolicy, IAiSearchFallbackService |
| Interceptors | Auditable entities, domain events, audit logging |
| Background Services | OutboxProcessor, AiFallbackRecoveryProcessor |
| Tool | Version | Purpose |
|---|---|---|
| Docker | Latest | Container orchestration |
| .NET SDK | 10.0+ | Backend API |
| Node.js | 22+ | Frontend build |
| Python | 3.12+ | AI services |
| SQL Server | 2019+ | Database |
The fastest way to run the full stack is with Docker Compose:
# 1. Clone the repositories
git clone https://github.com/Baytology-Team/baytology-backend.git
cd baytology-backend
# 2. Configure environment variables
cp .env.example .env
# Edit .env with your secrets (SQL password, JWT secret, etc.)
# 3. Start all services
docker compose -f docker-compose.https.yml up -dThis starts 6 containers:
| Container | Port | Description |
|---|---|---|
baytology-frontend |
4200 |
Angular SPA |
baytology-api |
7053 |
.NET Web API |
baytology-chatbot |
8000 |
Arabic NLP Chatbot + Voice |
baytology-image-search |
8001 |
Image-based Search |
baytology-recommendation |
8002 |
FAISS Recommendation Engine |
baytology-rabbitmq |
15672 |
RabbitMQ Management UI |
baytology-sqlserver |
14333 |
SQL Server Database |
For development without Docker, refer to each repository's individual README:
- Backend —
dotnet restore && dotnet run --project src/Baytology.Api - Frontend —
npm ci && npm start(runs onlocalhost:4200) - Chatbot —
pip install -r requirements.txt && uvicorn api:app --port 8000 - Recommendation —
pip install -r requirements.txt && uvicorn app:app --port 8002
# Backend — 78 tests across 3 layers
dotnet test
# Frontend
cd frontend && npm test| Layer | Tests | Coverage |
|---|---|---|
Baytology.Domain.Tests |
24 | Entity creation, validation, state transitions, domain events |
Baytology.Application.Tests |
38 | Command/query handlers, behaviors, persistence |
Baytology.Api.Tests |
16 | Full HTTP endpoint flows via WebApplicationFactory |
| Measure | Details |
|---|---|
| JWT + Refresh Tokens | Access tokens with configurable expiry + rotation |
| Role-Based Access Control | Three roles: Buyer, Agent, Admin |
| Google OAuth 2.0 | External social login |
| Rate Limiting | Sliding window (100 req/min) |
| Webhook Verification | Constant-time HMAC comparison |
| Environment-Aware Errors | Production never leaks internals |
| User Secrets | All sensitive keys via dotnet user-secrets |
All repositories in this organization are licensed under the MIT License.
Built with ❤️ by the Baytology Team
.NET 10 · Angular 21 · Python · FAISS · RabbitMQ · SignalR
AI-Powered Real Estate — Making property search intelligent