Mohamed Elghannam

Work in detail

Everything between the ad click and the signed booking.

How the Salsabeel Real Estate marketing system is built: the tracking, the automations, the agents, the campaigns and the reporting that runs them, plus the creative produced in-house. Facts come from the system documentation; campaign names are hidden and customer data never appears.

  • Real output
  • Sample / test data
  • Mock data
  • Diagram
  • Indexed

01Lead-gen system architecture

One pipeline for every channel. A lead from the website, a Meta instant form, TikTok, Snapchat or an Instagram comment lands in the same CRM within seconds, is assigned to a rep, and reports back to the ad platforms as a server-side event with the same event ID the browser pixel used.

  1. Capture

    Website forms post to a Cloudflare Worker (Turnstile, honeypot, rate limit, event ID), then to n8n. Meta instant forms arrive through the native GoHighLevel integration. Instagram comments reach n8n through the Meta webhook.

  2. Normalise and route

    n8n validates, maps attribution fields (platform, campaign, ad set, ad, form, first-touch UTMs), blocks duplicates, tags the project and consent source, opens an opportunity and round-robins the lead to an active rep with a WhatsApp alert.

  3. Report back

    Lead and browse events go server-side to Meta, TikTok, Snapchat and GA4 with a hashed visitor ID. Pipeline stage changes are polled every 10 minutes and sent as CRM conversion events, so the platforms optimise on qualified leads, not raw form fills.

  4. Assist the team

    Nurture suggestions, nudges, a conversation coach, a knowledge bot and an ops console sit on top. Nothing in the system messages a customer automatically; reps send, the system prepares.

Blue: acquisition. Amber: automation layer (Worker and n8n). Teal: sales and measurement. The dashed line is the feedback loop to the ad platforms.AcquisitionAutomationSales and measurementMeta, TikTok, Snapchat formsWebsite formsTurnstile, honeypot, event_idInstagram commentsCloudflare Worker /api/leadrate limit, visitor ID cookien8n intake and routervalidate, attribute, dedupe, tagGoHighLevel CRMcontact, opportunity, round-robinServer-side eventsMeta CAPI, TikTok, Snap, GA4Sales repsWhatsApp alert, daily batchesCoach, nudges, knowledge botOps console and weekly KPI

Diagram Blue: acquisition. Amber: automation layer (Worker and n8n). Teal: sales and measurement. The dashed line is the feedback loop to the ad platforms.

Deduplication and the feedback loop

The browser pixel and the server send the same event with the same event_id, so the platform counts it once. The visitor ID cookie is hashed and sent as external_id, which lifts the match quality. Stage changes in the CRM become conversion events (Lead → Contacted → Interested → Qualified) so the campaigns learn from what sales actually qualifies.

Browser and server events carry the same ID; the platform keeps one. CRM stage changes feed the same conversion dataset.BrowserServer (Worker and n8n)Ad platforms and CRMPixel eventLead, event_id = XBeacon to /api/evafter tags load, or on pagehideServer eventsame event_id = X, hashed external_idlead_capi_keys12-month retention, purged dailyFunnel events every 10 minstage change → CRM eventMeta / TikTok / Snap / GA4one Lead, not twoCRM pipeline stages

Diagram Browser and server events carry the same ID; the platform keeps one. CRM stage changes feed the same conversion dataset.

Tools behind this sectionCRM and automation tools

Where a lead is stored, routed and followed up. The CRM holds the record; n8n does the work between systems; Zapier and Apps Script fill the gaps.

  • GoHighLevel

    What it does
    CRM with contacts, opportunities, pipelines, workflows and WhatsApp.
    How I use it
    Single home for every lead at Salsabeel. n8n writes contacts and opportunities into it; stage changes flow back out as conversion events.
    For a developer
    One pipeline the sales manager can trust, with every enquiry assigned and visible.
  • Bitrix24

    What it does
    CRM and telephony suite.
    How I use it
    Brokerage CRM at Ahyan and Imkan: lead scoring, routing and AI callbacks on new leads.
    For a developer
    Fast first contact on portal and paid leads without extra headcount.
  • HubSpot

    What it does
    CRM with email and marketing automation.
    How I use it
    Nurture and lifecycle workflows at Ava and Imkan, fed by paid-social and portal leads.
    For a developer
    Leads that are not ready today keep receiving relevant follow-up.
  • n8n

    What it does
    Self-hosted workflow automation with code steps, data tables and agents.
    How I use it
    About 45 workflows: intake, router, server-side events, budget pacing, reports, coach. Every change is versioned with a rollback ID.
    For a developer
    Custom lead operations without per-task fees, and the data stays on the company’s own instance.
  • Zapier

    What it does
    Hosted no-code automation.
    How I use it
    Bridges for TikTok and Snapchat lead forms into the CRM and stage-change events back to Meta, being moved into n8n step by step.
    For a developer
    A channel goes live in hours, then moves to cheaper infrastructure once it proves itself.
  • Google Apps Script

    What it does
    Scripting for Google Sheets and Workspace.
    How I use it
    Lead-scoring workbook synced across seven sheets, an Arabic summary for the sales team, and a bridge into n8n.
    For a developer
    Management reporting in a format sales already uses, with no new software to buy.

How they work together

Leads enter from forms, n8n validates and routes them into the CRM, and stage changes go back out.CaptureAutomateSellAd forms and websiteMeta, TikTok, Snapchat, siteZapierTikTok and Snap bridgesn8nvalidate, route, scoreApps Script and Sheetsscoring, sales summaryGoHighLevelcontact, opportunity, repStage changesback to ads as events

Leads enter from forms, n8n validates and routes them into the CRM, and stage changes go back out. Silent 10-second loop. Highlights follow the order the work actually happens.

02Automations catalogue

Around 45 n8n workflows and 50 data tables run on a self-hosted instance. The ones below are the backbone. Each has a rollback version recorded before any change, and none sends a message to a customer except the Instagram reply, which was an explicit decision.

Lead Router

Live
Purpose
One router for every paid channel: writes attribution and consent fields, sets the project, opens the opportunity in New, round-robins to active reps, rotates the WhatsApp line weekly, tags A/B form variants and non-buyers.
Trigger
CRM webhook on contact created / form submitted
Data
router_log, intake_config
Guardrails
Duplicate block, excluded reps, test contacts skipped, no customer messaging
n8n editor canvas of the Lead Router workflow
Real workflow (sensitive values hidden)

Website Lead Intake

Live
Purpose
Receives the Worker payload, normalises fields, labels organic vs campaign source from UTMs, applies first-touch attribution (365-day window) and fires the server-side Lead event asynchronously.
Trigger
Worker webhook (header secret)
Data
lead_capi_keys, intake_config
Guardrails
Turnstile and honeypot upstream, rate limit, dedupe, header auth

CAPI funnel

Live
Purpose
Server-side PageView, ViewContent and Lead to Meta, TikTok, Snapchat and GA4 with the pixel’s event_id; stage changes become CRM conversion events; TikTok lead IDs synced every 15 minutes.
Trigger
Beacon webhook + schedule every 10 min
Data
capi_event_log, lead_capi_keys, fact_lead
Guardrails
Hashed identifiers only, 12-month purge, event-name validation (fixed a dataset that had names mapped as events)
n8n editor canvas of the CAPI funnel workflow
Real workflow (sensitive values hidden)

Signal Thermometer

Live, CRM writes under verification
Purpose
Turns site browsing, form activity and conversation signals into a per-contact temperature tier so reps call the warmest leads first.
Trigger
Async calls from browse events, lead intake and the realtime coach
Data
signal_events, signal_state
Guardrails
Secret header, writes only two CRM fields (tier, last signal time), no scoring from customer PII
n8n editor canvas of the Signal Thermometer workflow
Real workflow (sensitive values hidden)

BOF Payment Sheet

Live (v2)
Purpose
Generates a bilingual payment-plan sheet (PDF A4 and 1080×1350 PNG) for a specific unit and lead, stored on the contact and emailed to the manager for the rep to send.
Trigger
Rep request from the CRM
Data
price_sheet
Guardrails
Header auth, rendered by Cloudflare Browser Rendering, never sent to the customer by the system, approved prices only
n8n editor canvas of the BOF Payment Sheet workflow
Real workflow (sensitive values hidden)

Weekly KPI report

Live
Purpose
Monday email: spend and leads by channel, Verified CPL, SLA buckets, permit tracker, channel policy, why-it-moved notes and the A/B form section with an n<50 guard.
Trigger
Schedule, Monday 09:00
Data
fact_ad_daily, fact_lead
Guardrails
Reads only, no judgement below sample size
n8n editor canvas of the Weekly KPI report workflow
Real workflow (sensitive values hidden)

Meta budget pacing engine

Live (writes approved)
Purpose
Paces the monthly budget across a 1–20 day flight, moves daily budgets by performance, pauses when the budget is spent and re-activates on day 1. Rules in the next section.
Trigger
Schedule, daily 07:10
Data
budget_engine_log, plan_budget
Guardrails
±20% daily clamp, kill-switch, 7-day learning freeze, manual freeze list, dry-run mode, email of every decision

Instagram comment → DM

Live, awaiting Meta App Review for full scope
Purpose
Replies to a qualifying comment with a DM, creates the CRM contact from the Instagram ID and labels it organic–instagram.
Trigger
Meta webhook on comment
Data
ig_comment_dm_rules, ig_comment_dm_log, ig_dm_suppress
Guardrails
Rules table, suppression list, token refresh check; the only automated customer message in the system, by decision

Monthly market read

Running
Purpose
A monthly read of the Bayut price index for Ajman, typed into the market-intel table from the browser, because the portal blocks automated fetching. Rows wait as pending review until verified.
Trigger
Manual, monthly
Data
market_intel
Guardrails
Only verified rows reach the coach and copilot; no scraping

Also running

  • Nurture A/B/C and re-activation as rep-assist: the rep receives the phone, a summary and a suggested message, and sends it.
  • Not-interested auto-close from WhatsApp text and rep notes, with the lost reason set automatically.
  • Rep nudges in daily batches, 24/40-hour warnings and 48-hour redistribution of idle leads.
  • Conversation intelligence: AI reads rep–customer threads, writes CRM notes and proposes stage moves.
  • Realtime and daily sales coach, sales knowledge bot, objections corpus every weekend, weekly lead scoring tags.
  • Creative-fatigue watcher, Meta↔CRM reconciler, alert sink, error trigger, Monday health check.
  • Ops Console API, ads spend sync (Meta, TikTok, Snap), Won/Lost sync, content factory (drafts only), competitor-ads analyzer.

Earlier captures, 3 October 2026

From the first portfolio. Account identifiers and campaign names are pixelated.

n8n workflow: webhook, contact upsert, round-robin, opportunity, response and WhatsApp notification
Real workflow (sensitive values hidden) First website-intake workflow: webhook → CRM contact → round-robin → opportunity → reply → WhatsApp alert, with two error branches
GoHighLevel workflow list
Real workflow (sensitive values hidden) GoHighLevel: Facebook and TikTok lead workflows with weekly reporting, published
Zapier list of lead and conversion Zaps; campaign names pixelated
Real workflow (sensitive values hidden) Zapier: TikTok and Snapchat leads into the CRM with WhatsApp alerts, and Meta conversion events on stage change

Tools behind this sectionAI models and agents

Used to research, build and review, never to talk to customers. Each model has a job it is best at, and a person approves what leaves the system.

  • Claude and Claude Code

    What it does
    Language model and coding agent.
    How I use it
    Builds and tests the website, n8n workflows and this portfolio through MCP connections to n8n, GitHub, Cloudflare and the ad accounts; writes the Playwright checks.
    For a developer
    Engineering work that would need a developer is done and verified inside the marketing team.
  • Gemini

    What it does
    Multimodal model for text and images.
    How I use it
    Exterior renders at 2K, ad images with integrated Arabic and English text, and long-document reading through the API.
    For a developer
    Visuals for a new launch before the photography or the 3D studio is ready.
  • ChatGPT

    What it does
    General-purpose language model.
    How I use it
    Second opinion on copy and structure, and quick drafts that are then checked against the approved facts file.
    For a developer
    Faster drafting while the facts stay controlled in one place.
  • Perplexity

    What it does
    Answer engine with cited sources.
    How I use it
    One space per function (web and SEO, search ads, Meta analysis, video) for sourced research before a brief is written.
    For a developer
    Decisions backed by sources that can be checked, not by guesses.

How they work together

Research feeds the build; agents run inside n8n; a person approves anything customer-facing.ResearchBuildOperatePerplexitysourced researchChatGPTdrafts, second opinionClaude Codebuilds and testsGeminiimages, long documentsn8n agentscopilot, coach, intelManager approvesdrafts only, no auto-send

Research feeds the build; agents run inside n8n; a person approves anything customer-facing. Silent 10-second loop. Highlights follow the order the work actually happens.

03AI agents

Four n8n agents sit above the workflows for questions and analysis. Sensitive paths (intake, router, CAPI, funnel events) stay deterministic workflows. No agent is built or published without approval, and none talks to customers.

Copilot

Role
Answers the manager’s operational questions: yesterday’s CPL, which campaign is pacing, what the sales knowledge base says.
Tools
Read-only workflow over the sales knowledge base and verified market intel; data tables.
Limits
Single read tool, no write tools, observational memory off, verified rows only.

Coach

Role
Daily review of rep conversations: what was promised, what is missing, the next best message in a human tone.
Tools
SalesCoach review workflow, approved facts file, rounding rules for prices.
Limits
Banned claims stripped (escrow and bank-guarantee wording, “guaranteed return”). Output goes to the rep as a suggestion.

Intel

Role
Collects public market facts and competitor offers for Ajman.
Tools
Web search, save_market_intel_row.
Limits
Saves everything as pending_review; the manager verifies. No customer identifiers in searches.

Marketing

Role
Plans content jobs, shortlists and rotates creatives, audits coverage of the persona × angle matrix.
Tools
Content job table, creative-shortlist and matrix-coverage skills, sub-agent Coach.
Limits
Drafts only, publishing by the manager; approved facts only; rounded figures in ads, exact on price sheets.

Rule of thumb: workflows for anything that must be predictable; agents for questions with no fixed steps. Every agent version is recorded with a rollback ID.

n8n agents list with four published agents
Real workflow (sensitive values hidden) The four agents as published in n8n
n8n editor canvas of the website chat assistant workflow
Real workflow (sensitive values hidden) Site chat assistant workflow behind /api/chat

Tools behind this sectionAd platforms

Where the budget is spent. Each platform receives the same server-side events, so all of them learn from qualified leads rather than raw form fills.

  • Meta Ads

    What it does
    Facebook and Instagram advertising.
    How I use it
    Main lead source: instant forms and site traffic, Instagram-first placements, budgets paced daily by an n8n engine, CRM stages sent back as events.
    For a developer
    Most of the qualified pipeline at a cost per lead the company can plan around.
  • Google Ads

    What it does
    Search, Performance Max and YouTube ads.
    How I use it
    Search campaigns for project and area intent at the brokerages; the Salsabeel account is paused until a campaign restarts.
    For a developer
    Captures buyers already searching for the area or the project name.
  • TikTok Ads

    What it does
    Short-video advertising.
    How I use it
    Lead-gen campaigns with native forms; leads reach the CRM within minutes and stage changes return as CRM events.
    For a developer
    Younger first-time buyers and reach at a lower CPM.
  • Snapchat Ads

    What it does
    Snap advertising for the Gulf audience.
    How I use it
    Lead forms and site traffic, with server-side events through the same funnel as Meta and TikTok.
    For a developer
    An audience that heavy Meta spending does not reach.

How they work together

Every platform gets the same events; the quality signal loops back into delivery.PlatformsSignalsOptimisationMeta AdsTikTok AdsSnapchat AdsGoogle AdsPixel and server eventssame event IDCRM stage eventsqualified, visit, bookedBudget pacingdaily, with limitsLearn from qualitybid on qualified leads

Every platform gets the same events; the quality signal loops back into delivery. Silent 10-second loop. Highlights follow the order the work actually happens.

04Campaign types and structure

Lead-gen for off-plan units in Ajman, bought on a cost-per-qualified-lead basis. Naming is strict (PROJECT | OBJECTIVE | DESTINATION | GEO | MONTH) so reports and the budget engine can match campaigns to projects and targets automatically.

  • Meta instant forms

    OTP-verified phone plus qualifying questions (unit type, payment method, purpose, timeline). Optimised for quality leads with CRM stage events feeding the dataset. Instagram-heavy placements.

  • Meta website leads

    Traffic to the Astro landing pages with pixel + server events, Turnstile, consent texts and first-touch UTMs. Used for the exhibition period and for retargeting.

  • Click-to-WhatsApp

    Measured in the ops console as conversations → CRM → interested with first-reply time, so it is compared on the same Verified CPL basis.

  • Advantage+ and broad

    Broad UAE ad sets with Advantage+ placements as the main set; emirate-split ad sets kept only where the data justified them.

  • TikTok

    Lead-gen forms and website-lead campaigns, with a CRM event set for lead quality and lead IDs synced to the CRM. Kept as a test channel at a small share of spend.

  • Snapchat

    Pixel plus server-side SIGN_UP and a custom event for Qualified+. Measurement only, since Snap cannot optimise on CRM stages. Billed in USD.

  • Retargeting and lookalikes

    Retargeting pools from lead-form openers who did not submit, video viewers and Instagram and page engagers; lookalikes (1–10%) seeded from the CRM lead list, form submitters, engagers and website conversion events. The same CRM-list approach is used on TikTok and Snapchat.

  • Outside this account

    LinkedIn Ads, leasing campaigns and international investor and HNWI targeting come from earlier roles and freelance work, not from this account.

A/B test: full form vs 2-field form

  • One variable: the form. Same creative, copy, audience and optimisation goal in two ad sets inside one campaign.
  • Split 50/50 with Meta Experiments; fallback is equal ABO budgets inside the approved campaign budget.
  • Primary metric is Verified CPL: spend ÷ new CRM contacts from that form, after removing duplicates, invalid data and rent-only enquiries. Secondary is qualified rate read 14 days after the last lead.
  • The router tags each lead form:full or form:2f; the Monday report splits every metric by tag and refuses to judge below 50 verified leads per arm.
  • Decision rule proposed for approval: adopt the short form if Verified CPL is 20% lower and qualified rate is not more than one point lower.
Both arms share creative and targeting; only the form differs. The tag written by the router is what the weekly report groups by.CampaignRoutingReadingCampaign (one project)same creative and copyAd set A · FORM-FULL5 questions + 2 fieldsAd set B · FORM-2F1 question + 2 fieldsLead Routertag form:full / form:2fCRM contact + opportunityform id, consent sourceWeekly KPI, A/B sectionVerified CPL, qualified rateGuard: n < 50 → no reading

Diagram Both arms share creative and targeting; only the form differs. The tag written by the router is what the weekly report groups by.

Meta Ads Manager table sorted by cost per result; campaign name column blurred
Real Ads Manager view (campaign names hidden) Top Meta campaigns by cost per result, lifetime view captured 3 October 2026: messaging campaigns first, then lead-form campaigns. Figures as shown in the account; campaign names blurred.

05Budget pacing and KPI governance

A fixed monthly budget covers days 1–20; whatever remains keeps running until spent. The engine applies the same rules every morning, writes the decision to the ad account, and emails a plain-language log. The manager approved autonomous writes after a dry-run period.

Decision rules

  1. Daily cap = net budget ÷ flight days, so the whole flight is covered; 5% headroom for platform overspend.
  2. Pace to the remaining budget over the remaining days; step up at most 15% a day, step down at most 20%.
  3. Bad performance (3-day spend ≥ 3× target with zero leads or CPL > 1.5× target) cuts the budget; mediocre holds; good paces up.
  4. Guardrails: any change clamped to ±20% a day; kill-switch pauses a campaign when CPL stays above 2× target for three days with real spend, never auto-restarted; no change while an ad set is younger than seven days (learning) or on the manual freeze list.
  5. Target CPL is set per project (lower for the lower-ticket tower). Changes under 5% are ignored. Floor and minimum daily budgets protect delivery.
  6. Compliance: every property ad carries its Ajman DLRER permit number (RERA/Trakheesi permits in the Dubai roles), tracked in the weekly permit tracker; lead forms carry UAE PDPL consent texts and the consent source is written to the CRM.
Every morning the same inputs go through the same rules. The output is a budget write, a pause or nothing, and always an email.InputsRulesOutputsNet budget, flight daysSpend month-to-dateMeta + Snap (USD→AED)3-day spend, leads, CPLper campaign vs targetPace to remaining ÷ days leftStep ±15/20%, clamp ±20%Learning freeze, manual freezeKill-switch: CPL > 2× for 3daysDaily budget writeMeta Marketing APIPause / re-activateDecision email + log table

Diagram Every morning the same inputs go through the same rules. The output is a budget write, a pause or nothing, and always an email.

What counts as a result

  • Verified CPL

    Spend ÷ new CRM contacts after removing duplicates, invalid data and rent-only enquiries. The raw platform CPL is shown next to it but never used for decisions.

  • Qualified rate (Q+)

    Qualified or beyond (site visit, proposal, booking, closed) ÷ verified leads, read as a snapshot 14 days after the wave.

  • Speed to lead

    First human touch within 15 minutes is the team rule; the console shows buckets and the live no-touch queue.

  • Guards

    Invalid share, rent-only share, not-a-buyer share and the Meta↔CRM gap, so a cheap lead cannot hide a bad one.

Tools behind this sectionWeb, data and analytics tools

How the site is built and deployed, how data is collected, and where it is read.

  • GA4

    What it does
    Web and app analytics.
    How I use it
    Site behaviour and conversions, fed by both the browser tag and server-side events with the same IDs.
    For a developer
    Shows which pages and projects actually move visitors to enquire.
  • Google Tag Manager

    What it does
    Tag deployment without code releases.
    How I use it
    Pixel and conversion tags, UTM rules and the split between thank-you page and WhatsApp clicks.
    For a developer
    Tracking changes go live the same day, without a developer ticket.
  • Stape and Conversions API

    What it does
    Server-side tagging and server events.
    How I use it
    Meta CAPI, TikTok Events and Snapchat CAPI, de-duplicated with the browser pixel; later moved to the site’s own Worker and n8n.
    For a developer
    Conversions are not lost to ad blockers or browser limits, so the ad platforms optimise on more data.
  • Astro

    What it does
    Static site framework.
    How I use it
    The company site and this portfolio: bilingual pages, fast by default, built on every push.
    For a developer
    Fast project pages that pass Core Web Vitals and convert better on mobile.
  • Cloudflare Workers

    What it does
    Edge hosting and serverless functions.
    How I use it
    Hosts the site and the small API: lead endpoint with Turnstile, event beacon, WhatsApp short links, payment-sheet rendering, Access login for the ops console.
    For a developer
    Low hosting cost, global speed and bot protection on every form.
  • GitHub

    What it does
    Code hosting and version control.
    How I use it
    Every site change is a commit; a push to main deploys; any change can be rolled back.
    For a developer
    A clear history of what changed on the site and when.
  • Looker Studio

    What it does
    Dashboards on Google data.
    How I use it
    Channel and campaign reporting on GA4, Ads and Sheets data.
    For a developer
    Management sees the same numbers every week without asking for exports.
  • Power BI

    What it does
    Business intelligence dashboards.
    How I use it
    Spend, lead and sales dashboards at Imkan that guided budget allocation.
    For a developer
    Budget moves to the projects and channels that bring buyers.
  • Metricool

    What it does
    Social media scheduling and analytics.
    How I use it
    Schedules approved posts to Instagram, Facebook, TikTok and YouTube from drafts, then reads their reach.
    For a developer
    A steady posting rhythm with an approval step and one place for organic results.
  • Apify

    What it does
    Hosted scrapers and data actors.
    How I use it
    Collects public competitor ads from ad libraries for the competitor-ads analyzer.
    For a developer
    Sees which offers and angles competitors are pushing this month.
  • Firecrawl

    What it does
    Web page extraction for research.
    How I use it
    Turns public pages into clean text for the market-intel agent; rows stay pending until verified.
    For a developer
    Market and competitor facts gathered faster, still checked by a person.

How they work together

Tags and scrapers collect, the site and GA4 run, dashboards read. A GitHub push deploys the site.CollectRunReadGTM and Stapetags, server eventsApify and Firecrawlpublic ads and pagesMetricoolposts and reachCloudflare Workerssite, API, beaconsGA4behaviour, conversionsGitHub and Astropush to deployLooker Studioweekly reportingPower BIspend and salesOps consoleleads, pacing, reps

Tags and scrapers collect, the site and GA4 run, dashboards read. A GitHub push deploys the site. Silent 10-second loop. Highlights follow the order the work actually happens.

06Dashboards and reporting

Reporting is built from the company’s own data, not agency benchmarks. The ops console reads a single summary endpoint (Worker → n8n) and renders marketing and sales end to end; the weekly email and per-rep reviews come from the same tables.

  • Ops console

    Spend and pacing, unique leads, blended and Verified CPL, interested and visits, speed-to-lead buckets with a live no-touch queue, funnel by channel, budget pacing per channel and project, campaign → ad set → ad explorer, click-to-WhatsApp tiles, rep scorecards, lost reasons, data quality and targets. Login through Cloudflare Access.

  • Weekly KPI email

    Monday 09:00: what moved and why (≥20% changes), what changed in the accounts (activity logs), pacing, week priorities, permit tracker and the A/B section.

  • Per-rep Monday review

    Notes, stage changes, unanswered inbound, stuck leads and a score with tips, per salesperson, from CRM data only.

  • Monthly management report

    Budget close-out, cost per interested lead, best campaign, spend vs plan and next-month plan parameters.

Ops console: KPI band, alerts and speed-to-lead section, campaign labels pixelated
Mock data Ops console v1 at desktop width, rendered with mock data for the preview; campaign and rep labels are pixelated.
Ops console: budget pacing per channel and the campaign explorer, labels pixelated
Mock data Ops console v1 at desktop width, rendered with mock data for the preview; campaign and rep labels are pixelated.
Ops console on a phone
Mock data Same console on a 390 px phone: tables become cards, numbers stay left-to-right under RTL labels.

Inside the CRM

Tools behind this sectionCreative and video tools

An in-house marketing team still needs films, renders, voice and layouts every week. These tools cover that, with a conventional edit at the end.

  • ComfyUI

    What it does
    Node-based image and video generation.
    How I use it
    Own graphs with Wan 2.1 start and end frames (empty plot to finished tower), camera moves and SeedVR2 upscaling.
    For a developer
    Construction progress and camera moves for a project that does not exist yet.
  • Google Flow and Veo

    What it does
    Video generation and scene editor.
    How I use it
    Veo 3.1 scenes from a locked aerial reference: time-lapse, drone and interior glides, cut into area films.
    For a developer
    Cinematic shots without a drone crew or a shoot day.
  • ElevenLabs

    What it does
    Voice generation.
    How I use it
    Arabic and English voiceovers with stock voices, including an Emirati-dialect presenter pilot.
    For a developer
    Voiceover for every film the same day, in both languages.
  • Canva

    What it does
    Layout and design platform.
    How I use it
    Social posts, story frames and quick print layouts from the real logo and project photos.
    For a developer
    On-brand posts in volume while the brand rules stay consistent.

How they work together

A photo and a script become generated shots and voice, then one edit produces every format.SourceGenerateDeliverSite photo and renderstart and end framesScriptapproved facts onlyComfyUIWan 2.1, upscaleGoogle Flow, Veo 3.1scenes, time-lapseElevenLabsArabic and English voiceEdit and Canva layoutsbrand paletteAds, LED wall, brochureevery format

A photo and a script become generated shots and voice, then one edit produces every format. Silent 10-second loop. Highlights follow the order the work actually happens.

07Creative production

Three projects to sell and no retained creative or ad agency. Films, renders, voiceover, brochures, print and the exhibition kit were produced in-house with generative tools and a conventional edit, under the approved facts file and the brand’s navy-and-champagne palette. The one exception was the Ajman real estate investment exhibition, where the company hired event photography firms and an exclusive influencer to cover the show days only.

  • AI renders

    Exterior renders for six company buildings from site photos and plans, generated and upscaled in rounds (corner, front, low-angle), then used on the website, brochures and the tender portfolio.

  • Films

    Area and project films from real footage plus Veo 3.1 (Google Flow) and Wan 2.1 (ComfyUI) shots; a construction time-lapse from a single site photo; Google Earth Studio map pins; an AI presenter pilot in Emirati dialect with ElevenLabs stock voices.

  • Exhibition kit

    LED-wall films in 3:1 and 2400×800, a 6:5 version for a 3 × 2.5 m stand screen, a hologram loop, a printed 2 × 2 m stand graphic, an on-screen apartment-draw sequence with printed coupons and bilingual registration.

  • Documents

    A 56-page bilingual brochure, a pre-qualification portfolio for a government tender, payment-plan PDFs and the generated BOF payment sheet.

Renders

Film previews (7-second muted excerpts)

Real output Area film, Al Zorah: real footage with generated inserts
Real output Area film, Al Alia: real footage with generated inserts
Real output Google Earth Studio map pin sequence
Real output Website motion pass (GSAP, Lenis), scroll capture

Print, documents and frames

Selected work from the archive

Ad creatives, exhibition visuals and LED-wall material picked from the working archive. Phone numbers are pixelated; previews are short muted excerpts.

Vertical ad image of a residential tower at sunset
Real output Azora Tower ad creative, sunset exterior (story size)
Vertical ad image of a rooftop pool and lounge
Real output Azora Tower ad creative, rooftop pool (story size)
Vertical ad image of a lit tower facade at night
Real output Azora Tower ad creative, night facade (story size)
Feed ad with a residence beside a golf course
Real output Salsabeel Golf View Residence feed ad, golf-lifestyle angle (phone number pixelated)
Feed ad with a residence by the waterfront
Real output Salsabeel Golf View Residence feed ad, waterfront angle (phone number pixelated)
Exterior visual of a residential tower
Real output Azora Tower, 16:9 exhibition visual
Exterior visual of a mid-rise residence
Real output Salsabeel Golf View Residence, 16:9 exhibition visual
Exterior visual of a residential building
Real output Salsabeel Golf View, 16:9 exhibition visual
Exterior visual of a residential building
Real output Salsabeel 5, 16:9 exhibition visual
Exterior visual of a residential building with landscaping
Real output Salsabeel Parks, 16:9 exhibition visual
Render of residential towers by a golf course
Real output Salsabeel Golf View Residence, exterior render for unit pages
Interior render of a living room with a golf view
Real output Salsabeel Golf View Residence, one-bedroom living area render
Interior render of a studio apartment
Real output Salsabeel Golf View Residence, studio render
Concept visual of a residential building
Real output Enjaz Salsabeel, concept visual
Wide LED-wall frame with a timeline of projects
Real output Company-journey frame for the exhibition LED wall (2400×800)
Wide LED-wall slide about a tower location
Real output Azora Tower LED-wall slide, location (2400×800)
Real output Azora Tower aerial for the raffle LED wall (3:1)
Real output Salsabeel Golf View Residence rooftop scene for the LED wall (3:1)
Real output Exhibition LED-wall intro, architectural lines (2400×800)
Real output Azora Tower, generated drone orbit
Real output Enjaz Salsabeel, construction time-lapse generated from a site photo

From the first portfolio: process, films, voice and print

Carried over from the earlier portfolio. Films are 8-second muted previews that play only when tapped; full versions open on the old site.

ComfyUI graph with start frame, end frame, prompts and sampler
ComfyUI, own Wan 2.1 graph: empty-site photo as start frame, finished-tower render as end frame
Google Flow editor with a construction time-lapse prompt and timeline
Google Flow: the time-lapse prompt and 10-second timeline in the editor (Veo 3.1)
Aerial photo of an empty construction plot in a city
Azora Tower, empty-site reference that became the time-lapse start frame
Generated exterior render of a residential building
Enjaz Salsabeel, 2K exterior generated with Gemini (28 Sep 2026)

More films (tap to play)

Azora Tower construction time-lapse, Google Flow · Full version
Azora Tower drone sequence, Google Flow · Full version
Camera glide into a living room, Google Flow · Full version
Azora Tower wide-screen film · Full version
Salsabeel Golf View Residence wide-screen film · Full version
Exhibition LED wall (3:1): project overview and location · Full version
Exhibition LED wall (3:1): apartment-draw countdown · Full version
Exhibition LED wall (3:1): live apartment-draw stage recap · Full version
Exhibition booth walk-through with the hologram display · Full version
The booth on the exhibition floor · Full version
Enjaz Salsabeel building-materials study, Google Flow · Full version
Exhibition brand film (voiceover below) · Full version

Voice

Arabic exhibition brand voiceover, ElevenLabs, 31.6 seconds. Plays only when you press play.

Brochure

Cover of a bilingual project brochureOpen the brochure PDF (5.4 MB)

Enjaz Salsabeel project brochure, 56 bilingual pages. Archived design sample; prices and plans inside are not a current offer.

Personal study

Cover of an independent corporate-presentation studyOpen the study PDF (6.0 MB)

Al Hamra corporate presentation: an independent personal design study, 34 pages. Not commissioned, endorsed or approved by Al Hamra, and not evidence of employment or a client relationship.

More from the field

  • Apartment-draw kit: a 25 × 7 cm Azora Tower coupon with an HTML numbering and print-overlay system, printer calibration on two printer brands, and a two-page bilingual registration form with a privacy notice.
  • Lead-form protection on the earlier WordPress site: Contact Form 7 hardened with Turnstile, honeypot fields, server-side duplicate checks and rate limiting.
  • Lead-scoring workbook in Google Sheets: weighted rubric, separate quality and engagement scores, tiers, Apps Script sync across seven sheets and an Arabic summary for the sales team.
  • Messenger chatbot: an n8n orchestrator agent routing Facebook Messenger questions to sub-agents, with a vector-store knowledge base built from the project data sheet.
  • Brand and print: bilingual brochures, an A4 infographic and site map, business cards, social posters and an engagement contest under a written brand rule set.
  • AI operating model: one research space per function, a prompt library and master prompts kept under 8,000 characters.

08Website engineering

salsabeel-re.ae was rebuilt from WordPress to a static Astro site on Cloudflare Workers with a small Worker API, bilingual pages for every project, a blog for answer-engine visibility and the tracking described above.

Before
40
LCP 9–10 s
After
98
LCP ≈2 s
  • Performance: mobile Lighthouse from about 40 to 96–100, LCP from 9–10 s to about 2 s, layout shift near zero. Tag scripts load on first interaction or after 3.5 s while page-view events queue immediately with their IDs; fonts self-hosted in Latin and Arabic subsets; hero images in WebP with srcset.
  • Motion: GSAP, Lenis and React islands on desktop only, loaded after the page is interactive; conversion elements never animate in the way.
  • Lead path: /api/lead with Turnstile, honeypot and rate limit; /api/ev beacon for server-side browse events; /w/<code> short WhatsApp links with per-rep reference; /api/sheet renders the payment sheet; /api/chat serves the site assistant.
  • Content and AEO: project pages with escrow and permit numbers, floor plans, payment plans, FAQs, an Ajman buying guide as lead magnet, a blog, sitemap.xml and llms.txt, hreflang EN/AR, PDPL-reviewed privacy policy and consent texts.
  • Verification: Playwright checks after every change at 390 and 1440 px for console errors, overflow and the tracking events; push to main deploys through Workers Builds.

09Results, indexed

Numbers below come from the ad accounts and the CRM for August–October 2026 at Salsabeel. Campaigns are labelled A–D and CPL is indexed (best week = 100) because the absolute figures are the company’s. Career totals are at the end.

Meta lead-gen: cost per form lead by week, indexed (lower is better)
Campaign A · AugW1192W2266W3370Campaign B · Sep–OctW1165W2100W3115Campaign C · OctW1207W2716Campaign D · OctW1377W21008
Table view
CPL index
Campaign A · Aug · W1192
Campaign A · Aug · W2266
Campaign A · Aug · W3370
Campaign B · Sep–Oct · W1165
Campaign B · Sep–Oct · W2100
Campaign B · Sep–Oct · W3115
Campaign C · Oct · W1207
Campaign C · Oct · W2716
Campaign D · Oct · W1377
Campaign D · Oct · W21008
Meta lead-gen: click-through rate by week
Campaign A · AugW11.21%W21.05%W30.89%Campaign B · Sep–OctW11.32%W21.23%W31.03%Campaign C · OctW10.62%W20.53%Campaign D · OctW10.69%W20.53%
Table view
CTR
Campaign A · Aug · W11.21%
Campaign A · Aug · W21.05%
Campaign A · Aug · W30.89%
Campaign B · Sep–Oct · W11.32%
Campaign B · Sep–Oct · W21.23%
Campaign B · Sep–Oct · W31.03%
Campaign C · Oct · W10.62%
Campaign C · Oct · W20.53%
Campaign D · Oct · W10.69%
Campaign D · Oct · W20.53%
Raw leads to verified pipeline stages, one project (share of 444 CRM leads)
Raw leads100%Interested+8.8%Qualified+4.7%Site visit+3.8%
Table view
Share of leads
Raw leads100%
Interested+8.8%
Qualified+4.7%
Site visit+3.8%
Leads vs qualified by channel, same project (share of channel leads reaching Qualified+)
Meta (78.8%)4.3%TikTok (7.7%)5.9%Snapchat (7%)3.2%Direct / WhatsApp (4.1%)5.6%
Table view
Qualified+ rate
Meta (78.8%)4.3%
TikTok (7.7%)5.9%
Snapchat (7%)3.2%
Direct / WhatsApp (4.1%)5.6%
  • Campaign B (instant forms, lower-ticket tower) reached the best CPL of the period in its second week after the dataset started receiving CRM stage events.
  • Campaigns C and D ran in a period with a restricted account and a short flight; their CPL rose while frequency climbed, which is what the fatigue watcher and the kill-switch now catch.
  • About 4% of raw leads reach Qualified+ and every site visit came from Meta or direct contact, which is why Verified CPL and qualified rate, not raw CPL, govern the budget.
  • 58% of CRM leads sit in Contacted / Follow-up, the bottleneck the nudges, coach and sales operating rule are built to move.

Across the career

AED 18M+
advertising budgets managed
205,000+
leads generated
AED 30K–150K
monthly ad budgets run
26.2–28%
lead-to-qualified conversion
AED 12M
attributed sales, IMKAN campaign 2019
AED 100M
attributed sales, Falcon Island

Career figures are cumulative across employers since 2018, reported from ad-platform and CRM data. Monthly lead volume at Salsabeel is lower and is governed by Verified CPL rather than volume. Agency and freelance (2023–2025): campaign work, including leasing, for a UAE real-estate marketing agency serving several developers and brokerages.

Want this for your projects?

The whole stack, or one piece of it. WhatsApp is fastest.