Emaar Oceanfront
Luxury Waterfront Living
View ProjectDiscover premium real estate opportunities from Emaar Pakistan to exclusive HMR Waterfront seafront developments where modern design meets long term investment value.
With Hussayn Rashid explore carefully selected residential and commercial properties backed by quality location and strong growth potential
Hussayn Rashid is an investment manager and real estate strategist focused on building long term wealth through high value property investments. With experience across Emaar Pakistan HMR Waterfront and premium off plan projects he applies a data driven approach to maximize ROI.
He identifies high growth opportunities minimizes risk, and helps clients secure properties with strong long term value through clear guidance market insight and access to top tier developments

Strategic guidance for investors seeking premium real estate opportunities in Karachi and across Pakistan.
Personalized Guidance For Investors
Strategic Guidance For buyers
Long Term Investment Guidance
Hussayn Rashid is a real estate investment consultant in Karachi, helping investors identify premium property opportunities and make informed decisions across projects like Emaar Oceanfront and HMR Waterfront.

Curated Projects
Vetted real estate developments with strong growth potential.

Strategic Guidance
Clear data driven advice for confident investment decisions.

End-to-End Support
Professional assistance from consultation to documentation.
(function () {
/* ========================================= CONFIGURATION ========================================= */
const WEBHOOK_URL = "https://umaidwarsi28.app.n8n.cloud/webhook/hussayn-chat";
/* ========================================= ELEMENTS ========================================= */
const chatToggle = document.getElementById("hr-chat-toggle");
const chatWindow = document.getElementById("hr-chat-window");
const chatClose = document.getElementById("hr-chat-close");
const chatMessages = document.getElementById("hr-chat-messages");
const chatInput = document.getElementById("hr-chat-input");
const sendButton = document.getElementById("hr-send-button");
const typing = document.getElementById("hr-typing");
/* ========================================= SESSION ID ========================================= */
let sessionId = localStorage.getItem("hussayn_chat_session");
if (!sessionId) {
sessionId = "hr-" + Date.now() + "-" + Math.random() .toString(36) .substring(2, 10);
localStorage.setItem( "hussayn_chat_session", sessionId ); }
/* ========================================= OPEN CHAT ========================================= */
function openChat() {
chatWindow.classList.add("hr-open");
}
/* ========================================= CLOSE CHAT ========================================= */
function closeChat() {
chatWindow.classList.remove("hr-open");
}
chatToggle.addEventListener( "click", openChat );
chatClose.addEventListener( "click", closeChat );
/* ========================================= AUTO POPUP ========================================= */
setTimeout(function () {
openChat();
}, 1500);
/* ========================================= ADD MESSAGE ========================================= */
function addMessage( message, type ) {
const div = document.createElement("div");
div.className = "hr-message " + ( type === "user" ? "hr-user-message" : "hr-bot-message" );
div.textContent = message;
chatMessages.appendChild(div);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
/* ========================================= TYPING ========================================= */
function showTyping() {
typing.classList.add("hr-show");
chatMessages.scrollTop = chatMessages.scrollHeight;
}
function hideTyping() {
typing.classList.remove("hr-show");
}
/* ========================================= EXTRACT AI RESPONSE ========================================= */
function extractResponse(data) {
if (!data) { return null; }
/* n8n AI Agent commonly returns: { "output": "..." }
This also supports other common response structures. */
if (typeof data === "string") { return data; }
if (data.output) { return data.output; }
if (data.response) { return data.response; }
if (data.message) { return data.message; }
if (data.text) { return data.text; }
if (data.reply) { return data.reply; }
if ( data.data && typeof data.data === "object" ) {
if (data.data.output) { return data.data.output; }
if (data.data.response) { return data.data.response; }
if (data.data.message) { return data.data.message; }
}
return null;
}
/* ========================================= SEND MESSAGE ========================================= */
async function sendMessage() {
const userMessage = chatInput.value.trim();
if (!userMessage) { return; }
/* Show user message */
addMessage( userMessage, "user" );
/* Clear input */
chatInput.value = "";
/* Disable send */
sendButton.disabled = true;
/* Show typing */
showTyping();
try {
/* SEND MESSAGE TO N8N */
const response = await fetch( WEBHOOK_URL, { method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
message: userMessage,
sessionId: sessionId
}) } );
/* Check HTTP response */
if (!response.ok) {
throw new Error( "Webhook returned HTTP " + response.status );
}
/* Read response */
const data = await response.json();
console.log( "n8n response:", data );
/* Extract AI response */
const aiResponse = extractResponse(data);
hideTyping();
if (aiResponse) {
addMessage( aiResponse, "bot" );
} else {
addMessage( "I'm sorry, I couldn't process that request. Please try again.", "bot" );
console.error( "No AI response found:", data );
}
}
catch (error) {
console.error( "Chatbot error:", error );
hideTyping();
addMessage( "Sorry, I'm having trouble connecting right now. Please try again.", "bot" );
}
finally {
sendButton.disabled = false;
chatInput.focus();
}
}
/* ========================================= SEND BUTTON ========================================= */
sendButton.addEventListener( "click", sendMessage );
/* ========================================= ENTER KEY ========================================= */
chatInput.addEventListener( "keydown", function (event) {
if ( event.key === "Enter" && !event.shiftKey ) {
event.preventDefault();
sendMessage();
}
} );
})();