INSIS — Inside Information System. One tool where the editorial team produces content, sales replies to clients, SEO ships landing pages, and analytics shows what actually generates revenue. No more twenty tabs, no more screenshots in chats, no more "where is that file again."
INSIS is a closed multi-tenant platform for the Insidex group. Not a public SaaS. Not a CRM. Not a Bitrix replacement. It's the layer on top of every tool you already use, gathering them into one interface and automating 70–85% of the routine work.
From narrative to publication — in one tool. Idea → brief → artefacts (TG carousel, LinkedIn post, stories, longread, FAQ, landing page) → distribution across channels. One narrative is automatically packaged for every brand, format, and language.
30 numbers, 3 languages (RU/EN/AR from day one), 60–70% of inbound messages handled by auto-mode. Operators see suggested replies for the rest and send them with one click. With a kill switch, escalation for sensitive topics (price, legal, VIP, customer frustration), and output sanitization. No hallucinations.
The company's single source of knowledge — style guides, FAQ, sales scripts, legal references, market analysis. AI agents use it for retrieval, operators search it directly, new brokers onboard with it. Built on top of AFFiNE with hybrid search (vector + BM25) and Cohere reranking.
1,500+ landing pages on two independent sites (insiderealty.ae + in.ae) — generated automatically from UnitPilot master data. The SEO team shrinks from 7 people to 1–2 system operators. Unique content per brand, schema markup, internal linking, A/B tests — all automated.
End-to-end attribution: the full path from a Telegram post → landing click → WhatsApp message → Bitrix lead → closed deal. ROAS, CPL, conversion funnels — in one dashboard. Editorial Brain learns: which narratives → which formats → which results.
This isn't criticism of the team. The team is excellent. It's criticism of the tools — they were never designed for each other. Notion + Google Drive + Airtable + Creatium + Wazzap + six different SMM services + Bitrix24 — each one is fine in isolation. Together, they create a thousand small operational frictions that quietly drain hours every day.
Not "number of publications." Not "response time." Not "open rate." The only metric that matters: how much money it takes to get a qualified lead into Bitrix24. Everything else is a proxy.
INSIS is built as a modular monolith in TypeScript. Not microservices (we're a small team — we don't need them). Not spaghetti (modules talk only through events and public APIs, exactly like microservice boundaries). Each module owns its own database tables. No direct SQL into other modules' tables. Ready to extract any module into a service when the time comes, but we don't do it "just in case."
Content production from narrative to publication-ready artefact. Topics DB + News Scout, Format Strategist (AI), Brief Generator (AI), Production Skills for each format, three approval gates (Topic → Format → Final), brand context per (brand, locale).
Publishing artefacts to distribution channels via Postiz + native publishers (Telegram, custom integrations). Schedule Optimizer picks timing from best-time data. A bundle is published as a coordinated content drop: video → description → series of posts → stories → longread → FAQ, in the right order.
30 WhatsApp numbers (4 WABA + 5 grey + 21 broker phones). Baileys + Meta Cloud API. Conversation Engine + AI Sales Agent with auto-mode and suggestion-mode. Operator inbox UI, Bitrix24 sync. Confidence scoring, kill switch, output sanitization. 8 escalation triggers for sensitive topics.
AFFiNE as primary KB storage (Notion-like editor for the team). Custom RAG layer on top — semantic chunking, Voyage AI embeddings in pgvector, hybrid search (vector + BM25), Cohere reranking. Multi-language retrieval (RU/EN/AR). Workspaces per area: Editorial, Sales, Legal, Shared, Internal.
ClickHouse warehouse + native collectors (IG, LinkedIn, TG, YouTube, Plausible × 4). Bitrix24 webhooks. Metabase dashboards. Editorial Brain feedback loop: which narratives → which formats → what converts. Per-bundle attribution. LLM cost tracking (model, tokens, USD, latency, outcome).
UI for browsing market references through UnitPilot DB (read-only). Districts, projects, developers, prices, units. UnitPilot stays the source of truth — INSIS reads via CDC + webhooks. No data duplication.
Landing generator for two independent sites. Inside Realty → Next.js 15 on Vercel. In.ae → Astro on Cloudflare Pages. Different stacks, different hosting, different content per brand — all so Google can see them as independent (ADR-005). Schema markup, sitemap, internal linking, A/B testing — automated.
Domain-aware layer over Immich. Auto-tagging via Claude Vision, asset usage tracking, mood tags, brand affinity. MCP server for agents: "find photos with Business Bay skyline for the Damac Bay landing" — agent goes to Asset Layer itself and finds them. Immich on VectorChord for optimal performance.
n8n for visual workflows. Head of Media builds custom automations without code: "new sales signal → create topic → ping me on Telegram", "8 am daily → gather tomorrow's approved bundles → send me the digest." Custom INSIS nodes connect to our API. n8n doesn't own data — it orchestrates API calls.
Better to see one end-to-end scenario than read ten architecture diagrams. Here are three "days in the life" of the team with INSIS.
The video team filmed a Damac Bay walkthrough — 4 minutes, floor plans, unit breakdown. Before: editor watches the video, writes the YouTube description, copywriters draft a post series by hand, SEO specialist separately produces an article. Cycle: one week.
With INSIS: the video gets uploaded to Immich with tag editorial-source. Asset Layer triggers the video-published source handler. Whisper transcribes. Format Strategist proposes the default bundle mix. Brief Generator writes briefs for each artefact in parallel. Production Skills generate them. 30 minutes later — the full bundle lands on Head of Media's desk.
Sunday, 23:45. A client writes to our brand-line WhatsApp: "Hi, I'm looking at a 2-bed in Business Bay under 5M." Brokers are offline, but the client doesn't drift to a competitor — auto-mode is awake.
The AI Sales Agent detects the language, queries the Knowledge Module for relevant context (units, projects, prices), checks all 8 safety gates. Confidence 0.91 — auto-mode is cleared. Before sending, the output sanitizer scans: no forbidden phrases, no In.ae mention, no internal IDs leaked. 12 seconds later the client gets a meaningful, brand-correct reply.
Sales adds a new project to UnitPilot. INSIS gets a webhook via CDC. Web Builder creates two paired landings: one for Inside Realty, one for In.ae. Two websites, two brands, two independent versions — each with its own tone, structure, schema markup, typography, photo selection.
This is the dual-brand SEO strategy (ADR-005): both sites in Google's top-10 for the same queries, looking independent. Same project, fully different prose, no cross-references. Google sees different ASNs, different stacks, different analytics owners, different author profiles.
One platform, different interfaces. Every role sees only what it needs — no noise. Capabilities are pinned in the system, RBAC on every endpoint, RLS on every table. No accidental leakage between roles or brands.
8 AM — Morning Briefing: 12 ranked topics in the Telegram bot. Approve top-3 with one tap. By 9:30 the desk has 3 Narrative Bundles in review (one bundle per click, not a thousand scattered posts). Per-bundle approval: video + 10 artefacts on one screen, approve all / approve except X.
"I want to see the entire content pack for one narrative on a single screen — video, posts, stories, article — and approve or send back with one click. I don't want to check each post separately in five different interfaces."
AI writes the first draft. The copywriter polishes it, adds the human voice. Voice guide hints in-line, forbidden phrases highlighted in red. Side-by-side: original narrative and its adaptation per (brand × format × language).
"I want AI to give me a strong first draft in our voice — not generic chat-gpt text. I want to see which spots need my originality and where the template is fine."
Doesn't do the routine. Creates templates in Penpot — for TG carousel, stories, landing, ads. Templates are parameterised (headline, photo, brand color). AI Production Skill fills the template with data for each artefact — sub-second. Designers focus on new formats, brand evolution, premium projects. Asset Layer auto-tagging finds the right photos in seconds.
"I want to design, not crank out TG carousels every day. I want to build one strong template that adapts itself to any project and brand."
Doesn't juggle five different services. Opens the Content Plan calendar — sees bundles (not random posts) with suggested timing. Can adjust timing, add channel-specific tweaks. One click — publish. Schedule Optimizer suggests best-time from history. Postiz handles the cross-posting.
"I want to see the full plan two weeks ahead, understand which narrative is playing on each channel, and know for certain nothing publishes without a brand-isolation check."
Gets a black-box video brief from Editorial Brain: what to film, what narrative, what shots, what voice-over. Films, edits in Premiere/DaVinci (their domain), uploads to Immich with the editorial-source tag. INSIS handles the rest — transcript, description, derivative content. The video team doesn't write descriptions by hand.
"I want to film and not spend time on the packaging — description, tags, posts, article. Let the system extract maximum value from my material."
Doesn't click through Creatium manually. Operates the system: checks dual-brand SEO health, indexation, rank position pairs. Adjusts SEO targets (keywords, schema), launches A/B tests. When something breaks — alert in Telegram pointing to the specific landing. No more babysitting 50 pages.
"I want to operate the system, not Creatium. I want to see the dual-brand strategy working: both sites in top-10, no affiliation signals, content unique."
Full breakdown in the next section — an entire chapter on how brokers will work in INSIS. Short version: one inbox for all 30 numbers, AI suggestions for replies, unified listing builder, launch ads from the dashboard, mobile app for everything. No more "where's the project deck", "what's the latest price", "where did this client come from."
Jump to the "Brokers" sectionSees every conversation, every lead, attribution from post to deal. Can fire /signal "push Damac Bay" from Telegram — Editorial Brain picks it up instantly. VIP clients auto-escalate from auto-mode to a specific broker. Sees when an operator is online — auto-mode deactivates on that number.
"I want to manage the team, not babysit chats. If something's wrong — the system finds me; if a VIP writes — I know instantly; conversion is real-time visible."
ROAS in one dashboard across all platforms (Meta, Google, TikTok, UAE-specific channels). Per-narrative cost: which narrative produced which leads and which deals. Per-brand budget caps, alerts on runaway spend. Brokers launch their "soft" ads from the mobile app — Traffic Manager approves.
"I want to see the whole funnel in one place and instantly know which channel to scale today and which to cut."
Final human QA for content in their native language. Especially critical for AR — RTL layout, cultural context, dialect. Sees only pending-on-review artefacts in their language. Approve / reject + concrete feedback → Editorial Brain learns from it.
"I want to see only AR content that needs my review. I don't want to wade through RU/EN — not my area. I want a simple feedback mechanism so the system doesn't repeat the same mistakes."
Executive dashboard: high-level metrics across all modules for yesterday / this week / this month. Cost tracking — all spend (Hetzner, Anthropic, Voyage, Cohere, Postiz, fal.ai) on one screen, broken down by component. System Health — critical Grafana metrics without having to dig into Grafana. Audit log: who did what, when — especially AI agent actions (`actor_type='agent'`). When something breaks — Telegram alert with suggested action. No more sitting in logs.
"I want to own the system, not operate it. I want to know INSIS is working, see business metrics, and spend my day on strategy — not on investigating why a post didn't go out."
We watched how you work today. Eight tabs open: Wazzap for one client, Telegram for another, UnitPilot to check a unit, an Excel with prices, Drive with presentations, a chat with marketing asking "send me an image please", Bitrix to log the lead, Instagram for ads. And all of it — grey, slow, unable to remember where you stopped yesterday.
INSIS is one interface that does 80% of that hustle for you, leaving you with what genuinely needs you — personal contact with the client, negotiation, expertise.
All conversations — yours, plus from the shared pool (if rotation is enabled) — in one place. WhatsApp, Telegram, platform DMs unified. Full client history: what they viewed on the site, which posts they liked, which projects other brokers have shown them.
AI suggestions appear right in the chat. Don't like them — type your own. Like them — send with one click. If you're online, auto-mode disables itself on your conversations automatically.
Hi Aida! For a 2-bed in Business Bay under 5M we have units across Damac Bay by Cavalli and Aykon City — AED 3.9M to 4.8M, 86–112 m². Want me to send a comparison with floor plans? Also: ready or off-plan?
Not an Excel sheet. Not a screenshot. Not a PDF. A live card that knows everything about the unit. All 30+ fields from UnitPilot flow in automatically — no manual copy-pasting.
"Send to client" generates a polished card with your name, contact, and brand styling. "Generate post" turns the listing into a ready TG/IG/LinkedIn post in your voice. "Edit listing" lets you customise the description, add your own photos, mark "I have an exclusive until X." "Boost (ads)" launches a Meta/Google ad on this unit straight from the app.
"Post this unit to my Instagram" — tap. 8 seconds later: a finished post with photo, description, price, your contact, and brand-styled layout.
AI writes in the right language (RU/EN/AR), in your personal tone (brokers can configure their own voice). Forbidden phrases filter automatically. Cross-brand mentions blocked. PII checks. Reviewer signs off — published. Don't like the result — tap "another variant" or edit it yourself.
mahmoud.realty 🌊 Sea-view 2-bed in the Cavalli tower. 112 m², handover Q3 2027. 60/40 payment plan, no overpayment. DM for floor plans.
#dubai #realestate #damacbay #insiderealty
mahmoud.realty 🌊 شقة بغرفتين بإطلالة بحرية في برج كافالي. ١١٢ م²، التسليم Q3 2027. خطة دفع 60/40 بدون فوائد.
#دبي #عقارات #داماك_باي
Master data (price, area, handover) comes from UnitPilot — that's the source of truth for the whole group. The coordinator updates it, not every broker individually (no desync).
But your stuff is yours: personal note, exclusive until X, additional photos, your position on negotiation, per-channel visibility. Saved — the system regenerates the posts with the new data, refreshes the card on the website, informs auto-mode about the new information.
Tap "Boost" on a listing — short form opens: budget (from $50), duration (from 3 days), target audience (presets: "UAE residents 30–50", "GCC investors", "Local expats").
AI generates the creative (video + text + copy), wires the UTM, ships it to Meta / Google. Traffic Manager approves (or auto-approves under the limit). After 24 hours of run-time — stats are already in your dashboard: impressions, clicks, conversations, leads.
You don't need to: open Meta Business Manager, hunt for campaigns, copy UTMs out of chat, fill targeting filters from scratch. You don't need to know how Meta works — you need to know your client.
Not just Google Calendar. It knows your conversations — reminds you when a client went silent, drafts a follow-up. Knows your deals — schedules the signing automatically. Knows your boost campaigns — alerts when something flatlines.
Morning brief in the Telegram bot: 3 top priorities, specific actions. End of day — a short wrap-up of what happened.
Every click is either contact with a client or real expertise. Everything else — routine, copy-pasting, searching, context-switching — that's the system's job. You do what you love and what you're paid for. Not what a computer should be doing.
Brokers don't sit at a desk. They're on viewings, in cars, at meetings, at restaurants with clients. INSIS Mobile isn't "the smaller web version." It's a mobile-first app for iOS and Android, designed from spec.
Push notification on a new client message. Swipe → quick reply via AI suggestion. Voice messages get transcribed.
Just shot photos at a viewing — the app recognises the unit (QR code or geo), attaches photos to the listing, optionally publishes to your Instagram with your signature.
See today's viewings, the route on the map, Dubai traffic forecast. One tap on a viewing → client detail + full conversation history.
Fresh video from a viewing → upload → one form (budget, audience) → launch the Meta campaign from the app. AI generates the creative, you give the final approval.
How many conversations, viewings, deals this month. Which channel brings you the most clients. Where you stand on the team leaderboard (if that's your thing).
Before a client meeting — company search. "Which laws apply to a Golden Visa via real estate?" Accurate, up-to-date answer. Works offline (cached).
Inbox + Listings + Calendar + Profile. Push notifications. Biometric login. EN/RU/AR. Offline KB cache.
Camera→listing with unit recognition. Geolocation for viewing routes. Voice transcription for quick notes. Live offer dashboard.
Boost campaigns from the app. AR unit preview (when there's a 3D model). Personal voice tuning for AI suggestions. Coaching tips.
WhatsApp auto-mode is money. If AI says something stupid to a client — we lost a lead, or worse — got a legal problem. So the AI Sales Agent is built with multi-layered defence.
This isn't "looks fashionable" — it's a load-bearing requirement for a production system talking to real clients with real money at stake.
One flag disables all auto-mode instantly. UI toggle in Settings (with confirmation), CLI emergency command. Every toggle goes into `audit.events`.
Any concrete price or discount promise → escalate. Only verified data from UnitPilot.
Visa, tax, residency, ownership rules → escalate to a licensed advisor.
`vip_level >= 1` — always a live broker, never auto-mode.
If the client already has an assigned broker — auto-mode doesn't interfere with an active dialog.
A broker is active in the system — auto-mode on their numbers deactivates so we don't duplicate replies.
Classifier detects sensitive topics (politics, third-party personal data) → escalate.
Sentiment + keyword classifier catches irritation, dissatisfaction → live broker immediately.
The model itself isn't sure → escalate. 0.85 is a high industry bar.
insiderealty.ae (our agency) and in.ae (an independent media portal) — they're not the same site under different names. Google shouldn't see any affiliation, or one of them drops out of the results.
That's why we build 8 layers of architectural independence. Not cosmetic — a load-bearing SEO requirement, encoded in ADR-005 and verified automatically on every deploy.
INSIS is a big system. 9 modules, 5 brands, 3 languages, multi-tenant, AI safety, dual-brand SEO. Building this the traditional way means 10+ engineers for 12 months. We took a different approach: solo development with AI agents writing production-grade code from detailed specs.
Every day: task → pipeline runs overnight → PR up for review in the morning. 70–85% of tasks close automatically. 15–30% land in `blocked` with a specific reason (need a decision, missing API key, ambiguity in spec).
Not "trendy", not "vibe coding". Every line of code ships to production — no MVPs, no "rewrite later", no `any` in TypeScript. If a task is impossible without violating principles — it's flagged `blocked`, we discuss it, we don't ship a watered-down version.
This documentation (35+ files, ADRs, iterations, agent specs) is the executable contract. AI agents read it before every task. Any architecture change goes through a new ADR. No "I'll tell you how to do it later."
Breaks iter-NN into atomic tasks, writes acceptance criteria.
Writes UI spec for UI tasks: states, breakpoints, copy, accessibility.
Production-grade code end-to-end. Types, tests, audit, observability, RLS.
Runs UI flow in headless browser, AI eval suites, catches regressions.
Auto-reject triggers: missing tenant filter, cross-brand mentions, `any` types, raw SQL, missing tests, hardcoded model versions, missing escalation triggers. Nothing sloppy reaches production.
We don't do MVP-first then V2-later. Every iteration is a finished, production-grade module (per ADR-002 "No MVP"). Phase numbers and execution order don't match — see the actual order below.
Server provisioning · Authentik OIDC · Postgres 16 + pgvector · Redis · ClickHouse · AFFiNE · Penpot · Postiz · n8n · Immich migration to VectorChord · Observability stack · Plausible × 4 · PM2 · audit schema · Asset Layer foundation.
Next.js 15 application layer · Authentik OIDC integration · Multi-tenant foundation · RBAC · Audit log · Health checks · Dark/light theme · Base nav and roles.
Whiteboard for the team — embedded in Shell. Used by planners and designers for architecture sketches and quick ideation.
AFFiNE workspaces · pgvector schema · Voyage AI embeddings · Cohere reranking · Hybrid search · Retrieval API. Required before iter-03 because Editorial Brain consumes retrieval.
Topics + Topic Ranker · Format Strategist · Brief Generator · Production Skills · Approval Gates · Voice Guides per (brand × locale) · Eval suites · Source Registry + Narrative Bundles (ADR-006) · Video-published source.
Postiz integration · Native Telegram publisher · Schedule Optimizer · Bundle distribution (coordinated content drops) · Best-time intelligence · Per-channel adapters.
Baileys + WABA · Conversation Engine · AI Sales Agent with auto-mode and suggestions · Inbox UI · Bitrix24 sync · Wazzap migration · 8 escalation triggers · Kill switch · Output sanitization. The most mission-critical iteration.
Multi-language cross-lingual retrieval (RU/EN/AR) · Eval suite expansion · Observability dashboards · Auto-sync with UnitPilot DB via CDC · Knowledge UI in Shell. Runs in parallel with iter-03.
ClickHouse warehouse · native collectors (IG, LinkedIn, TG, YouTube, Plausible × 4) · Bitrix webhooks · End-to-end attribution · Metabase dashboards · Per-bundle metrics rollups · LLM cost tracking · Editorial feedback loop · Ads management (ad_accounts, ad_campaigns, ad_metrics).
Inside Realty site (Next.js on Vercel) + In.ae site (Astro on Cloudflare Pages) · Landing generator with UnitPilot integration · Schema markup · Sitemap · Internal linking · A/B testing · ADR-005 independence enforcement. 1,500+ landing pages, automated.
UI for browsing market references (UnitPilot read-only): Districts, Projects, Developers, Units. Filters · search · cards · maps. UnitPilot is the source of truth; INSIS is the convenient viewer for brokers.
React Native app with push notifications, biometric login, offline Knowledge Base cache, camera → listing, geolocation for viewings, boost campaigns. Phase 1 → MVP+ 8–10 weeks after iter-05.
Total time to full delivery across all 10 iterations + Mobile: 7–8 months with solo development and the autonomous AI pipeline. Full specs for each iteration (with acceptance criteria, schema, code samples, Definition of Done) live in docs/iterations/history/iter-NN-*.md in the repo.
This isn't a unicorn pitch. It's about concrete operational changes for the group, and a potential SaaS exit if it becomes clear other UAE agencies would want this tool.
Every phase production-grade from day 1. No "we'll rewrite later."
Makes people 3–5× more effective. Doesn't replace fully. Human checkpoints everywhere.
Every brand has its own voice. The system doesn't dilute that for the sake of uniformity.
Self-hosted where possible. Client and business data with us — not vendors.
This site is a concept preview for our team. If you read this far and have questions, objections, ideas, or "in my role it doesn't work like that" — come talk. Every comment is valuable — we're still at the stage where everything is cheap to redesign.
Especially keen to hear from:
Full architectural docs (35+ files: vision, system-design, ADRs, iterations, brand guides) live in a private GitHub repo. Ping me on Telegram for access.