


Clinicians work with a visual map of teeth and their clinical states, rather than an abstract patient record.
Monitoring, planned procedures, and completed treatment are separated clearly while remaining linked to the relevant tooth.
The screens define more than a visual direction: they structure the key workflows around appointments, treatment, services, documents, and financial data.

Every treatment step is tied to a measurable indicator — the system checks on its own whether to continue the plan or suggest another.
Enter a diagnosis and case parameters, and the system surfaces matching protocols and stages — no digging through an archive.
Deviations from a protocol are logged automatically — making it clear when the issue is the doctor, and when it's the protocol itself.

The doctor builds a standards-compliant document through clicks instead of manual text entry — saving time at every appointment.
Lifetime medical history with filters by keyword, specialty, and institution — no need to search for documents manually.
Allergies, current medications, chronic conditions, vaccination status, tasks, and upcoming visits — all visible at once, no need to jump between sections.

Zoom instead of endless scrolling
Years collapse into an overview, an hour expands on click — no more paging through the chart record by record.
Chronic conditions surface themselves
One chronic diagnosis, and its entire history is already laid out on the timeline — nothing to dig for.
Lab data lives on its own
A separate scrollable layer: stack several indicators and watch how they move together.

Doctors investigate virtual patient cases, select examinations, and form diagnostic hypotheses step by step.
Incorrect diagnoses become learning signals, helping doctors return to similar cases and strengthen weak areas.
Personal CME goals, difficulty-based rewards, and visible progress turn a recurring requirement into a clear routine.

AI determines the appropriate specialty based on symptoms—the patient can be directed immediately to, for example, a neurologist, bypassing a general practitioner as an intermediary.
The same AI-based preparation, completed in advance, saves time during the in-person visit—the doctor doesn’t spend the standard 20–30 minutes on basic questions, meaning they can see more patients without compromising quality.
Requests come through the familiar WhatsApp bot; the clinic pays a percentage of the consultation fee rather than an integration fee—free time between appointments turns into revenue.

The product owner cares about which partners are pulling their weight and which are stalling. The partner cares about earnings and who needs help. The clinic cares whether this works at all. Same data, different emphasis.
A clinic opens this once a month. In that one minute it has to see what it's earning and where it's losing — otherwise it won't come back.
Nothing gets integrated into the network's existing EMR, and doctors install nothing — they join through a WhatsApp link.

Doctors, laboratory services, radiology, nursing services, physiotherapy, packages, and offers — each is booked through its own logic, but all live within one shared storefront.
The patient describes the problem in their own words, and AI extracts symptoms, clarifies details, and determines the required specialty.
Test history with deviation markers, medication adherence with missed doses, insurance, and wallet — a working tool, not a PDF archive.

Lock-screen advertising wasn't technically viable — I proposed an interactive widget as a new channel for selling the same thing.
Full Scale Solution, MVP, and PoC — with reasoning for what to test cheaply now and what to leave for later — gave the client a development plan, not just a picture.
User, advertiser, moderator, and stakeholder each got their own set of step-by-step scenarios before a single screen was drawn.

Medication shown as adherence dots per day, vital metrics charted against a shaded normal range, a pregnancy-specific exercise recommendation for the current week
A patient holding a prescribed list of tests can see which clinic covers all of it — and books the entire order in the app instead of leaving to source the rest elsewhere.
The intake form, voice note, and files are collected while the patient waits for the doctor — so the paid minutes go to medicine, not to questioning.

Appointment, history, labs, medications, video call, and audit log — as tabs within the patient chart. The doctor never leaves the context until they're done.
The doctor runs the visit, reception resolves schedule conflicts and registers patients, the lab moves samples through a queue — each with its own flow, not one admin panel for everyone.
A timed plan of future visits, metrics for the patient to track, and a month-long chat — the doctor sees how what they prescribed turned out.

Revenue, sales channels, and doctor utilization in hours — the plan is calculated from the schedule automatically, and actuals are compared against it.
A flexible permissions builder: any combination of access for any position, granular per section — instead of a fixed list of roles.
A shared standard for all clinics, but a branch can deviate where it's justified — under platform moderation.

The opening section frames the company through a concise positioning statement, then immediately connects it to a real flagship project.
Development directions, statistics, project details and completed work turn an abstract promise into tangible evidence.
Large architectural imagery, concise text blocks and changing section layouts create a premium, presentation-led experience without overwhelming the visitor.

Users select not only a premium vehicle, but also a specific driver based on language, experience, age, personality, and interests.
Additional services turn the driver into more than a chauffeur: bodyguard, translator, secretary, personal concierge, and shared-ride options can be added to the booking.
Users can delegate restaurant reservations, shopping, daily errands, entertainment, and VIP requests to the driver, then track and discuss those tasks inside the app.

Customers apply shades to prepared interior scenes, switch lighting conditions, and compare colors across a realistic wall surface.
The module imports catalogues from popular manufacturers, while cross-references and paint-base compatibility hide technical complexity from the customer.
Chosen colors can be added to the cart with the tinting service, ordered as samples, saved in an account, shared by link, and quickly reordered later.

Route, visit, and employee status are brought into clear working views rather than buried in reports.
Managers can start with the team-wide picture, then drill down into a route or store to see the details.
The work goes beyond visual polish: it defines a direction for core workflows, including data hierarchy, filtering, prioritisation, and exception management.

The profile brings together contact details, the responsible team member, programmes, documents, finances, and activity history.
Admissions stages, programme changes, and urgent tasks are surfaced clearly, helping the team see where action is needed.
I established reusable patterns for lists, cards, statuses, tabs, and change logs—not a one-off screen, but a foundation for further CRM development.

Healthcare professionals, medical representatives, and pharmaceutical companies share one space for news, expert content, discussions, and role-relevant materials.
Points, levels, achievements, and rankings turn participation into visible progress rather than an abstract reward system.
Activity, achievements, and community participation become part of the user profile, helping each person see their own journey inside the platform.

The main screen shows portfolio value, performance, account structure, and assets before users move on to an individual trade.
Buy and sell flows account for order type, commission, available funds, insufficient balance, and the selected account before an operation is confirmed.
Users can top up accounts, withdraw funds, manage bank details, and close a brokerage account while seeing which positions, liabilities, or documents prevent the action from being completed.

A vertical video feed helps users assess light, space, views, surroundings, and the overall atmosphere of a property within seconds.
The feed supports fast discovery, the list supports rational comparison, and the map supports location-led decisions.
Agent contact is embedded in the property experience, allowing users to ask questions or request the next step without losing context.

Routes help people explore nearby landmarks together with volunteers and other participants, rather than alone.
Interest-based groups and events create continuity after a route: users can find people with similar interests and return to the app for more than another walk.
The interface connects people looking for things to do nearby with volunteers and activists who organise routes and events for the community.

The platform helps patients find clinics, specialists, procedures and diagnostics for cases that cannot be effectively resolved locally.
Treatment, travel, accommodation and related services are combined into one clear, personalised offer with a total cost.
Detailed doctor, clinic and service profiles help users understand their options before making a payment or travelling.




Clinicians work with a visual map of teeth and their clinical states, rather than an abstract patient record.
Monitoring, planned procedures, and completed treatment are separated clearly while remaining linked to the relevant tooth.
The screens define more than a visual direction: they structure the key workflows around appointments, treatment, services, documents, and financial data.
ARMED is Armenia’s national EHR system, where clinicians maintain medical records. Its existing patient pages were designed for general clinical workflows, while dentistry requires a different logic: treatment is tied to individual teeth and surfaces, progresses through stages, and often involves planning several procedures.
I was asked to create a design concept for a dental module that could give the development team a clear direction for implementation. I designed a specialised workspace where clinicians can see tooth conditions, treatment history, and future plans in one connected context.
In a typical medical record, the primary object is often a diagnosis or a visit. In dentistry, clinicians work within a different coordinate system: a specific tooth, its surfaces, its condition, completed treatment, and the next planned action.
Without a dedicated module, this information becomes text notes or separate records that are difficult to connect back to the patient’s actual dental condition. I therefore structured the concept around the odontogram—the natural entry point into a dentist’s clinical workflow.

Selecting a tooth opens its context: condition, diagnoses, planned procedures, and treatment history. For cases where the exact location of a condition or intervention matters, the interface supports work with tooth surfaces—buccal, mesial, distal, palatal, and others.
This lets clinicians move quickly from the overall dental picture to an accurate clinical record without losing the connection between data and the specific treatment target.

Dental treatment often happens in stages: some conditions are monitored, some procedures are planned, and others have already been completed. The concept separates these states into clear blocks—Monitoring, Planned, and Treatment Plan.
Clinicians can see which actions relate to a particular tooth, what has already been prescribed, and where the treatment currently stands. This supports both accurate documentation and continuity of care during follow-up appointments.

The module goes beyond the odontogram. The concept also covers scheduling, patient lists, the service register, treatment plans, invoices, and access to DICOM data. This connects the clinical record with the day-to-day tasks of a dental practice: appointments, services delivered, imaging, and billing.
The goal was not to create a separate system inside the EHR, but to embed the dental workflow into the familiar structure of medical documentation.


I created a design concept that gave the ARMED development team a direction for a future dental module. Rather than adapting a generic patient page, it proposes a professional workflow built around how dentists actually assess, plan, and document treatment.




Every treatment step is tied to a measurable indicator — the system checks on its own whether to continue the plan or suggest another.
Enter a diagnosis and case parameters, and the system surfaces matching protocols and stages — no digging through an archive.
Deviations from a protocol are logged automatically — making it clear when the issue is the doctor, and when it's the protocol itself.
Treatment protocols existed long before digitization — approved at the ministry level and stored as documents. Digitizing them usually ended up producing the same document, just as a file in an archive: just as hard to read, just as impossible to verify compliance with. I took a different route: since the EMR already logs everything happening to a patient — labs, measurements, prescriptions — a protocol can be turned from text into a set of checkable conditions. A doctor gets not a page of recommendations, but a plan that prompts the next step on its own.
Treatment protocols are the standard doctors are meant to follow for a given diagnosis. They used to be drafted and approved centrally, distributed as documents, and doctors had to follow them from memory or with the document on hand. Good idea, weak execution: there's no realistic way to verify protocol compliance across thousands of doctors by hand.
Digitizing protocols usually solved the wrong problem. Drafting, approval, and distribution turned into an archive of doc files — the same hassle as paper, just in a different format. And even a finished protocol stayed a document full of text and diagrams, hard to parse quickly during an appointment where a decision needs to happen in a couple of minutes, let alone memorize.
But the real gap wasn't the document format — it was oversight. Whether a doctor actually follows a protocol tends to surface only after the fact, and usually only in severe cases, once a deviation has already harmed a patient. The rest of the time, every doctor treats however they see fit in the moment, and there's simply no statistics on how well any given protocol actually performs. Add navigation on top of that — finding the right protocol among hundreds of published ones — and you get a system with rules that exist, but with no way to check whether they're followed or improve them based on data.


The EMR already logs everything happening to a patient: labs, measurements, medications, procedures. That made it possible to build a protocol not as text to read, but as a sequence of steps, each of which can be checked automatically — whether a patient's indicator falls inside the required range or not. The solution has two connected scenarios — building a protocol and searching for one — plus a third layer, compliance tracking, which runs statistics based on what actually happens to real patients.
A specialist starts by picking a diagnosis. On the right, a list of relevant patient indicators appears — AI suggests the metrics most relevant to that diagnosis, while the doctor still enters the actual threshold values. You can also search for an indicator manually if it's not among the suggestions.
On the left, alongside the primary diagnosis, you can add a secondary one and set a demographic group — because the same diagnosis is treated differently in an infant, an elderly patient, or a pregnant woman, and some protocols simply shouldn't trigger at all — for men, for instance.
The point of this step isn't just a checklist of indicators. The chosen metrics become the condition under which a specific protocol activates for a patient in the system. Roughly: if temperature is above 38 and AST is above a set value, the system will surface protocol #X, stage Y, variant Z to the doctor — not some other one. The protocol finds the patient, not the other way around.

Next, the specialist assembles the plan itself via "Add Item" — step by step, of any type: medication, procedure, measurement, note. Each step has a type (color-coded for quick visual scanning), a sequence number, and a trigger condition — run at the same time as another step, or a set number of days after it.
If a step is a measurement, it has a separate toggle: on — the result of that measurement becomes a condition for continuing the plan (or for breaking it off, if the result falls outside the range); off — the measurement just needs to be taken as part of the protocol, but doesn't affect the course of treatment.
At the top of the builder, the whole plan is shown as a visual timeline: while the details of each step are configured below, the overview above shows at a glance what follows what and how it all connects. Once the plan is ready, the protocol gets published and goes into moderation — faster than the old path through ministry approval, but essentially the same check before it becomes available to doctors.

The second scenario is finding the right protocol among the ones already published, without digging through the whole database. Pick a diagnosis, and every protocol and treatment stage for it appears on the right. To narrow things down, specific patient or case parameters can be set on the left — the more parameters entered, the more precise the result. It also works the other way: enter a patient's indicators and see which protocols match them.


This part isn't in the mockups — it lives in other modules of the system — but it's what makes the rest of it meaningful. Since every protocol step is a checkable condition, the system generates statistics: how effective a given treatment plan actually is, and how quickly that becomes clear — not through slow bureaucratic cycles, but close to real time.
Second, it produces data on adherence: if a protocol calls for paracetamol at a given step, and a doctor consistently prescribes ibuprofen instead, that gets logged as a mismatch. A one-off deviation is just a doctor's judgment call in the moment. A systematic deviation at the same step across many doctors is a signal that the problem isn't the doctor — it's the protocol itself, and it's worth revisiting.
Versioning is built so it doesn't put patients already in treatment at risk: if a protocol is updated, a patient already on the old version stays on it — the new version only picks up new patients going forward. And because this operates at the national level, roles and access rights — who drafts, who approves, who moderates publication — are all handled inside the platform itself; the entire approval cycle for a protocol never leaves the system.





The doctor builds a standards-compliant document through clicks instead of manual text entry — saving time at every appointment.
Lifetime medical history with filters by keyword, specialty, and institution — no need to search for documents manually.
Allergies, current medications, chronic conditions, vaccination status, tasks, and upcoming visits — all visible at once, no need to jump between sections.
NDA – Not every module from the project can be shown here.
I designed Armenia’s national electronic medical records (EMR) system — a large-scale government project. It was a complex platform that brought together multiple modules and roles, from a doctor’s appointment workflow to a separate portal for insurance companies.
Below are a few modules that best demonstrate the system’s logic and value: how a doctor creates an epicrisis through clicks instead of manual text entry, how a patient’s lifetime medical history is organized with filters by period, specialty, and institution, and how the full “patient snapshot” is assembled on a single screen — from allergies and current prescriptions to tasks and upcoming visits.
I spent several years designing Armenia's national EMR system. Project under NDA, below are a few modules from that project that out of NDA.
A unique solution: the doctor builds an epicrisis document by clicking through pre-set options instead of typing it out by hand — saving time at every appointment.

Medical history is organized as a lifetime list for the patient, filterable by keyword, period, specialty, and medical institution. Any visit can be expanded to view attached documents, or a new one added — to the current visit or a past one.

One screen brings together the essentials: allergies, current medications, chronic conditions, vaccination status, tasks, and upcoming visits — no need to jump between sections to get the full picture.


The system integrates directly with insurance companies: insurers have their own portal within the system, where they can see request status and diagnosis.




Zoom instead of endless scrolling
Years collapse into an overview, an hour expands on click — no more paging through the chart record by record.
Chronic conditions surface themselves
One chronic diagnosis, and its entire history is already laid out on the timeline — nothing to dig for.
Lab data lives on its own
A separate scrollable layer: stack several indicators and watch how they move together.
Every national EMR figured out how to store medical data. Showing it back to a doctor is a different story. These screens were designed with a patient who has a dozen records in mind — a few years later, that same patient becomes a file that takes longer to read than to treat. The result is a digitized card catalog: same folder, just on a screen instead of in a cabinet. I wanted a timeline that does both — a full picture across years, and an hour-by-hour breakdown of a single visit, depending on what's actually needed in the moment.
This is the second version of the medical history module for the same national EMR. The first one (see the companion case) covered the basics — showing patient data the familiar way: lists, documents, filters. Nothing wrong with that approach, except it has a ceiling: a doctor will conscientiously read the last 2-3 records, and then either the appointment runs out of time, or they start skimming on the assumption that "there's probably nothing important further back."
EMR systems got pretty good at storing data — everything digitized, structured, filed away. Managing that pile, and actually reviewing it, turned out to be just as impossible as it was with paper charts. The issue isn't a lack of data. It's that after a few years there's so much of it that seeing the full picture means paging through a thick folder cover to cover.
Which leads to the second half of the problem: something from a patient's past can genuinely affect what's happening now — and nobody will spot the connection if it's buried on page forty of the chart. The patient might not mention it (forgot, didn't think it mattered), and the doctor won't ask, because there's no cue to ask about. A simple example: a patient comes in with knee arthritis, and a few years earlier had an injury or surgery on that same knee. The connection is obvious to a doctor — if they know about it. If not, it just doesn't happen.
And separately — there's no way to see chronic conditions in motion over time. Which is a problem, because a condition is chronic precisely because it plays out over years; without a way to trace that arc, tracking it in the first place loses its point.

The timeline works as a single tool with variable zoom: collapse several years into an overview, or expand a single day into an hour-by-hour breakdown of a visit. Spot a pattern — zoom in. Need a specific hour — you're there, no screens in between.

This is a national EMR — by law, every encounter runs through the system with an ICD-10/11 diagnosis attached. If the diagnosis is chronic, everything tied to it — labs, prescriptions, follow-up visits — automatically lands on that condition's timeline. The doctor doesn't have to look for anything; the system already gathered it. Need an indicator outside the context of a chronic diagnosis? Add it manually — everything done without a diagnosis attached sits in its own feed below.
Lab indicators live below the main event feed, not mixed in with visits and prescriptions, because they follow a different logic. A doctor can stack several indicators at once and watch whether they correlate, when tests are regular and the condition is chronic. An arrow marks a deviation from the norm; a click expands into a trend graph.

Hidden behind a toggle. Not because it doesn't matter, but because most of the time a doctor needs to know what's going on with the patient now, not the list of what they've been taking. But if you want to see whether a treatment worked, or line up a medication against lab results — one click, and it sits right next to the rest of the data.




Doctors investigate virtual patient cases, select examinations, and form diagnostic hypotheses step by step.
Incorrect diagnoses become learning signals, helping doctors return to similar cases and strengthen weak areas.
Personal CME goals, difficulty-based rewards, and visible progress turn a recurring requirement into a clear routine.
CME is essential for maintaining a medical licence and professional competence, yet it often becomes another task doctors need to plan around an already demanding schedule. This product offers a more flexible approach: instead of passively completing a course, doctors work through realistic clinical cases, practise diagnostic reasoning, and progress toward their personal CME credit goal.
At the core of the experience is Dr.Lex, a specialised AI assistant trained with physician input. It creates and guides virtual patient scenarios tailored to the user’s selected specialty.
Continuing Medical Education is necessary for maintaining professional qualifications, but traditional formats - courses, tests, online lectures, or conferences - often require dedicated time and attention outside clinical work.
The goal was to create a flexible platform that could adapt to different markets. Doctors should be able to learn in short sessions, focus on relevant specialties, and work toward their required CME credits at their own pace.

The core UX challenge was finding the right balance. If the experience is too simple, medical learning becomes a superficial quiz. If it is too complex, it becomes difficult to use regularly on a mobile device.
The solution was to gradually increase independence: first, the system helps doctors understand a diagnostic path; then it lets them assess their knowledge in conditions closer to real clinical decision-making.
In Education Mode, doctors work with a virtual patient: they review symptoms, select examinations, and form diagnostic hypotheses. The AI guides them through the case, explaining which actions are more informative and why.
This mode does not award CME credits. Its purpose is to build confidence and understanding before users move to assessment. Doctors unlock Examination Mode after completing ten learning cases.
Incorrect diagnoses from Examination Mode are saved as weak areas. Doctors can return to them later and practise similar scenarios, turning mistakes into targeted learning opportunities.

Examination Mode turns learning into an independent knowledge check. Before starting a case, doctors choose a difficulty level, which determines the amount of system guidance and the potential reward.
In Easy Mode, the AI provides detailed hints and shows the priority of available actions. In Normal Mode, doctors see the available options but must decide which examination will move them closer to a diagnosis. In Professional Mode, there are no hints: doctors independently select the next diagnostic step from the full range of options.
Difficulty is therefore not a hidden barrier, but an intentional choice. Doctors can begin with support, gradually become more independent, and earn more points for successfully completing harder cases.

The platform connects every practice session to visible progress. Doctors set the number of CME credits they need, earn points through examination cases, and convert those points into credits.
Once they have reached their goal, they can request official confirmation through an accredited organisation, which issues the CME certificate.
The home screen brings the full journey together: completed learning and examination cases, earned points, CME credits, and progress toward the goal.

The product does not treat CME as a separate administrative task or a sequence of quick tests. It makes clinical reasoning the central learning mechanism: every case is built around decisions, consequences, and explanations.
With AI-guided scenarios, specialty-based learning, weak-area practice, and adjustable independence levels, CME becomes a recurring clinical practice rather than an obligation doctors need to make extra time for.





AI determines the appropriate specialty based on symptoms—the patient can be directed immediately to, for example, a neurologist, bypassing a general practitioner as an intermediary.
The same AI-based preparation, completed in advance, saves time during the in-person visit—the doctor doesn’t spend the standard 20–30 minutes on basic questions, meaning they can see more patients without compromising quality.
Requests come through the familiar WhatsApp bot; the clinic pays a percentage of the consultation fee rather than an integration fee—free time between appointments turns into revenue.
The value here is mutual. Patients save time on travel and waiting in line, save money on the consultation itself, and get not just “any doctor,” but the right specialist from the very first contact—AI uses symptoms to determine the specialist’s field, so you can see, say, a neurologist right away, rather than wasting a visit with a general practitioner just to get a referral. The clinic benefits in the same way: doctors’ free time between appointments and outside of working hours is turned into additional income, and in-person visits become faster and higher-quality because the doctor arrives at the appointment with the information already gathered, rather than starting from scratch.
The mobile app for patients is part of a larger telemedicine platform project. This case study focuses solely on the patient-facing, B2C component; the doctor-facing side operates quite differently (via WhatsApp, without a separate app—more on that below) and is not included in this case study.
The first appointment with a doctor usually doesn’t solve the problem itself—it’s about gathering information and ordering tests, while the actual work on the diagnosis begins at the second visit. Time is wasted traveling to and waiting for the first appointment, and this appointment generally does not yield a specific result. Meanwhile, the doctor’s time between appointments and outside of working hours goes unused, even though it could be generating revenue.
For the patient, this isn’t just a “consultation without a visit”—it’s also about finding the right doctor from the very first step. If a patient isn’t sure which specialist they need, an AI questionnaire based on symptom descriptions automatically determines the specialty—allowing them to see the right doctor right away, bypassing the general practitioner as an intermediary who is usually needed only for a referral.
For the clinic and the doctor, the benefits work both ways. First, monetizing downtime—free hours between appointments or outside of working hours—turns into additional income without having to install any software. Second—and this applies to regular in-person visits as well—the same AI questionnaire, completed in advance, shortens a typical appointment by 20–30 minutes: the doctor doesn’t waste time on basic questions but gets straight to the details. This means more patients in the same amount of time and a higher-quality consultation—the doctor focuses on diagnosis rather than asking questions.

A patient may not know which doctor they need—in that case, the AI uses the questionnaire to determine the necessary specialty and compiles a list of suitable doctors. If they know exactly which doctor they want to see, they can select a doctor directly from the directory, but the AI still collects the same questionnaire before the conversation begins. And if the patient is already physically at the clinic—they scan a QR code at the reception desk, enter their appointment number, and complete the same questionnaire while waiting for their turn—and by the time of the in-person appointment, the doctor already has the prepared summary in front of them.
Next comes the request to the doctor, confirmation from the doctor, payment, and access to the chat is granted. Intermediate states (waiting for confirmation, waiting for payment, payment failed, doctor not found in the system) are handled as separate statuses that are clear to the patient.

Doctors don’t install this app at all: all requests come to them via a WhatsApp bot. This is a deliberate decision—clinics typically dislike the idea of implementing new software or paying for integration, and a familiar messaging app completely removes this barrier. All the clinic needs to do is provide doctors with a link—once they’ve filled out their profile, they can start working right away, without needing to integrate with the clinic’s EMR/EHR system (and every clinic has its own unique mix of such systems). We charge a percentage of each visit, rather than a setup fee.
A doctor can request photos or documents from a patient directly in the chat, ask follow-up questions, and order additional tests. Upon completion, the patient receives two documents: the Clinical Summary—a comprehensive clinical version for the medical record—and the Patient Summary—the same information in plain language, including test results. Plus, the final diagnosis, prescribed treatment, and a downloadable PDF note.
After that, a countdown begins; once it ends, the session cannot be continued with a new question. There is also a separate assessment of the doctor’s response speed—in an asynchronous text format, this is the only tangible quality metric that would otherwise go unnoticed.







The product owner cares about which partners are pulling their weight and which are stalling. The partner cares about earnings and who needs help. The clinic cares whether this works at all. Same data, different emphasis.
A clinic opens this once a month. In that one minute it has to see what it's earning and where it's losing — otherwise it won't come back.
Nothing gets integrated into the network's existing EMR, and doctors install nothing — they join through a WhatsApp link.
The telehealth platform runs on a franchise model: the owning company licenses the product to local partners in different countries, partners sign up clinics, and clinics bring on doctors. Each tier lives off a percentage of the visits happening one level below. The task wasn't "design an admin panel" — it was to make that structure manageable: so that at every tier, someone can tell within a couple of minutes where the money is and where the gaps are, even though they rarely log in
A telehealth platform: patients get asynchronous consultations through a mobile app, doctors work out of a WhatsApp bot. This part of the project is what sits behind the scenes and makes the business manageable.
Master registrant — the company that owns the product. Provides the software and the environment, takes a percentage.
Local registrant — a partner in a specific country. Signs an agreement, gets a dashboard, and from there finds and onboards clinics in their own market. Lives off a percentage of their visits.
Network — a clinic or a group of clinics with branches. Brings on its own doctors, earns from consultations.
Money travels up the same ladder. And that's where the real problem starts: all three tiers have completely different motivations, and one interface has to serve all of them without turning into three separate products.

The product owner doesn't need to manage doctors — they need to know which partners are growing and which are stalling and need attention. It's a "where is my business working, and where isn't it" question, at the scale of countries and networks.
The local partner looks at the same data with a different interest: they want to earn more. So what's front and center for them isn't just cash flow, but the things that directly drive their income — which networks are underperforming and need help, and which specialties are missing, so patients don't leave without finding the right doctor.

Hence the decision to put a network's performance right next to its revenue and commission, and to lift quick filters ("needs attention", "top performers") above the table rather than burying them in reports. A partner loses money alongside a clinic that signed up and never took off — so "who needs help" has to be as visible as "who's paying".

The same logic applies to specialty coverage: uncovered specialties are flagged explicitly against the system's fixed directory of sixteen, because every one of those gaps is a patient who couldn't find a doctor and left. For a partner, that's literally a list of who to recruit next.
A clinic isn't going to live in this interface — it has its own EMR, its own processes, its own working day. It'll log in once a month. And that single visit has to land.
So the scenario everything is built around is fairly blunt: log in, see that the app is actually bringing in money (which you half-doubted when you signed the agreement). Drill into the doctors section, notice one doctor with a poor rating and slow response times — meaning the network isn't earning on them. Draw conclusions.
That's where the decisions in the doctor list come from: average response time sits at list level alongside revenue (in an asynchronous format, it's the primary signal of quality), and the view itself toggles between cards and a table — cards when you're looking at specific people, a table when there are many doctors and the job is to compare and sort.

The core condition of the whole model: the clinic implements nothing. No integration with whatever EMR the network already runs — and they all run different ones. Doctors install no apps: the clinic enters a phone number, the doctor gets a WhatsApp link, fills in their own profile, and shows up in the admin panel with their data already in place. No manager has to fill it in for them or reconcile it afterward.
For the QR-code-at-the-front-desk scenario, a receptionist account is set up separately with the same bot attached — again, no extra software inside the clinic.





Doctors, laboratory services, radiology, nursing services, physiotherapy, packages, and offers — each is booked through its own logic, but all live within one shared storefront.
The patient describes the problem in their own words, and AI extracts symptoms, clarifies details, and determines the required specialty.
Test history with deviation markers, medication adherence with missed doses, insurance, and wallet — a working tool, not a PDF archive.
Klinika is a healthcare ecosystem operating in Saudi Arabia: an EMR system for clinics plus a patient application. This case is about the web marketplace built on top of it: a storefront where patients search for and book doctors, laboratory tests, radiology, nursing services, physiotherapy, and package offers. Each vertical is booked through its own logic, and all of this had to fit on a mobile screen — in KSA, the majority of traffic comes from the mobile web. The web experience was conceived not as an addition to the app, but as its future replacement: mobile web first, then a PWA based on it. I led the project independently under tight deadlines.
By that point, Klinika already had an ecosystem: an EMR system used by clinics and a mobile application for patients. The app had become outdated — I designed it more than five years ago, and the product had outgrown it. The decision was to build a web version of the marketplace with a redesigned UX, then use it as the basis for a PWA and replace the old app entirely.
So this is a web case designed as a mobile product from day one.
Three appointment formats — in-clinic, at home, telehealth — are chosen through a single tab above the results, not three separate sections. Inside: specialties, promoted doctor slots, a doctor list with price and nearest slot, and a filter panel on the right for specialty, gender, rating, and appointment time.
A single booking row surfaces several decision points at once: doctor name, clinic, price, rating, and nearest available time — so the patient compares options across every factor that matters right there in the list, without opening each doctor's card individually. That matters especially on desktop, where the screen allows a dozen options to stay in view at once, instead of being paged through one at a time as in the mobile app.

The tension. A smaller city may have few tests and clinics available, and a rigid tie to the current city leaves the patient staring at an empty result set.
The decision. The system defaults to results in the patient's own city — searching the whole country is usually overkill — but when supply is thin, it offers a quick switch to a neighboring city through a single popup: "show results for Riyadh?", without forcing the patient to reconfigure the search from scratch.
What the business gets. A patient in a smaller city doesn't hit a dead end and leave the platform — they get a choice, stay local or widen the search, while staying inside the product either way.
Separately, there are two distinct browsing modes within this one vertical: individual tests go into a cart (the same "list first, clinic second" logic as before), while packages are browsed differently — as a card with an expandable parameter list and a visible price and count of matching clinics right away ("from 323 SAR," "select clinic (9)"). That's a deliberate split: a package gets decided on price and composition alone, while individual tests only get decided once the patient sees which clinic covers their full list.

A full offers page with filters by category, city, age, gender, and price — and a dedicated detail card showing the full composition of an offer (lab tests, an in-clinic visit, nursing services), broken down by category with the total savings shown.
The point of this section isn't the discount itself, but that it gives the clinic a revenue tool: bundling services at a discount sells more per patient visit than separate bookings would — the same mechanic that already worked in the mobile app, now carried over to the web with desktop search traffic in mind, where offers compete not with other app screens but with Google results.

The visit list shows status right in the row, with no need to open each entry: paid, "call starts in 12 hours," a countdown while waiting for the doctor, "doctor was unable to connect" with a direct link to reschedule, a "join video call" button exactly when it's relevant. Past visits offer a review right from the list.
Lab results are consolidated into a table with city/clinic/date columns and a deviation status — normal, minor, major, no data — and a single indicator can be tracked over time even if it was taken at different clinics. The medication section separates active prescriptions (with a "start intake" button) from history, without mixing the two.

Information Permissions — a dedicated screen where the patient toggles a specific clinic's access to their data, one switch per clinic. This came as a regulatory requirement rather than a product initiative, but it's built so the patient controls access granularly, rather than choosing between "allow everyone" or "don't use the service."
Notifications carry actions, not just text. A clinic rescheduled the visit — accept or decline right in the notification card. A visit wasn't paid and got cancelled — the status is visible immediately. This turns the notification feed into a working list of decisions rather than an archive of things that already happened without the patient's input.
Separately, chat with doctors and the patient's own review list sit in the same account section as settings: both the conversation and the feedback stay part of the personal space, rather than a separate module reached through another menu.

The tension. The classic way to bring clinics on board is a separate landing page and a separate marketing campaign — one that never overlaps with the traffic the platform is already getting from patients.
The decision. The "become a partner" form is embedded directly into consumer-facing pages — the homepage and category pages — rather than hidden away on a separate B2B site.
What the business gets. Every patient who scrolls to the bottom of a page is a potential lead for clinic signups: staff at a clinic who happen to search for a doctor through the marketplace themselves see the signup form right there. No separate marketing budget is needed to acquire clinics — B2C traffic drives B2B conversion for free.
A typical marketplace gives a seller a profile inside itself: photo, description, reviews, and that's it. A clinic that already runs its own website either maintains two places at once, or, if it has no site at all, has nowhere to present itself beyond a card in a general list.
The solution here works differently: a clinic's page is generated automatically from a template, using the same data already in the system — services, doctors, offers, branches, a map. And if the clinic is a client of the product, this page can serve as its own website: all booking, live data, and integrations pull directly from the core platform, with no separate development on the clinic's side.
This changes the economics of the offer for a clinic: signing up with Klinika delivers not just a sales channel, but a ready website that doesn't need separate upkeep. For the marketplace, it's a strong argument when selling the connection — not "list with us," but "get a website for free along with the signup."
Inside the page, the same principles apply as everywhere else in the product: filters by age, gender, rating, and price work the same whether searching for a doctor or for a service within a specific clinic, and the service-type switcher (laboratory, test packages, radiology, nursing, physical therapy) behaves like a self-contained mini-catalog within one clinic.


The web platform reuses the same data and booking logic that already worked in the mobile app, but adds what a mobile format couldn't deliver in principle: a full website for every clinic, lead generation built into consumer traffic, and responsiveness across three device classes from a single design codebase.




Lock-screen advertising wasn't technically viable — I proposed an interactive widget as a new channel for selling the same thing.
Full Scale Solution, MVP, and PoC — with reasoning for what to test cheaply now and what to leave for later — gave the client a development plan, not just a picture.
User, advertiser, moderator, and stakeholder each got their own set of step-by-step scenarios before a single screen was drawn.
The client came in with an idea: run ads on a phone's lock screen as wallpapers, rewarding the user for displaying them. I took that idea apart, built an alternative model, broke it down into development stages, and carried it through to a design concept — in the order it actually happened.
The idea was simple: show ads on the lock screen through wallpapers the user installs, and pay them for it.
I broke the proposal down and found two problems that made it unviable as a business.
First, showing ads on the lock screen depends on OS-level behavior — something the platform doesn't control and that Apple or Android can restrict with any update. Building a business model on access that isn't yours to guarantee is risky from day one.
Second, and this was a separate, standalone pain point: wallpapers have to be installed manually, and the platform has no way to verify whether they stay active after installation, let alone control it. Changing a wallpaper isn't the kind of action a person will repeat regularly for a modest reward.
I proposed the client sell the same product — advertising with a user reward — through a different channel: an interactive widget on the phone's home screen.
The widget solved both problems at once. It doesn't depend on system permissions that can disappear with an OS update, unlike the lock screen. And it doesn't require a repeated manual action — install it once and it just runs, unlike swapping wallpapers. For the user, it's a clear activation point: install it, test it, see whether it's active. For the platform, it's a manageable and far more reliable signal than a one-time wallpaper install.
Before getting into technical detail, I put together a presentation that frames the solution as a story, not a feature list: what's wrong with traditional advertising (banner blindness, ads that get skipped and never seen), and what the alternative looks like — advertising as part of the experience, something the user gets value for, instead of a fight for attention everyone already hates. This was needed so the client and their team bought into the idea itself before digging into how it worked underneath.

Next I broke the product down by stage — from what could be tested cheaply to the full vision.
PoC — a version to test the hypothesis itself, before any production code: just two roles, Stakeholder and User. The user installs the widget and gets paid out to their card once a month. The stakeholder manually offers the new format to an advertiser for free, collects the materials, assembles the ad themselves in their own panel, and after the campaign ends, reports back and gathers feedback — signing an agreement only if the advertiser is happy with the results. A cheap way to find out whether advertisers would even pay for a channel like this.
MVP — the next stage, meant to bring in first revenue without overspending on development. The same functional map, but with an explicit note on every block: what gets simplified, and what doesn't make it into this version at all.
Full Scale Solution — the plan to work toward: widget customization, A/B testing for ads, fraud detection, automated pre-moderation.
For every block, I explained why it didn't belong at that stage — and that's what gave the client the sense of an actual development plan, not just a pretty picture of the maximum possible. Separately on the map is an Ideas: how can be improved block, where every future feature comes with a stated "why" attached, so it doesn't read as a wishlist.
Before drawing a single screen, I wrote out step-by-step scenarios for all four roles — four to five flows per role.
For the user — registration and widget setup, earning and requesting a payout, interacting with a specific ad, customization, contacting support. For the advertiser — creating a campaign, monitoring performance, editing an active campaign, managing team access.
The moderator and the stakeholder got the same level of detail as the user. Moderator: reviewing a new ad submission, answering an advertiser's question about a rejection, flagging suspicious activity (15,000 impressions in one hour from a single user, a clear bot signal), a future scenario for bulk approval through automated moderation. Stakeholder: adding a client, reviewing overdue payments, processing payouts in batches, assessing business growth, and — tellingly — backup moderation, where the stakeholder clears the queue themselves if the moderator falls behind.
Without these flows, the client would have seen only a nice-looking app for the user — and a two-sided advertising marketplace with underdeveloped internal processes doesn't work, no matter how much money goes into it.
Only after all of this did I move to screens. In a workshop setting, I always keep mockups detailed but simple — their job is to convey the idea, not look like a finished product. For PoC and MVP purposes, that's enough.
The one screen showing the product from the user's side — because the goal wasn't to design a consumer app, it was to prove the model works. Onboarding, widget setup, "active" / "wallpaper not set" states, a wallet with balance and payout history, kept separate from free, non-monetized wallpapers.

Most of the mockup work went to the advertiser side — without a manageable tool for them, the whole marketplace turns into a black box nobody will trust with their money. A dashboard with spend, impressions, clicks, CTR, and a list of active campaigns.

Creating a campaign is a step-by-step builder. Step one — ad content, with separate uploads for the basic and premium widget and a live preview on Android and iPhone side by side.

Step two — selecting the lock-screen wallpaper, previewed in the actual context of a lock screen.

Targeting and budget. An AI suggestion flags an audience that's too narrow and offers to widen the range. Budget is calculated line by line, with the total visible right at the planning stage.

Payment and moderation status on one screen. This is also where the revision cycle lives: if a moderator rejects content, the advertiser gets a specific list of reasons with a recommendation, not a rejection into thin air.

The moderator dashboard — a queue of submissions with statuses and a detailed view of each campaign, where content and wallpaper are reviewed separately, with previews across OS types and a comment attached to any rejection. This role was built into the model from day one of the workshop, because without it, the entire trust structure between users and advertisers doesn't hold.

The client left satisfied — with an actual plan their team took into development. The main contribution wasn't the mockups; it was everything that came before them: turning a technically fragile idea into a model that could be explained, justified on cost and timeline, and built up gradually — from a cheap hypothesis test to a full product.





Medication shown as adherence dots per day, vital metrics charted against a shaded normal range, a pregnancy-specific exercise recommendation for the current week
A patient holding a prescribed list of tests can see which clinic covers all of it — and books the entire order in the app instead of leaving to source the rest elsewhere.
The intake form, voice note, and files are collected while the patient waits for the doctor — so the paid minutes go to medicine, not to questioning.
Saudi Arabia has spent recent years restructuring healthcare from the top down, as part of Vision 2030 — the goal is to digitize 70% of patient activities by 2030, with telemedicine as the largest segment of the digital-health market. In this environment, demand for online consultations has already been created by the state; the competition isn't over the idea, but over execution.
KLINIKA earns from four sides: a percentage of each visit, offers, paid promotion for clinics and doctors, and selling EMR/CRM software to clinics. The task was to close the full patient journey — from "something hurts" to a paid visit — across every direction at once: doctors in three formats, lab, radiology, nursing services, physiotherapy, offers, and packages.
Saudi Arabia has spent recent years restructuring healthcare from the top down under Vision 2030. The sector transformation program targets digitizing 70% of patient activity by 2030 and expanding telemedicine, with over one and a half billion dollars allocated to healthcare IT infrastructure. The digital health market was valued at roughly 2.4 billion dollars in 2024 and is projected to grow several times over, with telemedicine as its largest segment.
For a private player, that means two things. First, demand is already created by the state — you don't have to explain to a patient what an online consultation is. Second, the competition isn't over the idea. It's over execution.
KLINIKA earns from four directions: a percentage of every visit, offers, paid promotion for clinics and doctors, and sales of the EMR/CRM system to clinics.
This matters for the decisions below. The app isn't a "service for patients" here — it's the top of the funnel for several revenue streams at once, and nearly every decision in it runs into the same question: how to earn without breaking the reason the patient opened the app in the first place.
Build out the patient side to cover the full path — from "something hurts" to a paid, completed visit — across every vertical at once: doctors in three appointment formats, laboratory, radiology, nursing services, physical therapy, rehabilitation, offers, and packages.
Each vertical books by its own logic. And the app isn't really competing with the clinic down the street — it's competing with the habit of just calling reception.
Regulatory and industry. Healthcare is a regulated field, and some decisions are dictated not by product logic but by rules on how medical data and services can and cannot be handled.
Cultural. For a significant share of the audience, the gender of the medical professional is a deciding factor — and that has to live in the availability logic itself, not in fine print.
Technical. A noticeable share of users are on mid-range devices. An extra section on the home screen isn't "a bit cluttered" — it's a real obstacle to reaching what you came for.
Business. Features need to ship, not be polished. Expensive development kills time-to-market, and I held that constraint alongside the user-facing ones.

This is only the visible part of the product. The full project map — Login/Reg, Basic flow, Clinic page, Visits with payment states, Offers, Nursing/Lab/Radiology, Profile, Telehealth, Dashboard — runs into the hundreds of screens. Below are specific decisions from six sections of that map.
Tension. An in-person visit, a home visit, and an online consultation are essentially three different products with different payment and preparation logic. Splitting them into three separate sections would force the patient to decide how they want to be treated before they've even chosen a doctor.
Solution. The visit format is a toggle inside a single booking card, not a separate entry point in the app. Doctor, clinic, date — all chosen in one flow, while "in person or call" gets decided in the moment of booking, not in advance.
What this gives the business. The patient doesn't have to guess the format before seeing the price and schedule of a specific doctor — so they don't drop off at a fork they'd have invented for themselves.
Before payment, there's a short block of questions about the patient's condition (medications, risk factors, chronic conditions) and a free-text description of the problem with a voice message and file attachments. The AI pre-visit quiz is optional — there's a "do it later" button, and booking isn't blocked if the patient doesn't want to go through it right now. That's the difference between a useful option and a barrier to purchase.
Payment is broken down into service cost and VAT, with a choice between "pay at the clinic" and "pay online": part of the audience in this market still doesn't trust prepaying an unfamiliar clinic, and hard-requiring it means losing those people.

Tension. Free-text input from a patient is an unreliable source — two phrasings can mean different things, and interpreting them automatically without verification risks routing the person to the wrong doctor.
Solution. The system pulls specific symptoms out of the text and shows them to the patient as a list to confirm, along with a duration clarifier ("just started" / "ongoing for a while"), before moving forward. The patient can add a symptom the AI missed.
What this gives the business. A misread complaint is costly — the wrong doctor gets picked, money is spent on a consultation that misses the mark. The confirmation step is the point where the patient catches an error before it turns into wasted money.
Next come clarifying questions one at a time, each with a "?" icon explaining why it's being asked — some of them, tied to specific indicators, are asked by Dr. Lex, a separately branded assistant inside this step. The choice of doctor's gender comes at the very end, after the full clinical context has been gathered, rather than at the start as a general filter — because up to that point it doesn't yet mean anything for the matching.
At the end, there are three consultation tiers at different price points (GP, Specialist, Consultant), and the AI-recommended tier is already checked — a suggestion, not an auto-selection; the decision stays with the patient. The request isn't confirmed instantly: the screen honestly states that the case is being reviewed, rather than pretending a doctor has already been assigned.

Tension. The test catalog is huge and split into categories that mean nothing to a patient without a medical background. On top of that, the complex filter (gender, age, city, keyword) is easy to lose track of when moving between screens.
Solution. Each test has an icon explaining what it shows and why it's needed, right at the moment of selection. The active filter stays visible as a chip on every following screen, instead of requiring the panel to be reopened and the search re-remembered.
What this gives the business. Someone who doesn't understand what they're buying either doesn't buy at all, or calls support afterward with questions. An in-interface explanation removes both scenarios.
When choosing a clinic, the patient sees not an abstract coverage percentage but an exact number and a specific list of missing tests — "3 of 4 available," naming what's not covered. This is a direct extension of the decision from the core flow: the patient sees exactly where the full list is covered and where it isn't, and makes an informed choice instead of guessing.

Tension. An offer as a single discount on a single service is something every competitor already has. Value needed to be created where separate visits are usually booked individually.
Solution. An offer is assembled as a bundled package — lab tests, an in-person visit, nursing procedures inside one card, each category with its own price and total savings. A countdown timer with a progress bar pushes toward a "now" decision rather than "I'll come back to this."
What this gives the business. A bundled offer sells several visits in a single action — more revenue per user session than three separate bookings. When booking an offer, the patient goes through the same health questionnaire as with a regular appointment: a promotion doesn't fall out of the general context-gathering logic for the doctor just because it's a discount.

Tension. A marketplace gets used occasionally. Between visits there's nothing to open — so the app gets forgotten, and the next time it's needed, the patient chooses again, often based on a competitor's price.
Solution. Medication intake is shown not as a list but as a tracker: what's been taken, what's been missed, what becomes active in 12 days, with adherence indicator dots across the full course and a doctor's note ("take 30 minutes after eating"). The metrics section places numbers next to the normal range — blood pressure and pulse on a chart with a shaded normal-range band, weight with a status ("Underweight") and a goal. Separately, there's an exercise-intensity recommendation for pregnancy tailored to a specific week — the system doesn't just record the state, it gives a contextual prompt based on it.
What this gives the business. A daily reason to open the app with no purchase involved — and data the doctor sees at the next visit, something no competing marketplace can offer without an EMR underneath.
The medical record is filterable by type and year, and lab results carry a color-coded deviation flag at the level of each individual indicator within one test, not one overall verdict for the whole panel. Notifications require an explicit decision wherever money and health matter — confirming a rescheduled visit, accepting or declining a change to a booking — rather than just informing.

Tension. Online appointments break down regularly: connection issues, camera permissions, the doctor not connecting. Every such case is already money spent, and the risk that the person never opens the app again.
Solution. The visits list shows several real states side by side: somewhere device permission needs to be granted in advance, somewhere a countdown to the call is running, somewhere the doctor failed to connect — and in that case the patient sees not "error" but an explanation: "our team has already been notified and is looking into why this happened," plus a payment status and a link to the invoice. During the call, there's a timer for remaining time and a chat next to the video in case the connection is poor.
What this gives the business. A failure explained in plain language with a clear money status doesn't turn into a deleted app. Silence does.
The chat doesn't close along with the call — the doctor can send a document after the conversation, and the exchange continues without video. Feedback is split into two separate ratings — for the doctor and for the clinic — with an option to stay anonymous, and at the end there's a suggestion to book with another specialist for a second opinion if doubts remain after the consultation. A second opinion is another paid visit, not an admission that the first one was bad.

The product covers the entire patient journey — from an undefined symptom to a paid visit in any of three formats — and stays useful between visits through the medical record, medication tracker, and health metrics.





Appointment, history, labs, medications, video call, and audit log — as tabs within the patient chart. The doctor never leaves the context until they're done.
The doctor runs the visit, reception resolves schedule conflicts and registers patients, the lab moves samples through a queue — each with its own flow, not one admin panel for everyone.
A timed plan of future visits, metrics for the patient to track, and a month-long chat — the doctor sees how what they prescribed turned out.
KLINIKA EMR is a medical system for clinics and clinic networks in Saudi Arabia. This case covers the doctor's workspace.
The constraint here is hard: the full clinical cycle — complaints, history, examination, diagnosis, prescriptions, visit planning, prescription — has to fit inside the appointment. Usually thirty minutes, with the next patient waiting. The cycle itself can't be shortened; medicine defines it. So everything else has to: navigation between sections, hunting for data, entering the same thing twice.
Hence the main structural decision — the patient chart as a single container. Everything the doctor does lives inside it as tabs: overview, appointment, history, labs, medications, log, video call. The doctor doesn't leave the patient's context until they're done with them.
The chart's first tab isn't a medical history — it's a summary of the patient's state at the moment of the visit.
On the left, the blocks a doctor reads before saying a word: current medications with dosage and days remaining, risk factors, allergies, chronic conditions. Every entry carries a status — active or not — because "had an allergy last year" and "has an allergy now" call for different things.
Risk factors aren't checkboxes from a reference list but plain-language entries with the doctor's note. Private notes hold the same kind of thing for internal use: "occasionally takes antibiotics without a prescription", "doesn't always take prescribed medication". You can't pick that from a dropdown, and it's exactly what changes the approach.
On the right — physical measurements, blood pressure, pregnancy with gestational age and a progress bar to the due date, upcoming appointments.
And the recommended metrics block: the doctor picks what the patient will track themselves through the mobile app, and for how long. Below it, charts of what the patient has already submitted — blood pressure, weight, blood sugar. Assign monitoring, see the results in the same chart.

A three-day or weekly schedule, filtered by visit type — in-clinic, home visit, telehealth. Statuses by color: confirmed, current, cancelled, follow-up, form not filled.
Below — appointment statistics for the period, personal figures for the month (visits, rating, reviews, days off), and recent patient reviews flagged with which ones the doctor has already answered.
Two decisions worth noting.
Doctors set their own days off — pick a period, give a reason, and the slots close. No request to a manager, no back-and-forth.
Role switching sits at the top. A doctor may work across several clinics and in different roles — a therapist in one, a clinic admin in another. It happens in practice, and switching shouldn't mean logging in again.

The core screen of the flow. Everything the doctor does during a visit runs top to bottom without navigation.
It starts with what the patient sent in advance: written complaints, attached files and images, and an audio recording — for those who find it easier to talk than to type. The doctor opens the appointment already knowing what they're dealing with.
Then symptoms and signs, and the diagnosis coded in ICPC-2 — marked "preliminary" if the doctor isn't ready to commit. There can be several diagnoses.
Recommendations through templates. A note is saved under a name and reused; the system warns if a template with that name already exists and offers to replace it.
On the right — prescribing with context checks. The system shows what the patient is already taking and separately flags: the patient is pregnant, keep it in mind. Drug interactions are a real risk, and no doctor can hold a full history in their head.
At the bottom — future visits as a sequence in time: a service or a set of lab tests, and when to carry it out — from the beginning, alongside the previous one, after ten days. Treatment stops being a list of recommendations and becomes a schedule the system surfaces to the patient itself.
And the final toggle — open a chat with the patient for a month. The doctor's call for that specific case: a dose was prescribed, and in a week you need to know whether it's working.

A patient's history can accumulate for years. Show all of it and the doctor drowns; show too little and they decide without something important.
So the filters sit in a panel on the right and work together: keyword, period, specialty, visit type, and case area — respiratory, gastrointestinal, cardiovascular, skin, ENT. A gastroenterologist doesn't need ten years of ophthalmology at this appointment.
Records are collapsed to a single line with the diagnosis, date, and visit count. Expand one and you get the full report from that visit: complaints, symptoms, services, prescriptions, medications, attached files.

A completed appointment switches to read mode, but with an editing window: a timer shows how long is left to correct what was entered. After that, the record is locked.
An online appointment isn't a separate product but another tab of the same chart. The doctor sees the history, assigns the diagnosis, and prescribes using the same tools.
What was designed separately is everything that breaks. Camera and microphone checks before the call — not at the moment the patient is already on the line. A waiting timer with a "patient didn't come" button — the doctor records the no-show themselves instead of sitting and waiting indefinitely.
The chat runs alongside the video and stays available before, during, and after the call — a file can go there if the connection is poor and talking isn't working.

Laboratory results. Rows group by test name — the same analysis taken at different clinics on different dates collapses into one expandable record with a counter. Inside, each result is color-flagged: normal, minor deviations, major deviations, no data. The doctor sees the deviation before opening the file.
Medications. A prescription history with frequency, dose, duration, start and end dates, and status — active, finished, cancelled. A separate column for who added it: prescriptions from other doctors and entries the patient created themselves sit in one list but stay distinguishable.
Log. Who changed what in the chart, and when. In a medical system this isn't housekeeping: edits to patient data have to be traceable after the fact.

On tablet the experience is complete, same as desktop: the doctor runs the appointment as usual, the menu collapses into a burger, blocks restack into a column.
The mobile version was built for one specific scenario — doctors who make home visits. On the road, the essentials need to be at hand: schedule, notifications, messages, profile. Carrying a tablet and a laptop for that makes no sense.

Reception is the point the entire patient flow passes through, so this dashboard is built as a control panel for the current day rather than as analytics.
At the top, the month's figures: appointments, patient satisfaction, a breakdown by status, telehealth calls.
The conflicts block sits right beneath the metrics. These are bookings that collided with a doctor's time off or a schedule change — each needs a decision: cancel, reschedule, contact the patient. Until a conflict is resolved, someone is going to arrive at a closed door.
Below — utilization in two views. By doctor within each specialty, and separately for the lab, imaging, and nursing services including home visits. What's visible isn't "a lot of appointments" but how filled the time the clinic already pays for actually is.
Then the appointment list filtered by service line, attendance confirmations, doctor license expiry with a countdown and a renewal button, reviews, and chats with doctors.
This is also where a patient is registered from scratch. An open slot, a service, a phone number. If the patient isn't in the system, a code is sent to them: they consent to the processing of their personal data on their own side, the administrator enters the code and continues. Details that aren't at hand can be filled in later — the form doesn't block the booking over an empty field.

The lab doesn't work through the appointment screen: its job isn't to reach a diagnosis but to move patients through collection and issue results.
The screen is built around the queue — booked, currently in line, awaiting results. The list is split into clinic visits and home visits, with the address visible right away for the latter. For each patient — the ordered tests and the next-step button: start, waiting, enter results.
During collection, the technician enters a barcode per parameter — that's what ties the tube to a specific person and a specific test.
When issuing results, there's a deviation flag per parameter and a "one file for all results" toggle. The real-world use is forwarding everything to the doctor or patient at once, not assembling six attachments.
Statuses in the list show partial readiness: "2 of 3". Results don't arrive simultaneously, and the patient has to be moved along without waiting for the last one.






Revenue, sales channels, and doctor utilization in hours — the plan is calculated from the schedule automatically, and actuals are compared against it.
A flexible permissions builder: any combination of access for any position, granular per section — instead of a fixed list of roles.
A shared standard for all clinics, but a branch can deviate where it's justified — under platform moderation.
KLINIKA EMR is a medical system for clinics and clinic networks. This case is about the workspace of a clinic or network owner — not about seeing a patient, but about the clinic as a business: money, utilization, staff, services, pricing, promotions, feedback.
This role has its own lens. The owner doesn't log in every day and doesn't work in the system hands-on all day the way a manager does. They come with specific questions — are we earning, where are we underperforming, who are we managing — and need answers fast. So nearly every screen here is designed as an answer to a management question, not as a table of data.
The first screen is built around what the owner tracks regularly.
Revenue — for the current month with a trend against the previous one, per clinic and across the whole network. Appointments — year-over-year, closed and cancelled, with growth percentages. New and returning patients, top-5 services by revenue, patient gender split, clinic ratings and reviews.
Two blocks stand apart, and I consider them the key ones for this role.
Income channels. How many appointments came through the mobile app versus outside it. The clinic pays the platform a percentage for its marketplace connection, and this is a direct answer to whether that connection pays off — not a guess.
Planned vs. actual utilization in hours. The planned number of hours is calculated from the doctors' schedules automatically — it's the sum of their working time. The actual is compared against it. The owner sees not "many or few appointments", but how filled the time they already pay salaries for actually is. Those are different questions, and the second one matters more.
Here too are tasks with owners and deadlines. A task manager looks out of place in a medical system until you see the scenario: the owner spotted a problem on a walkthrough, assigned someone, set a deadline — and it didn't get lost in conversation.

The clinic profile is both internal data and what goes out to the marketplace: name and description in two languages, logo and cover with safe zones marked for the required size, address, photos, phone numbers.
A separate block is the insurance companies the clinic works with. This isn't cosmetic: it determines which patients the clinic is even shown to in the app, and whether someone shows up with a policy that isn't accepted here.

The densest part here is working hours split by service type. The clinic, the lab, the nursing service, and home visits each have their own schedules by day of week. Plus, separately, non-working days and public holidays for the year ahead.
The reason is that this isn't one facility with one schedule but several parallel streams: the lab can run after the doctors have left, and home visits follow their own windows. Collapsing that into a single calendar breaks booking.

The clinic maintains its service catalog and pricing, including for lab tests. Services can be created as custom ones — for whatever isn't in the shared reference list.
The key mechanic is the balance between a single network standard and the reality of an individual branch. By default, services and packages are synchronized across all clinics in the network: keeping one price list is simpler and more correct. But a branch can create a unique package that doesn't synchronize — if it's the only one that runs a given test, or a manager noticed patients constantly asking to add a couple of items to the standard set.
Without that exception, branches would start keeping part of their pricing outside the system, and marketplace data would drift from reality.
Services are also assigned to specific staff here — which determines what a specialist can even select during an appointment. And in the pricing sections, saving requires confirming responsibility for the changes, with actions written to a log: a service's price and composition affect already-placed orders, and an accidental edit has to be traceable.

The clinic's patient base: name, contacts, first and last visit dates, status. In the card — details, insurance with validity check, whether the mobile app is installed, history.
This section is reference-only — the owner needs it not to work with an individual patient, but to see the base as an asset: how many people, how many active, how many returned.

Everything the patient sees in the app as promotions is assembled here. An offer is a set of services and lab tests with a two-language description, cover, discount, and a countdown deadline.
There's a targeting layer: the clinic sets a target audience and ties the offer to specific specialists. There's a top position — the offer is raised above the others; the number of such positions is capped by the platform, and the arrangement itself runs through an offline contract.
Offers come with statistics — views, orders, conversion, the most effective categories. This shows the owner what promotion actually sells and what just takes up space.
And since the patient sees a storefront under the platform's brand, offers go through moderation with a moderator's response — a rejection comes with a reason, not silence.
.webp)
Doctors, medical staff, and administrative employees are managed in one section with different fields. Statuses reflect the real onboarding path: invitation sent, awaiting verification, license uploaded, deactivated.
Assignment to clinics happens in bulk. In a network of a dozen branches, doctors work in several, and assigning them one by one when a new clinic joins turns into a day of manual work. Services a doctor is allowed to provide are assigned here too.
Separately — doctor license expiry with a countdown. An expired license means a doctor who can't be put on the schedule, and complaints from the regulator. It has to surface a month ahead, not on the day patients are already booked with them.

This is probably the most important decision in the entire owner flow.
Permissions are structured not as a list of positions but as an assembled matrix. For each section of the system, an access level is set: CREATE, EDIT, READ, or NONE. A group is assembled from these accesses, and users are assigned to the group.
Why not fixed roles. Clinics are organized differently: in one, reception runs the schedule; in another, the manager does; in a third, the owner themselves. A rigid list of roles would have to be rewritten for every clinic and every expansion of the system. A flexible matrix survives both without a rebuild.
Hence a consequence that would otherwise look odd: the same action is performed by people with different job titles across different clinics. It's not about the title, but about the access granted.
A group is tied to a country and a list of cities — a Riyadh content manager doesn't touch Jeddah — and can span several clinics at once.


Reviews are visible in the app and influence the choice of doctor — that is, directly affect revenue. The section holds the rating distribution, separate averages by doctor, service, and clinic, the share of answered reviews, and scoring on two axes: professionalism and communication.
The key decision is two levels of response. A review can be answered publicly, or a comment can be left visible to staff only. A debrief with a doctor ("be more polite next time") and a reply to the patient are different conversations; in a single field they eventually get mixed up, and an internal complaint ends up going public.

Issuing invoices with VAT and discounts per local requirements — numbers, dates, payment methods, clinic and patient details, a breakdown by service. The section covers the clinic's financial reporting without requiring a separate accounting system.

The owner flow covers managing a clinic as a business: money and utilization, the composition and pricing of services, promotions, staff with licenses and permissions, feedback, and invoices. At varying depth, but from one place and under one logic — the management question first, the data beneath it.





The opening section frames the company through a concise positioning statement, then immediately connects it to a real flagship project.
Development directions, statistics, project details and completed work turn an abstract promise into tangible evidence.
Large architectural imagery, concise text blocks and changing section layouts create a premium, presentation-led experience without overwhelming the visitor.
The task was to create a presentation website for a developer whose work goes beyond constructing individual buildings. The page needed to communicate a broader proposition: Starlife Group develops connected urban environments, combining development, construction, capital and long-term value creation.
The landing page is built around the idea that Starlife Group is not simply selling square metres. It presents an integrated model of urban development: from land strategy and construction to capital and long-term district value.
This allowed the site to begin with a clear business message instead of a generic corporate introduction.

Numbers and project facts are used as a compact proof layer: development pipeline, residential units, international capital reach and team experience. Rather than placing them in a conventional statistics block, the information is paired with architectural forms to keep the page visual and memorable.

The 21 Hollywood project receives its own editorial section with a large visual, key specifications, awards and a concise project snapshot. This makes it easier for visitors to understand both the scale of the development and the level of ambition behind it.







Users select not only a premium vehicle, but also a specific driver based on language, experience, age, personality, and interests.
Additional services turn the driver into more than a chauffeur: bodyguard, translator, secretary, personal concierge, and shared-ride options can be added to the booking.
Users can delegate restaurant reservations, shopping, daily errands, entertainment, and VIP requests to the driver, then track and discuss those tasks inside the app.
This is a premium mobility service for Saudi Arabia built around chauffeur-driven SUV rental. Instead of treating the vehicle as the entire product, the service combines the car, the driver, additional services, and personal assistance into one managed experience.
A user can choose a premium SUV, select the driver who will accompany them, add services such as a bodyguard or translator, and complete the booking with a transparent breakdown of rental cost, VAT, discounts, and bonuses. After payment, the experience continues: the user specifies the pickup time and location, adds special instructions, receives driver updates, and can communicate with the driver before and during the ride.
Premium car rental usually focuses on one transaction: choose a vehicle, pay for it, pick it up, and return it.
This product follows a different model. The customer rents an SUV together with a professional driver, often for several days, so the service has to support the entire period of interaction rather than only the initial booking.
The driver becomes an important part of the experience. The customer needs to know who they are choosing, what languages they speak, what their background is, and whether they fit the type of journey. After the booking, the app also has to coordinate pickup details, special requests, communication, and additional services.
The result is closer to a managed mobility service than a conventional car-rental flow.
The booking starts with the vehicle. Users can browse premium SUVs, view large vehicle imagery and key specifications, and select the car that fits their trip. The booking interface also makes the rental period explicit, so the user sees the dates and total duration before moving forward.

The driver is presented as a first-class part of the product rather than an invisible operational detail.
Users can browse different drivers and open a detailed profile with name, age, languages, experience, personal description, and interests. This allows the choice to be based on more than availability. A business traveller may prefer a driver who speaks several languages, while another customer may care more about experience or personal interests.

In most mobility products, the driver is a temporary identity attached to a trip. Here, the driver is part of what the customer is paying for.
That changes the information hierarchy. A name and rating are not enough. The profile needs to communicate personality and suitability: languages, age, experience, background, interests, and a short personal introduction.
The selection process therefore works more like choosing a service professional than assigning an anonymous driver.
The ride can be extended with additional services such as an incognito ride, bodyguard, personal concierge, secretary, translator, or ride sharing.
Services are added directly to the booking and reflected in the final calculation, so the customer can understand exactly what is included before paying.

The checkout combines all booking information in one place: selected driver, vehicle, rental period, location, additional services, discount, VAT, and available bonuses.
The user can apply existing bonuses, see the bonuses earned from the current ride, and choose between saved cards, Apple Pay, Google Pay, or another payment method.
The goal was to keep a complex premium purchase understandable without hiding the details that affect the final price.
The moment of payment is not the end of the flow.
After the reservation is confirmed, the user still needs to specify the exact pickup time, location, and special instructions. In the example flow, the customer can specify a precise airport pickup point and add instructions such as meeting at a particular lounge.
The product therefore treats the booking as a lifecycle:
reservation → pickup details → driver preparation → arrival → ride
This prevents important operational information from being buried inside the initial checkout.
The most distinctive part of the product is the Personal Concierge.
The customer can assign tasks to the driver across several categories: restaurants, shopping, daily routine, entertainment, and VIP places. Instead of forcing users to formulate every request from scratch, the interface first organizes possible tasks into recognizable groups.
For example, a user can request a table with a city view, arrange shopping, organize a dinner, book a spa appointment, or ask the driver to deliver documents to another address.
The interaction becomes a task-management layer built on top of the ride itself.

The concierge experience does not stop at a text field.
A task can contain a specific request, date and time, requirements, and additional notes. Once assigned, it becomes an active task that can be reviewed and discussed with the driver.
This creates a clear transition from an abstract request to an actionable job:
request → requirements → driver → confirmation → completion
The customer always knows what was requested and what the driver is expected to do.

Once a ride or concierge task is active, communication becomes part of the product rather than an external channel.
The customer can see that the driver has received the instructions, monitor their arrival, contact them directly, and communicate about individual tasks.
For pickup, the interface exposes the driver's status and estimated arrival time, while actions such as “Pick me up” and calling the driver remain immediately available.
Premium services often become difficult to understand when multiple extras are added.
The checkout separates the rental price, additional services, VAT, discount, and bonus usage before showing the final total. Each service remains identifiable rather than being collapsed into a single unexplained amount.
This is especially important when services such as a bodyguard, translator, secretary, and concierge can all be combined in one reservation.
The experience continues after the customer has booked everything.
The interface communicates that the driver has received the instructions, shows the current status, and provides an approximate arrival time. At the pickup stage, the customer gets direct actions instead of having to navigate back through the booking.
The same logic is used for concierge tasks: pending work, confirmed tasks, requirements, and communication remain visible as the service progresses.
The visual language is deliberately minimal and image-led, but the underlying interaction is highly structured.
The product has to manage luxury positioning without sacrificing operational clarity: which car, which driver, which dates, which services, where to meet, what was requested, how much it costs, and what happens next.
The design keeps those details available without making the experience feel like an administrative dashboard.
[IMAGE: component / state documentation]
The product contains several interconnected flows, so consistency between booking, ride management, driver profiles, payments, and concierge tasks was essential.
The interface was built around reusable patterns for cards, service selections, task states, navigation, payment methods, and ride-status components. Different states were treated as part of the product rather than as exceptions to the main flow.
The result is a mobile experience where the same visual language follows the customer from the first SUV selection all the way through an active ride and the completion of personal tasks.





Customers apply shades to prepared interior scenes, switch lighting conditions, and compare colors across a realistic wall surface.
The module imports catalogues from popular manufacturers, while cross-references and paint-base compatibility hide technical complexity from the customer.
Chosen colors can be added to the cart with the tinting service, ordered as samples, saved in an account, shared by link, and quickly reordered later.
Choosing paint online is a high-risk decision. A small color swatch does not help customers imagine a shade on a large wall, in daylight or evening light, or next to furniture. As a result, they postpone the order, buy several samples blindly, or leave for an offline store.
RoboTint is an online tinting module that paint and coatings e-commerce businesses can embed into their catalogue. It turns a complex color-selection task into a clear journey: see a catalogue shade in an interior, compare several options, choose the right paint and volume, and place an order.
In a typical paint and coatings store, a customer sees color as a small square in a catalogue. But a shade looks different across a large surface, in different lighting, and within a specific interior.
For an e-commerce business, this creates a conversion problem at the point of choice. A customer may:
The goal was not simply to display a palette. The module needed to give customers enough confidence to place an order and directly connect color selection with paint and tinting-service purchase.

The module is built around imported paint and tinting catalogues from popular manufacturers. Users choose a specific catalogue shade—not a generic blue or green.
The complexity of compatibility remains inside the product. The system accounts for cross-references and links each shade to the appropriate paint base, so customers do not need to understand tinting technology to place a correct order.
This turns the module from an inspirational color picker into a commercial tool that can lead to a real purchase.

Rather than attempting to simulate an unlimited number of user interiors, I designed a set of pre-rendered scenes. Each room type includes dedicated interiors and 10–12 renders with different lighting conditions and viewpoints.
Customers can apply colors to the walls and see how they work alongside furniture, doors, flooring, and décor. A day/night switch is also included, as the same shade can look noticeably different depending on the light.
Importantly, the module does not promise perfect digital color accuracy. It is a tool for narrowing down and comparing options, so the interface includes a disclaimer explaining the difference between an on-screen preview and the actual painted result.
Paint selection rarely happens with one click. People usually keep several close options in mind and try to remember how one blue differs from another.
The module allows users to collect several shades and compare them directly within an interior. Comparing four or five colors was the most practical use case, but the product did not impose a hard limit.
Selected colors remain visible in a bottom panel, allowing users to return to them, remove options, add new ones, and retain context while exploring a large palette.

Once a user has narrowed down their choice, the module offers a meaningful next step: order small sample pots or add paint with a tinting service directly to the cart.
This supports different levels of confidence:
The tinting service is added to the order together with the paint, making the selected color part of a correct product configuration rather than a note the customer needs to explain manually to a seller.

Color selection often does not end with one order. Paint can run out, a renovation can continue in stages, or a chosen shade may need to be repeated months later.
Users can therefore sign in and save selected or previously purchased colors to their account. This supports several repeat-use scenarios:
The last scenario is particularly valuable for shared decision-making. For example, one person can select colors visually, while another opens the same collection through a link—without exchanging color codes or trying to explain “which beige” they mean.

RoboTint is designed not as a standalone paint store but as a module that can be embedded into a paint and coatings e-commerce experience.
For customers, it is a familiar in-store journey: choose a color, check it in an interior, select a product, and place an order. For the retailer, it is a way to reduce uncertainty before purchase, offer samples as an intermediate step, and increase the likelihood of selling the required volume of paint together with the tinting service.
My responsibility covered the UX, interface design, and prototyping of the entire module—from catalogue selection and visual comparison to purchasing, saving, and repeat-order scenarios.




Route, visit, and employee status are brought into clear working views rather than buried in reports.
Managers can start with the team-wide picture, then drill down into a route or store to see the details.
The work goes beyond visual polish: it defines a direction for core workflows, including data hierarchy, filtering, prioritisation, and exception management.
IPC provides software for field merchandising teams. The system already captured data on routes, visits, employees, retail locations, and in-store execution—but its interface did not help managers turn that stream of information into timely operational decisions.
The client commissioned a design audit and a concept for the product’s potential evolution. I reviewed the existing workflows and created a set of concept screens and a presentation: a direction for making data easier to scan, surfacing exceptions sooner, and giving managers a clearer view of field operations.
For a field team, it is not enough to know who started a route or how many locations they visited. Managers need to quickly identify missed visits, routes falling behind plan, in-store execution issues, and situations that require action.
The audit highlighted the need to rebuild the information hierarchy: separate high-level oversight from detailed data, make statuses easier to scan, and reduce the effort required to move between a route, an employee, and a retail location.

The concept dashboard brings together the map, visit list, employee statuses, route progress, and messages from the field. A manager can start with the overall picture of the day and quickly move to a specific issue or retail location.
I used different ways of representing the same information—map, table, and cards—because each supports a different task. Maps make geography easier to understand, tables support progress comparison, and cards provide faster context for an individual visit.

In products like this, users rarely need to review the entire dataset at once. More often, they need a specific slice: a particular company, city, team, date range, visit type, or completion status.
Filtering was therefore designed as part of the main workflow, not as a secondary setting. Saved presets make recurring views reusable without rebuilding conditions every time—for example, when monitoring a specific client or region.

At the store level, I consolidated data on visits, attendance, check-ins, product availability, planograms, RTV, and individual sections. Instead of moving through disconnected areas, managers get one coherent view of a location and can understand what requires attention.
This shifts the experience from reviewing reports to working with exceptions: not simply seeing a completion percentage, but understanding why it changed and what needs to happen next.

I prepared a design concept and presentation for IPC that connected the audit findings to specific interface decisions. It provided a direction for evolving the product: from a system that records field activity into a tool that helps teams actively manage it.



The profile brings together contact details, the responsible team member, programmes, documents, finances, and activity history.
Admissions stages, programme changes, and urgent tasks are surfaced clearly, helping the team see where action is needed.
I established reusable patterns for lists, cards, statuses, tabs, and change logs—not a one-off screen, but a foundation for further CRM development.
IGEC already had its own system, but managing applications was cumbersome: key information about a student, admissions, documents, and changes was scattered across the workflow.
I was brought in not to redesign the entire product, but to create a clear design direction for one of its core CRM sections—something the in-house team could use as a reference going forward. I designed a concept that turns disconnected data into a practical workspace for supporting students throughout their admissions journey.
International admissions are not a single application. One student may have several programmes and institutions, supporting documents, offer conditions, changed dates, payments, and multiple people involved on the agency side. When all of this lives as separate fields and screens, a CRM may store data but does not actively support the work.
The goal was to present more than a database record. Staff needed to see the current picture at a glance: what is happening now, who is responsible, which programmes are in progress, and what requires the next action.

The My Students area was designed as an operational queue rather than a passive directory. Search works not only by name, but also by contact details, passport number, and date of birth; filters and sorting help staff quickly find the right cases. Urgent tasks and reminders stay visible.
This reduces the time spent locating a case and makes distributed team work more transparent: each team member can immediately see which students need attention first.

Within the profile, I brought together the essential context: student information, the responsible manager, current status, programmes, documents, invoices, and activity timeline.
The programme structure was particularly important. Each programme shows the institution, campus, admission stage, cost, start date, and changes to its conditions. Staff do not need to reconstruct the application history from messages or search for the reason a status changed.

For applications involving multiple people, it is essential to understand what has already happened. The concept therefore includes an activity log for programme creation and changes, status updates, document uploads, and other actions. Documents are organised into categories to make them easier to review and hand over to the next person in the process.
This turns the CRM from a place that merely stores information into the team’s shared operational memory.

I created a clear design direction for IGEC’s internal team: an interface where a student’s complex admissions journey reads as a coherent process rather than a collection of disconnected CRM fields. The concept can serve as a foundation for developing the rest of the system.
♡



Healthcare professionals, medical representatives, and pharmaceutical companies share one space for news, expert content, discussions, and role-relevant materials.
Points, levels, achievements, and rankings turn participation into visible progress rather than an abstract reward system.
Activity, achievements, and community participation become part of the user profile, helping each person see their own journey inside the platform.
MedReach brings together healthcare professionals, medical representatives, and pharmaceutical companies in one professional environment. The platform already includes educational materials, courses, a video library, communication tools, events, and career opportunities.
The goal of the social and gamification layer was to ensure these tools did not exist as disconnected sections. It needed to give users a reason to return regularly: follow professional content, participate in the community, develop their profile, and see their own progress.
Healthcare professionals receive pharmaceutical materials through one channel, participate in learning through another, and look for events and vacancies elsewhere. Medical representatives build relationships with HCPs through in-person meetings, calls, chats, and separate corporate tools.
MedReach already addressed the functional side of this problem by bringing communication, learning, content, and professional opportunities together. The next challenge was to make the ecosystem feel alive - not just a place users visit to complete one task, but a professional space they want to return to.

The social experience is built around a feed containing materials from pharmaceutical companies and the medical community. In one stream, users can follow industry updates, educational content, cases, events, and posts from colleagues.
The goal was not to copy a mainstream social network. Here, content exists not for reach or entertainment, but for professional value: new knowledge, communication, career development, and interaction with the industry.
Each participant - a doctor, representative, or company - has a different role in the system, but shared mechanics for viewing, reacting, discussing, and following create one common language of interaction.

In an ecosystem with a large number of materials, courses, and professional activities, it is easy to lose the sense of progress. Gamification was therefore needed not as a decorative layer of medals, but as a way to make user contribution visible.
Points, levels, badges, and achievements help capture participation in the life of the platform. Users see not only individual actions, but also their accumulated journey: how actively they explore content, participate in the community, and develop their professional presence.
This approach is particularly important in a professional product: rewards should not diminish medical expertise. They should support regular, meaningful activity rather than turn the application into a game for its own sake.

The profile brings together what users do across different parts of MedReach: professional information, community activity, achievements, and connections.
For a doctor, it is a way to establish a presence in the professional community. For a medical representative, it makes their activity and interaction results visible. For companies, it enables interaction with a verified community of specialists rather than an anonymous audience.
The profile connects content, learning, and interaction: a published post, completed course, or earned reward no longer remains an isolated action.

Social mechanics support the whole product, not a separate feature
The feed and gamification do not exist separately from the rest of the platform. They help users discover learning materials, return to courses, notice events, maintain professional connections, and stay informed about the industry.
For pharmaceutical companies, this creates a more active and sustainable communication channel with HCPs than a one-time mailing or single meeting. For specialists, it provides one environment where useful content, professional communication, and development do not require switching between multiple services.
MedReach does not use social mechanics as a superficial way to increase engagement. The social and gamification layer connects the platform’s existing functions into one professional experience.
Users receive more than a feed and a collection of rewards. They get a visible path within the community: learning, participating in a professional environment, building reputation, and returning to the product with clear personal value.



The main screen shows portfolio value, performance, account structure, and assets before users move on to an individual trade.
Buy and sell flows account for order type, commission, available funds, insufficient balance, and the selected account before an operation is confirmed.
Users can top up accounts, withdraw funds, manage bank details, and close a brokerage account while seeing which positions, liabilities, or documents prevent the action from being completed.
URALSIB already had a banking platform for retail customers, but its brokerage account remained a tool for experienced users. Its logic, amount of market data, and terminology were designed more for professional traders than for someone considering their first investment.
The task was to design a new investment section through which existing bank customers could access brokerage products, understand the state of their assets, and complete essential operations without first having to master a professional trading terminal.
A brokerage account already existed, but it was designed for people who understood how exchange trading works. For an everyday bank customer, this created a high barrier to entry: before making a first investment, they needed to understand market terminology, account types, orders, available balance, and a large number of financial indicators.
The new section needed to become an accessible entry point to investment products for the bank’s existing audience—people without prior investment experience. The goal was not to hide financial complexity, but to reveal it at the moment when it was genuinely relevant to the user.
The main page is built around answers to the user’s most basic questions:
Instead of separating every account into its own isolated view, users receive a unified overview of their brokerage account and Individual Investment Account (IIA). Key metrics appear in the top section, while the asset list remains available below, with the number of securities, current value, and performance.
This sequence helps users understand their overall financial situation before going deeper into individual instruments and trades.

For a user without investment experience, investing does not start with a ticker symbol. It starts with a question: “What is available, and how do I choose?”
The product therefore includes two related scenarios:
Investment ideas do not replace the user’s own decision. Their role is to reduce cognitive barriers and help people begin exploring instead of leaving them alone with a long list of unfamiliar securities.

The highest-risk part of the experience is the moment of buying or selling. It is not enough to show input fields and a confirmation button: users need to understand what kind of order they are creating, how much it will cost, and whether their balance is sufficient.
The transaction flow includes:
Users see the financial consequences of their actions before confirmation, rather than discovering constraints after attempting to submit an order.

Investing does not end with buying an instrument. Users move money between the bank and their brokerage account, so funding and withdrawal need to be a natural part of the account experience.
The product includes flows for adding funds, withdrawing money, and saving bank details. Users can see where funds will be transferred, add a new withdrawal account, and use saved details in the future.
This reduces manual errors and makes repeat financial operations faster.

The project was built from a substantial requirements specification covering the system and many mandatory scenarios. My responsibility was to design the complete UX and interface of the investment section: from the first portfolio overview to trading operations, money management, and account closure.
The central principle was to make an investment service accessible to an everyday bank customer without turning financial logic into a set of simplified and opaque actions.




A vertical video feed helps users assess light, space, views, surroundings, and the overall atmosphere of a property within seconds.
The feed supports fast discovery, the list supports rational comparison, and the map supports location-led decisions.
Agent contact is embedded in the property experience, allowing users to ask questions or request the next step without losing context.
Typical real estate websites are built around filter panels, listing grids, and static photography. While familiar, this approach turns mobile property search into a slow comparison of dozens of similar-looking listings.
This concept rethinks discovery as a visual feed. Users quickly explore properties through short videos, switch to a list or map when their task changes, and start a conversation with an agent directly from a property card.
The approach reflects local behaviour: in June 2026, mobile devices accounted for 72.44% of web traffic in Saudi Arabia.
Most real estate websites follow the same pattern: filters, grids of static cards, long detail pages, and a separate path to contact an agent. On a phone, this creates too much switching and too little sense of the actual property.
The goal was not a cosmetic redesign of a typical real estate website, but a more natural way to explore property on a mobile device.
The primary mode is a vertical property feed, using a familiar social-media interaction pattern. Users scroll through short videos while essential information - the property name and price - remains visible on top of the content.
Video is not intended to replace all property information. It is the fastest way to create a first impression, showing scale, interiors, views, surroundings, and atmosphere before the user opens the full property details.

Once a property catches the user’s attention, its details expand in a bottom sheet instead of opening a separate, heavy page. The same context includes area, number of bedrooms and bathrooms, a description, interior gallery, building and neighbourhood imagery, floor plans, property features, and location on a map.
This allows users to move from an emotional first impression to a rational review of details without losing the property or returning to the catalogue.

Different moments in the search process require different tools. The feed is designed for fast discovery. List mode supports reviewing properties as comparable cards. Map mode becomes essential when the decision is driven by neighbourhood, proximity to work, infrastructure, or a specific area of the city.
These modes are connected through one navigation system and one inventory of properties. Users change their view, not the product.

Once users have watched a property and reviewed its details, they should not need to search for the agency contact details or move to a separate form. The property view provides direct access to a conversation with the assigned agent.
This makes the contact point timely and contextual: users can clarify details, request another video, discuss VIP services, or arrange a viewing without having to explain which property they mean.
The concept moves real estate discovery beyond the era of listing catalogues and towards a mobile-native pattern of consuming visual content. Instead of asking users to begin with filters and text-heavy cards, the product lets them see a space first, explore the relevant details quickly, and start a conversation immediately.



Routes help people explore nearby landmarks together with volunteers and other participants, rather than alone.
Interest-based groups and events create continuity after a route: users can find people with similar interests and return to the app for more than another walk.
The interface connects people looking for things to do nearby with volunteers and activists who organise routes and events for the community.
Exploring Path is a client project for YMCA focused on local discovery and youth engagement in community life.
The product was not intended to become another city guide. It brings together volunteer-led walking routes, interest-based groups, and local events proposed by community activists. Users can do more than find a nearby place—they get a reason to leave home, meet people, and take part in local life.
Even in a familiar city, people often do not know which places are nearby, what they can do in their free time, or how to meet new people beyond their usual circle.
For YMCA, this was an opportunity to create a digital entry point into local life: helping young people find activities, learn more about their neighbourhood, and become involved in interest-based communities.
A key part of the idea was connecting digital and offline experience. The app was not intended to keep people on a screen—its purpose was to help them choose an activity and go out into the real city.


The core experience is built around themed local routes led by volunteers. They can combine landmarks, cultural places, natural locations, or points connected by a specific topic and participants’ interests.
Within the interface, each route is presented as an understandable activity. Users can see its theme, format, level of difficulty or expected involvement, and decide whether it is the right way for them to spend their time.
This approach makes local exploration more accessible for people who are not used to planning outings on their own or do not know where to start.

One walk does not always create a lasting connection to a community. The product therefore includes interest-based groups where users can find like-minded people and discover activities connected to the topics that matter to them.
This changes the product logic: Exploring Path does not end when a route is completed. A participant can join a group, follow upcoming events, and return to the platform as a source of local social life.
The platform also supports people who are already active in city life: volunteers, local activists, and event organisers.
They can propose activities for specific groups and interests, while participants can discover them in one place alongside routes and other events. This reduces the gap between an initiative that exists in the local community and people who could join it but simply do not know it exists.
The main UX principle was not to turn the app into a social network designed purely for feed consumption and screen time. Each key section should help users take their next offline step:
This brings several fragmented ways of discovering a city and community into one clear user journey.

This was a real client project for YMCA. I was responsible for the mobile app design: the visual language, interfaces for key user scenarios, and prototyping.
The design challenge was to make the product’s social idea accessible and appealing to a young audience: avoiding information overload while giving people enough context to choose an activity, feel interested, and move toward real-world participation.



The platform helps patients find clinics, specialists, procedures and diagnostics for cases that cannot be effectively resolved locally.
Treatment, travel, accommodation and related services are combined into one clear, personalised offer with a total cost.
Detailed doctor, clinic and service profiles help users understand their options before making a payment or travelling.
When a medical case is complex or the required treatment is not available locally, booking a doctor’s appointment is not enough. Patients need to find the right clinic and specialists, understand the sequence of medical services, estimate the cost, and organise travel, accommodation and other practical details.
Hospital (NDA) turns this fragmented process into one service. Users describe their needs, receive a personalised care package, and pay for it as one solution rather than arranging dozens of separate services on their own.
A patient may need care that is unavailable in their city: a rare specialist, complex diagnostics, surgery or treatment at a specialised clinic. In these situations, finding care becomes a major project where medical and logistical decisions are closely connected.

Users can explore relevant treatment options, clinics or specialists, while the service builds one coordinated offer. The package may include consultations, procedures, diagnostics, flights, accommodation and other supporting services.
This reduces cognitive load at a time when patients already need to make difficult medical decisions.

Doctor, clinic and service profiles give patients enough context to understand the differences between options: specialty, experience, what is included, price and conditions.
The interface is designed to make a complex offer transparent rather than hiding important details behind one package price.

After choosing an option, users do not have to switch between multiple services. They can arrange their treatment journey in the app and use one space to manage documents, statuses and trip-related details.