← All projects

MriyaDesk

On-premise · ServiceDeskPilot

A full-blown ServiceDesk with on-premise AI — what companies usually pay a vendor and keep a dev team for. Designed, styled and built end-to-end, myself.

Role
Product, design, architecture and code — one person
AI
On-premise ticket classification by text and photo
Stack
Go · Python/FastAPI · Next.js 16 · React 19 · PostgreSQL + pgvector · Redis · MinIO · Docker
Scale
Pilot at Mriya Resort & SPA: ≈330 rooms & ≈20 villas, ≈3,000 staff
Size
~657 commits · 35 ADRs · 83 migrations · 12+ services
Timeline
Mar – Jun 2026 · in pilot

Why it exists

Mriya Resort & SPA runs on dozens of service teams closing hundreds of requests a day: technicians, engineers, cleaning, housekeeping, grounds. I run the heavy-equipment department myself, so I know from the inside how this usually works: requests drown in chats, phone calls and paper, nobody tracks SLA, and managers never see the real picture.

MriyaDesk solves it like a real product: one system where a request lives its whole lifecycle — from an employee's report to SLA-based closure, with transparent analytics for management. Built around how the work actually happens on site, not in a vacuum.

Anyone can file a request

The requester isn't only a technician — it's any employee. Describe the problem, set the location, link the equipment, attach a photo, video or voice note — and the request goes to the right team. On the right, the system assembles a live summary on the fly: priority, service line, projected SLA.

Creating a request: description, location, equipment link, photo/video/voice.

The request goes the full distance

From there the request is routed to a service line and an assignee, SLA is counted in business hours separately for response and resolution, and on a breach cascading escalations fire up the hierarchy. The whole history — discussion, escalations, log — lives in one card, next to the classification and the AI assistant's hints.

Ticket card: response/resolution SLA, escalations, classification, AI hints.

On-premise AI that gets the point

A dedicated AI service classifies requests automatically — by text and by photo — and suggests the service line and priority. The key part: the model runs on-premise, on the client's own servers. Data never leaves — critical for closed facilities. Semantics are built on PostgreSQL + pgvector.

SLA, escalations and control

SLA is configured per service line and priority with business hours in mind. The system surfaces critical and overdue requests on its own, runs cascading escalations, and keeps managers in the loop — what's on fire right now and where.

Flexible SLA rules per service line and priority.

Configurable for any team

Statuses and transitions (workflow), service lines, positions, skills and the role model are all configurable without a developer. So the system fits technicians, cleaning and grounds alike — each team works by its own process.

Configurable statuses and transitions — no developer needed.

Analytics for managers

Dashboards and reports show load and performance per service line, SLA compliance, ticket dynamics and org-structure reporting. For the first time a manager sees the teams' work in numbers, not just words.

Dashboards and reports: load, SLA, performance per service line.

Under the hood

A microservice architecture, everything runs on-premise in Docker — at the client, no cloud. Designed and documented like a grown-up product, built with AI-assisted development.

  • Go core, a Python / FastAPI AI service, a Next.js 16 + React 19 web app
  • PostgreSQL + pgvector for semantics, Redis, MinIO for files
  • On-premise AI: text & photo classification with no data leaving the client
  • Offline-first PWA — one window for all staff: Service Worker, sync when back online
  • Observability: Prometheus / Grafana; 12+ services in one docker-compose
  • 35 ADRs and 83 migrations — architectural decisions are on record

One app for every employee

The mobile PWA is a single point of entry for everyone. Any employee files a request from their phone and tracks its status, while crews handle their own work and inspections right there. One window instead of chats, calls and paper — for requesters and crews alike, offline on site too. It syncs the moment connectivity is back.

Home screen: create a request, my tickets, my work — one window for everyone.
Work list — priority, status, location.
Ticket from the phone: QR equipment scan, photo, video, voice.
Contact

Let's
talk.

Looking for a role in product / AI / operations — remote or relocation.

Open to new opportunities. Happy to walk you through my experience in detail, show you the projects, and share access to the code.

Open to remote / relocation / business trips