Elait Group · Internal Operations

Systems Directory

Every platform, tool, and pilot the team has shipped, in one place. Nine live environments — pick a line below.

Live — up, valid SSL certificate
CH.09 — AI GOVERNANCE Live

AI Governance Platform

Standalone AI governance register — domain-neutral, distinct from the HDMP Governance Agents pilot. Registers every AI model/agent in use (owner, lifecycle stage, autonomy tier), what feeds it (system prompts, RAG corpora, fine-tune sets, tool schemas), where it runs and whose data it touches, and who signed it off, then pulls lineage and data-quality signal from connected catalogues and draws the whole estate on a knowledge graph. Runs approval gates before a model can go live, an incident register with statutory-deadline tracking, service-level tracking against issue trackers, and periodic conformance sweeps — all on a 15-minute scheduled cycle separate from the web process, so a stalled scheduler is visible rather than silently skipped. Microsoft Entra ID single sign-on is live (authorization-code with PKCE, single tenant, real admission controls — domain allow-list, B2B-guest refusal, unverified-email refusal) alongside local password sign-in with mandatory TOTP two-step for admin actions. 4.0.0 added a read-only MLflow integration, regulatory control reports across six regimes (EU AI Act, GDPR, HIPAA, Saudi NDMO, India DPDPA, Japan APPI), change gates covering edits to a live model (not just going live), and a day/night appearance toggle. New in 4.1.0: post-market performance monitoring — a baseline is captured automatically the moment a model is promoted to production, later readings from evaluation jobs are compared against it (direction- and tolerance-aware, using the window's median so one bad afternoon isn't read as degradation), and a live model that's gone quiet on measurement is itself a finding, feeding EU AI Act Article 72; a new oversight-effectiveness detector asks whether the approvals behind every gate are real — flagging decisions made in seconds, approval concentrated in one person, or nothing ever refused, reported as a question rather than a verdict (Article 14); two new data-catalogue connectors, Snowflake Horizon (reading SQL directly over Snowflake's own privacy/semantic classification, masking-policy coverage, and engine-resolved dependencies) and Unity Catalog/DataHub, bringing the total to eight catalogue platforms; and a real bug fix — residency tags using underscores (e.g. data_residency) were being silently dropped by every existing connector's too-strict name match, now normalized. New in 4.2.0: a trusted browser can skip the two-step code for 30 days after actually presenting one once, offered only after a factor has been proven — trusted is explicitly not the same as verified, so deciding a gate or managing people still asks for a fresh code, raising the same session rather than signing anyone out mid-task; losing a device is now self-service via a recovery code (POST /api/auth/mfa/re-enroll, no administrator needed), which revokes every trusted browser and session at the same time since a lost phone and a lost laptop are often the same event; people can see and revoke their own trusted browsers; and a real bug fix widening a too-narrow session column that silently passed on SQLite but would have 500'd on Postgres the moment a browser was trusted. New in 4.4.0: which actions actually require a fresh code from a trusted browser is now a configurable policy rather than one fixed rule — a trusted browser now satisfies routine administration outright, while deciding a gate still always demands a fresh code as a regulator-facing record; the console now pops an inline "Confirm it’s you" dialog on a step-up refusal and resumes the original action instead of dead-ending on an error; and sessions now record which trusted browser authorised an identity change, closing an audit gap. New in 4.5.0: passkey (WebAuthn) sign-in alongside TOTP — the stronger factor, since a leaked database yields only public keys and a phishing page gets nothing back; what the authenticator actually verified is recorded rather than assumed, so an unverified passkey doesn’t quietly count as a second factor (configured via AIGOV_WEBAUTHN_RP_ID/AIGOV_WEBAUTHN_ORIGIN, off by default and not yet enabled on this deployment). Service-level policies can now be scoped to one named model, not just a business unit — the most-specific policy wins ("that vendor model gets 24 hours" beats a general rule), and GET /api/sla/for-model/{id} answers what a model owner is actually promised and why. A new enterprise policy register pairs governance documents (reference, version, owner, review date) with enforcement rules checked at registration, lifecycle transitions and gate decisions — rules come from a fixed, auditable catalogue (no arbitrary expressions), blocking rules have no override/waiver path by design, and an active policy is never edited in place, only superseded. And the console can now be asked about the audit trail in plain(ish) English ("who approved anything in the last 30 days") — parsed locally into one parameterised query, never a language model, with the plan/SQL always returned alongside the answer and every lookup itself logged. SCIM 2.0 provisioning and every sensitive field (prompts, secrets, MFA seeds, evidence) still encrypted at rest under its own master key. Seeded with demo data (sample models, agents, catalogues, and one deliberately-blocked model) so the console isn't empty on first look. New in 4.6.0: two-step verification can now be switched on or off for the whole estate, not just per account — switching it off requires a stated reason and writes a loud audit entry naming who and how many accounts relied on it, switching it on requires none, and two environment-level locks (AIGOV_MFA_LOCKED/AIGOV_MFA_REQUIRED) can take the decision out of an administrator's hands entirely, including a deliberate way back in for an estate that has locked itself out. A new account gets a 7-day settling-in window before the requirement bites, granted at its first sign-in rather than at creation so it reaches every account regardless of how it arrived; the window excuses not having enrolled yet, never excuses an already-enrolled account skipping its factor. A real bug fix closed a gap where an MFA-exempted account (such as a break-glass login) could still be blocked from deciding a gate — the one moment the exemption mattered most. New in 4.8.0: email codes as a deliberately weak third second-factor — offered only when SMTP is configured, it satisfies sign-in but is refused outright for deciding a gate, managing people, or trusting a browser, since for most people the mailbox is also where a password reset lands. A ninth catalogue connector for Ab Initio Metadata Hub (no public REST surface exists, so every path/field name is configuration with a documented default), alongside a new connector-conformance test suite that parametrises over the whole connector registry and caught real parsing bugs — bare-list response bodies, null result keys, non-JSON 200 responses — in every connector that already existed. Assets can now be registered by hand (POST /api/assets) for the gap between a system existing and a catalogue reaching it, with a later harvest adding what it knows rather than overwriting what a person asserted. A new regional-regime workflow proposes which law (EU AI Act, GDPR, NDMO, …) an asset falls under from its residency, but only as a proposal a governance lead must confirm or dismiss — and a decision already made is flagged stale rather than silently rewritten if the data moves. Service levels can now track an asset's own freshness (a rolling clock from its last catalogue sighting, not from when the policy was written). The dashboard's posture counts moved out of a page-wide header into a clickable Dashboard → Overview screen, and the sidebar is now grouped into four sections instead of a flat list.

CH.02 — CRM Live

Elait CRM

Sales & marketing CRM — staged pipeline with exit-criteria gating & deal approvals (open to Sales/Marketing with a self-approval guard), automatic bundle line-item pricing, paginated deal board, lead scoring, UTM attribution, product catalogue, role-based access, local password & passkey sign-in alongside Microsoft SSO, biometric step-up auth scoped to deal approval/rejection only (user administration — roles, credentials, enable/disable, deletion — is authorised by the admin role alone, so a routine access fix never turns into a support request), admin-provisioned access only (a valid Entra login no longer auto-creates a working account — an admin must add someone first, with a clear "not set up yet" screen in the meantime), admin user deletion with book reassignment and an unowned-contacts recovery sweep, live Outlook/Graph sync (both inbox and sent mail, attributed to whichever teammate is actually on the thread) with both an owner-level and a per-contact logging opt-out, unit-scoped unified fuzzy search, per-business-unit contact consent & ownership hand-off tracking, multi-replica HA with leader-elected background jobs, contact-preference governance (unsubscribe & do-not-contact), a multi-channel prospecting cadence engine (LinkedIn/email/phone touches scheduled as tasks or sent automatically, tier-gated and acceptance-aware, plus an optional weekly cold-call touch base), a day/night appearance toggle, a left/right/top navigation-position picker, an August security-hardening pass (safe file/attachment handling, a closed cross-business-unit deal-attachment access gap, rate-limited login/forgot-password/reset-password, hardening response headers, case-insensitive email lookups), and a further access-security round (changing or resetting a password now invalidates every other session immediately, open tabs pick up role/provisioning/disable changes within a minute, revoked passkeys are rejected outright, and the API refuses to start with a wildcard CORS origin), and a passkey/role-change consistency pass — passkey sign-in is now presented as available to every user (not just an admin second factor), role changes in Admin now go through an explicit before/after confirmation step instead of firing on a single dropdown click, and a role change that could not actually hold (a bootstrap `ADMIN_EMAILS` account) is refused outright with the reason, instead of appearing to succeed and silently reverting, and a redesigned sign-in screen that now offers password, Microsoft, and passkey together as equal alternatives rather than hiding two of them behind a mode switch, and a September transport-security pass — every API response now forbids caching outright (closing a stale-role-after-change display bug), HSTS is sent on every HTTPS response, a non-HTTPS production configuration now refuses to start rather than warn, and the ingress/nginx now redirect plain HTTP to HTTPS with TLS 1.2/1.3 only — and a visual campaign canvas — a drag-and-drop plan builder (audience, email, LinkedIn, call, wait, split, goal blocks wired into a chain) with a real submit → approve → launch workflow, versioned so every submitted plan is kept exactly as agreed and can be restored later, compiling into the existing sequence engine on launch rather than running independently, and a plan-version preview — any earlier submitted version of a plan can now be viewed read-only on the canvas (a clear amber banner marks it, with a one-click way back) before deciding whether to restore it, so restoring is no longer a blind guess and your current unsaved draft is never lost by looking, campaign plans can now branch — a split block sends nothing but evaluates a condition (a reply, or an email open) and routes each contact down one of two labelled arms, resolved live off the same reply/open signals the CRM already records, with loops and ambiguous branches refused at approval rather than silently mis-compiled — a new sentiment-analysis feature scores what people say back: campaign replies are scored automatically (no network or key needed, using a transparent lexicon that handles negation so "not great" doesn't read as praise), external pages/feeds can also be registered per company or business unit and polled on a schedule, and every score is shown next to the actual text that produced it rather than as a bare number, and a real admin-safety fix — removing the last usable admin's role is now refused outright (a disabled admin no longer silently counted as "still covering" the platform, closing a gap where the demotion check and the deletion check had drifted apart) — and an admin-removal consistency pass — taking away an admin's role now runs as one atomic disable → change → re-enable transaction with a per-step audit trail (closing a window where a just-demoted admin's still-open session or in-flight action kept its old privileges), disabling an account is now explicitly a suspension that leaves the role untouched (so returning from leave never needs re-granting), and stepping a suspended admin back down now lands them safely on read-only instead of restoring whatever role they'd previously been granted — plus a real dashboard bug fix, where a malformed widget payload could blank the whole panel — and a Phase 1 account-management round: every customer account now rolls up a health read (Healthy/At risk/Critical, with the reasons named — no logged activity in a while, an open high-priority ticket, a renewal approaching quietly), current services, contract value (TCV/ACV), renewal date, open growth opportunities, and a named account owner distinct from any one deal's owner, surfaced both on the account page and a new dashboard-wide Customers view (renewals due, at-risk accounts, growth opportunities across every customer at once); a deal can now be deferred rather than forced to Won/Lost — it stays exactly where it is on the board with a revisit date and reason, and reappears as a notification once that date arrives, distinguishing new-business/expansion/renewal deals along the way; meetings gained audio transcription (record straight from the browser or upload a file, OpenAI-compatible or Azure Speech, proposed into the notes field for review rather than auto-saved); and campaigns gained a management funnel (Contacts Targeted → Responses → Meetings → Qualified Opportunities → Proposals → Pipeline → Wins) computed from data already tracked — for the Elait Group team. New in 2.19.0: every dashboard widget can now be viewed at two widths — the organisation as a whole, or just your own records — consistently across every figure, so numbers can never quietly disagree with each other (asking for org-wide data without standing to see it is refused outright, never silently narrowed); three new manager roles (sales, marketing, and read-only-sales manager) each get organisation-wide dashboard visibility on top of their base role's permissions, and the two non-read-only manager roles can publish an org-wide default dashboard layout for colleagues who haven't customised their own; and a real bug fix — the pipeline-by-stage widget was missing a business-unit filter on deals, so switching business unit changed the bars' labels without changing their values. New in 2.22.0, a security-hardening round: a real SSRF fix closed a path where a registered sentiment source could be pointed at Azure's instance-metadata endpoint and leak managed-identity credentials into the CRM's own database (every redirect hop is now re-validated, not just the URL at registration time); a real injection fix stopped an unescaped % in search text from matching every row in one request; and search itself is now ownership-scoped for contacts/companies/deals the same way the working lists already were, closing a gap where search could read past what a list would show. Working lists (Deals/Contacts/Companies) now show what you own or that nobody owns — deliberately looser than dashboard reporting, which still counts only what you own — enforced identically at list and detail level, with peer deal approval and duplicate-account lookups kept working via two new endpoints built for exactly that. Interactive API docs are now off by default in production. Zero schema changes this round.

CH.08 — HEALTH SITE Live

Elait Health Marketing Site

Public-facing marketing site for Elait Health — 9 content pages (home, platform, AI governance, use cases, who we serve, company, news, FAQ, contact) plus a Partner Interest portal and a 12-question AI Governance Readiness self-assessment. Static reference build for an Elementor rebuild; ships with a tested WordPress plugin for the two forms, not yet installed here, so form submissions don’t persist on this deployment. v1.0 (static export, 21 Aug 2026).

CH.07 — HDMP ANALYTICS Live

HDMP Analytics

Stateless MCP connectivity prototype for the HDMP FHIR Analytics Platform architecture — a policy-driven Gateway that masks structured (FHIR) and unstructured (clinical-note) data per field, per role, from three mock connectors (hdmp lakehouse, clinical notes, Metadata Hub). Real local password & passkey (WebAuthn) login, plus federated AD/Entra ID sign-in via a genuine OIDC client (proven against a bundled mock identity provider — not yet pointed at a real Entra tenant). User-built reports & dashboards with CSV/PDF export, a natural-language “Ask a question” layer, and a full audit log. Built on realistic mock data throughout, not a live connection to any real hdmp/Metadata Hub/Entra system. v1.0.1.

CH.06 — HDMP Live

HDMP Governance Agents

Agentic data-governance pilot for Elait Health, now the full 14-agent spec — agent registry, governance-failure communications (email/Slack/Teams), data-contract authoring, runtime conformance & enforcement (quarantine + human-gated blocks), data-quality remediation (rules-based root-cause classification, deterministic auto-fix for clear-cut cases), contract change management (breaking changes need dual approval), consumer-onboarding access requests routed by sensitivity, drift monitoring ahead of outright breaches, ownership & lineage validation (inferred, never asserted, until a named person attests), compliance-control packages, agent-promotion gating, an append-only decision audit log, live agent-performance monitoring with auto-demotion on drift, and oversight-effectiveness analysis to catch rubber-stamped approvals — all 14 agents propose but require human approval before going active, with a live orchestration dashboard. v2.0.0.

CH.05 — ONE OR Live

ONE OR Command Center

Operating-room scheduling reference platform — FHIR R4 resource model, local + Microsoft Entra SSO login with admin user/group management and self-service password reset, workforce scheduling with a fatigue/rest-period rules engine on top of two-level leave/roster approvals, real 26-KPI MOHAP/DHA/HAAD framework, full 15-step perioperative process map with case-level clinical timelines, an append-only audit log with CSV export, global case/patient search, EN/AR i18n, patient-comms tracking (Airmeez), real Burjeel brand logo with a redesigned visual system (Space Grotesk/Public Sans/IBM Plex Mono, White/Black theme modes), and optional Vorro/Cerner/HDMP EHR + AI assistant integrations (off by default). v2.4.

Azure Infrastructure

rg-ivr-analytics-platform · Spain Central · subscription be9e4611-325a-42a9-9977-02d6ca22f734

AKS Cluster aks-elait-ai · Kubernetes 1.34 · 3 × Standard_D4s_v3 (system pool)
Container Registry acrelaitaiaf3d35.azurecr.io · Basic SKU
PostgreSQL psql-elait-307937 · Flexible Server v16 · Standard_D2ds_v4 · 32 GB
Blob Storage stelaitcrm0754db · Standard_LRS
Jump Box VM vm-ivr-analytics-platform-jumpbox · Standard_D4ls_v5
Entra ID Tenant d98e16c4-4ec4-4b35-ad39-b3d3da3e4972