Portfolio

Mohamed Hassan

Senior Software Engineer · Backend & AI

I build production AI systems and the backend they run on. On FlairsTech's AIMY platform I lead a pod and ship LLM agents, MCP servers and retrieval pipelines across 10+ services. On my own, I designed, built and ran a multi-tenant SaaS on Azure and load-tested it to 2,000 concurrent users.

Cairo, Egypt (UTC+2) · open to remote roles

4+
years shipping production software
10+
services on the AI platform I work on today
2,000
concurrent users held in load tests, on a SaaS I built alone
1,260+
automated tests on that SaaS, most against a real SQL Server

Selected work

Three bodies of work, newest first. Each lists my role, the period and the technology used.

FlairsTech · March 2025 to present

AIMY: AI agents for support, sales, recruitment and QA, and the backend behind them

AIMY is FlairsTech's own AI platform: more than ten .NET, Python and React services, with 1,200+ users onboarded. I joined as a software engineer, led a pod on a two-month trial from July 2026, and was then promoted to senior software engineer.

  • Lead and mentor a pod of three engineers that owns AIMY QA and Connect: sprint planning, estimation, stakeholder triage and code review (160+ pull requests reviewed since July 2026). The pod has delivered 280+ tickets at about 25 a sprint, with 5% reopened.
  • Designed an AI actions layer and Product Insights. The model classifies interactions into facts, SQL ranks them into insights, and a person approves every action on a six-state machine with an audit trail and undo. The model reads and explains; it never changes state.
  • Built the Ask AiMY analytics agent (FastAPI, Claude through LiteLLM): full ticket context, answers scoped to one interaction, the same numbers as the dashboard, and a guard that stops it from inventing data it cannot see.
  • Built MCP servers that connect Claude and in-house agents to knowledge retrieval, sales enrichment and recruitment workflows.
  • Built config-driven knowledge sync for Freshdesk and TeamSupport, added context-tag reranking in Qdrant, and summarised tickets over the 8,000-token embedding limit instead of failing them.
  • Designed the central ABAC / RBAC authorization system used by 1,000+ employees across 6+ applications, with matching .NET and Python middleware; later moved access grants to entity keys across 4 services and closed a cross-organization scoping gap.
  • Unified voice-call persistence across Voice, Connect and QA: one post-call path that stores every transcript, recordings through presigned S3 URLs, and race-safe session writes enforced by unique indexes.
  • Led the AIMY QA 2.0 release across 6 repositories and coordinated platform releases of up to 14 repositories, plus 20+ production hotfixes; wrote the team's branching and release workflow.
  • Wrote WarrenMQ, a RabbitMQ library published on NuGet, and a Mediator library that replaced MediatR after its 2025 licence change; both are reused across services. Also built 9 production n8n workflows that keep Salesforce, Zendesk, Freshdesk and Jira in sync, and moved 8+ containerised applications between AWS accounts and regions.
Interactionscalls, tickets, chats 1 · FactsLLM classifies 2 · InsightsSQL ranks 3 · Actions6 states · audit · undo Userasks questions LLM agentreads and explains Reviewera person queue rank propose reads reads answers no write path approves via .NET API
The design of AIMY's actions layer. Classification and ranking are automated, but the only path that changes state is a person approving through an authorised .NET endpoint. The LLM agent can read and explain; it never writes.

Freelance, outside my full-time hours · November 2025 to October 2026 Live

Ansaq: a multi-tenant food-service SaaS, designed, built and run alone

Ansaq Hospitality is a Riyadh-based B2B platform where companies, universities and hospitals run cafeterias and contracted caterers, and their staff and guests order for pickup or delivery. I was the only engineer, from architecture to production.

  • Rebuilt a legacy codebase of more than 20 projects into 4 Clean Architecture projects (CQRS, DDD, no circular references), then grew it to 240+ REST endpoints and 260+ MediatR handlers serving 6 roles, fully bilingual in English and Arabic with right-to-left layout.
  • Raised the concurrent-user ceiling from about 50 to 2,000+ and proved it under load. I removed N+1 queries, moved 65 read handlers to Dapper and added HybridCache with stampede protection. A 12-scenario k6 suite then held 2,000 concurrent users with server p95 flat at about 34 ms on one replica, and control experiments traced the remaining limits to configuration, not code.
  • Per-organisation single sign-on (OIDC with just-in-time provisioning), branded sign-in pages and emails for each organisation, and refresh tokens, on fail-closed defaults: rate limiting, account lockout, Key Vault-rotated JWT keys and PII masking.
  • Real-time delivery alerts: SignalR order tracking that resyncs after connection gaps, and Web Push (VAPID, service worker, installable PWA including iPhone) so delivery staff get new-order and VIP alerts with the app closed.
  • Inventory and recipe engine: receiving with batch, expiry and unit price; adjustments, waste and stock counts; recipes that deduct stock on every order, unit conversions by kind, and how many orders current stock covers.
  • Tenant isolation and concurrency: store-level scoping on every inventory, recipe and unit action; vendor-operated stores serving several organisations behind approval-gated linking; atomic numbering with UPDATE … OUTPUT, row-version concurrency on orders, and a filtered unique index for one active cart per user.
  • Azure end to end: moved the platform from a legacy Azure tenant to the client's own directory and DevOps organisation, with separate production (UAE North) and test environments; a build-once pipeline with manual production approval and a health gate; media moved from SQL to Cloudflare R2 with presigned uploads; about 20% lower cost with scale-to-zero.
  • Testing: grew the Testcontainers SQL Server suite from 561 to 1,260+ tests, with a custom interceptor that fails CI when a change adds N+1 queries.

240+ API endpoints260+ handlers51 data entities1,260+ tests140+ Angular components560+ commits

Outlet menu page with category tabs and drink cards showing photo, price, calories, preparation time and an Add to Order button
The outlet menu a guest opens from a QR code, in the Ansaq tenant's own colours, logo and menu.
Two phone screens: the menu list, and an order page showing the order number and live status steps
The same menu on a phone, and the live order status page. The order shown is a sample.
Sign-in page showing the Ansaq logo, the name Ansaq Hospitality, a welcome line and the sign-in form
The sign-in page, branded per organisation. All three screens are the real application running locally with the Ansaq tenant's own branding and menu.

IT Pillars · July 2022 to February 2025 Live

Yaqouti Workflow, and self-service portals for Saudi enterprises

Two bodies of work: a request and approval engine that organisations configure themselves, built with .NET and Angular on Azure; and portals built inside ManageEngine ServiceDesk Plus for five organisations.

  • Redesigned roles and permissions: more than 15 actions per resource in place of view and manage, and a new resource is now added in one place with no database migration.
  • Cut one list's response time from 2 minutes to 235 ms.
  • Built, over seven months, the feature that opened the system to outside vendors alongside employees, each with their own interface; rewrote the groups and rules services across 70+ files and fixed 40 validation bugs.
  • Integrated Azure Active Directory sign-in, and built a templating system for email, SMS and notifications that cut content-update effort by 40%.
  • In one year: 240+ work items and 500+ story points completed, 30+ pull requests written and 60+ reviewed.
  • ServiceDesk Plus portals for a bank, a government authority, a healthcare procurement company, a cloud provider and a gaming group: employee dashboards on the product's API in plain JavaScript, an Arabic right-to-left service portal, and branded login pages. The product has no extension point for most of this, so I traced how its pages load and changed the bundled scripts and templates, keeping every original so each change could be undone.
Yaqouti home dashboard with four request counters and charts of open and closed requests Yaqouti service catalogue listing process categories with their sub-categories
Yaqouti Workflow, captured from the live system: the home dashboard and the service catalogue where an organisation groups its own processes. Names, emails and the company logo are covered.
The Arabic service portal built for a government authority, running my source code with sample data. The client's film, logo and brand pattern are left out.

How I work with AI tools

I wrote software by hand for most of my career: everything at IT Pillars, including the workflow engine and the service-desk portals, and my first year at FlairsTech.

I adopted AI coding tools late and on purpose. I set the design, review what they produce and back it with tests, so I stay in control of everything that ships. The same rule shapes the AI systems I build: models classify, retrieve and explain, and people approve what changes.

Technology

AI and LLM

MCP, LLM agents and tool calling, RAG, embeddings, semantic search, Qdrant, LiteLLM, Claude, Amazon Bedrock

Backend

C#, .NET 8 and 10, ASP.NET Core, EF Core, Dapper, MediatR, Hangfire, Python, FastAPI, OIDC / SSO

Architecture

Clean Architecture, DDD, CQRS, event-driven design, microservices, multi-tenancy, RBAC / ABAC

Data and messaging

SQL Server, Azure SQL, PostgreSQL, Redis / HybridCache, RabbitMQ, SignalR, n8n, webhooks

Cloud

Azure (Container Apps, Key Vault, Azure SQL, Application Insights, DevOps), AWS (ECS / Fargate, Lambda, S3, Cognito, KMS, Bedrock), Cloudflare R2, Docker

Quality and frontend

xUnit, Testcontainers, k6, CI/CD, code review; Angular 18, React 19, TypeScript, RxJS

Contact

Email
mohahassan100@gmail.com
LinkedIn
linkedin.com/in/mohamed-hassan-484329248
Location
Cairo, Egypt (UTC+2) · open to remote
CV
Download the PDF

Figures come from my delivery records and the code repositories. Client names for the service-desk work are withheld, and no screen shows real customer data.