Server Health Monitor watches seven learning platforms for HCL Software. This case study covers one narrow problem inside it: knowing whether a course page and its videos actually load — not just whether the server replied.
ScopeSynthetic Journeys module
RoleResearch, IA, interaction, UI
Surfaces7 monitored endpoints
CadenceCron-scheduled browser runs
HCLSoftware U — past 24 hours, as the uptime check saw it92.0% uptime
▲Two red blocks. Ninety-four green. The green blocks include the window where the course catalogue rendered empty — because the homepage still returned in 393 ms, and that is all the check was ever asked to measure.
01
The problem worth solving
Uptime monitoring answers one question: is the front door open? Support gets asked a different one: can a learner finish a course?
Server Health Monitor checks seven endpoints every fifteen minutes. A check passes when the host responds and responds quickly. That is a genuine signal — it catches hard outages, expired certificates, and DNS failures. It is also blind to the entire class of failure that produces the most tickets in a learning platform, because in every one of those cases the server answers perfectly.
Where it breaksWhat the learner getsUptime check
Catalogue API times outHomepage loads, course grid is emptyWorking · 200
Media host rejects the tokenCourse opens, every video fails to playWorking · 200
SSO redirect loopCannot sign in at allWorking · 200
Search index unbuilt after releaseZero results for any courseWorking · 200
Origin downNothing loadsNot loading
Only the last row is caught today. The four above it are the ones that reach a human first — and the human is usually a learner, not an operator.
The contradiction is visible on the product's own screen
The Overview headline reads “All 7 sites are working fine.” The uptime card reads 100.00%. Four rows further down the same page, HCLSoftware U sits at 92.0% with two red blocks in its 24-hour strip, and iSuccess responds in 1,939 ms under a green “Working” badge.
The summary and the evidence beneath it disagree, and both are computed from the same shallow signal. That is not a copy bug to patch. It is the symptom that defined the brief.
Scope discipline. This case study deliberately does not redesign alerting, reporting, incident management, or the link-monitoring table. It addresses one question — is the learning experience working? — and stops.
02
Research approach
Five inputs, chosen to separate what people say goes wrong from what the record shows goes wrong.
Method
Sample
What it was for
Semi-structured interviews
9 participants · 30–45 min
5 LMS platform operations, 2 support desk leads, 2 on-call engineers. How an incident is currently noticed, confirmed, and communicated.
Support ticket review
90 days, LMS-tagged
Coded by failure class and by who reported it first, to test whether monitoring or people detect problems.
Diary study
3 operators · 2 weeks
Every manual "is it actually up?" check logged with trigger, duration, and outcome.
Competitive teardown
6 synthetic-monitoring tools
Scored on authoring effort, LMS-specific assertions, scheduling, and failure evidence.
Instrumentation review
Existing check definition
Documented exactly what the current check asserts — and everything it does not.
Research questions
When a learning platform degrades, who finds out first and how?
What does an operator do between suspecting a problem and confirming it?
Which failures are worth waking someone for, and which are noise?
What stops this team from writing browser-based tests today?
On the numbers in this document. The interface screens in section 13 are the real product. The research findings, quotes, personas, and metrics that follow are written as a study framework with representative results — they show what was asked and how it was analysed. Replace them with the recorded study data before this is circulated as evidence.
03
What we heard
Six findings survived triangulation across interviews, tickets, and diaries. Quotes are composites drawn from the interview set, not verbatim attributions.
F1
Learners are the monitoring system. The first signal of a degraded platform is almost always a message from someone trying to use it — not an alert.
“I find out we have a problem when three people ask me the same question in ten minutes.”
F2
Confirmation is the expensive part. Before anyone can escalate, an operator opens the platform themselves, signs in, finds a course, and tries to play something. That reproduction loop is manual, repeated per platform, and repeated again for every person who asks.
F3
Nobody trusts the green. Operators re-checked manually even when the dashboard was fully green, because they had been burned by a green dashboard during a real outage.
“The dashboard tells me the site is up. It has never once told me a course won't open.”
F4
Partial failure hurts most. Whole-platform outages are rare, loud, and quickly owned. The damaging failures are narrow: one course, one media host, one region, one browser.
F5
Test authoring was the blocker, not test running. The team knew what to check. Nobody on it wrote Playwright or Selenium, and there was no route to a test that did not go through an engineering request.
“I can tell you exactly what to click. I can't tell a script how to find it.”
F6
Noisy alerts get muted within a week. Every participant who had used alerting before had silenced a channel. Any new alert had to be provably quiet before it would be trusted.
04
Who this is for
Three roles came out of the interviews with meaningfully different needs. The module is designed for the first; the other two consume its output.
Priya R.
LMS Platform Operations Lead · primary
Owns
Day-to-day health of seven learning and enablement platforms.
Goal
Know a course is broken before a learner tells her.
Frustrations
Green dashboard during a live incident
Re-checking seven platforms by hand
Cannot write browser tests herself
Decides by
Whether she can reproduce the failure in one click.
Matthew J.
Learning Technology Manager · decision maker
Owns
Vendor relationships, renewals, and the availability story told upward.
Goal
Evidence for SLA conversations that is stronger than "it responded."
Frustrations
Uptime percentages nobody believes
No record of what learners actually experienced
Decides by
Whether the report holds up in a vendor review.
Arun K.
Support Desk Lead · secondary
Owns
First response to every "the course won't open" ticket.
Goal
Answer "is it us or is it you?" in under a minute.
Frustrations
Repeating the same manual reproduction per ticket
Closing tickets with no root cause
Decides by
Whether he can see a known failure without asking engineering.
05
From findings to principles
Each principle answers a specific finding and constrains a specific design decision.
#
Principle
From
How it shows up in the design
P1
Assert the outcome, not the response code
F1, F3
A journey passes only when the thing a learner needs is present — the course grid rendered, the video element playable. HTTP status is not a pass condition.
P2
Anyone who can describe a test can build one
F5
AI Auto-Pilot accepts plain English and generates the steps. Manual Steps stays for people who want exact control. Neither requires code.
P3
Alert on confirmed failure, never on a blip
F6
One failure triggers a retry, not an email. Two consecutive failures make it an incident.
P4
A summary may never contradict its evidence
F3
The Overview headline is derived from the worst journey result, not from an average of response times.
P5
Every failure ships with its reproduction
F2, F4
A failed run stores the step that broke, a screenshot at that moment, the URL, and the timestamp — so confirmation is reading, not re-doing.
P6
Authoring is a two-minute task
F5
Name, prompt, Save & Run. Scheduling is a default, not a required step.
06
Information architecture
Synthetic Journeys sits beside Link Monitoring rather than inside it. The two answer different questions and should never be mistaken for each other — that mistake is the original problem.
Navigation is unchanged apart from one new top-level item. Journeys inherit the existing Logs and Settings surfaces rather than creating parallel ones.
Why not put journeys inside Link Monitoring
It was the cheaper build, and it was rejected. A link check and a journey produce results that look identical in a table and mean completely different things. Collapsing them would have reproduced the exact confusion the project exists to remove — a row that says “Working” when the learner sees nothing.
07
Flows and automation
Authoring a journey
Both authoring paths converge on the same object. Save & Run is the default action because an unverified test is worse than no test — it produces false confidence, which is the failure mode this project is correcting.
A scheduled run, end to end
The two-strike rule exists because of F6. A single failed run is information; two consecutive failed runs are an incident. Only the second one is allowed to send email.
Scheduling
Link checks already run every fifteen minutes. Journeys are heavier — a real browser, a real sign-in — so they run less often and are staggered so that seven platforms never start at the same minute.
# proposed default schedule — one line per journey*/15 * * * * link checks, all 7 endpoints (existing)7 * * * * HCLSoftware U · catalogue loads
22 * * * * HCLSoftware U · course video plays
37 * * * * iSuccess · sign-in and learning home
52 */2 * * * Percipio · course launch
15 6,13 * * 1-5 full regression across all platforms
Illustrative configuration. These cron expressions show the intended cadence and staggering pattern. Confirm real intervals against platform rate limits and test-account policy before deploying.
08
Priya's incident, mapped
The current-state journey for a partial failure — a course catalogue that renders empty while the homepage responds normally.
The intervention is deliberately early. Everything to the right of "First report" is downstream cost; the design is aimed at removing the phase rather than optimising it.
09
What to build, and in what order
AI Auto-Pilot ranks highest because F5 identified authoring — not execution — as the blocker. Building a perfect runner that nobody can write tests for would have shipped nothing.
Release 1 scope
Feature
Behaviour
Serves
AI Auto-Pilot authoring
A journey name and a plain-English prompt produce a runnable browser test. No selectors, no code.
P2, P6
Learning-specific assertions
Course grid is populated · a named course opens · the video player loads its media · search returns results.
P1
Cron scheduling
Per-journey interval, staggered across platforms, editable as a plain expression.
P1
Two-strike alerting
Retry once after 60 seconds. Email only on a second consecutive failure.
P3
Failure evidence pack
Failing step, screenshot at failure, URL, duration, timestamp — attached to the run.
P5
Honest Overview verdict
The headline is derived from the worst current journey result, never from average response time.
P4
Explicitly out of scope
Slack and Teams routing, per-journey escalation policies, synthetic checks for non-learning systems, video quality-of-experience scoring, and mobile-app journeys. Each is defensible; none of them close the gap between “responded” and “worked”, which is the only thing release 1 is measured on.
10
Sketches
Three screens carry the whole module: an empty state that teaches, a builder that accepts a sentence, and a result that proves what happened. These were drawn to settle the shape before any of it was worth refining.
Annotations in amber are the design decisions the sketches were made to test.
11
Low-fidelity wireframes
Structure and hierarchy resolved at greyscale, so that layout decisions were argued on their merits rather than on colour.
Two structural decisions came out of this round: the 24-hour strip was carried over from Link Monitoring so both modules read the same way, and the evidence block was moved out of a modal onto the page itself.
12
High-fidelity wireframes
Colour applied last, and only where it carries meaning: teal for the module in focus, and the status semantics — teal, amber, red — reserved exclusively for run results.
Save & Run is the only filled primary button on the screen. Save alone stays available but visually secondary, because a saved-and-never-run journey is the false-confidence problem in a new costume.
13
The shipped interface
Seven screens from the running product, in the order a new operator meets them.
Sign inThe subtitle states the scope in the user's words: monitor your LMS platforms in real time.
OverviewStatus tiles, and the seven monitored endpoints with their 24-hour strips.
This screen is the argument for the whole module. The headline reads “All 7 sites are working fine” and the uptime card reads 100.00%, while HCLSoftware U shows 92.0% with two red blocks and iSuccess responds in 1,939 ms under a green badge. Nothing here is a lie — every number is correctly computed from what the check measures. The check simply measures the wrong thing.
Principle P4 targets exactly this line: once journeys are running, the verdict is derived from the worst current journey result rather than from an average response time, so the sentence and the table can no longer disagree.
Link MonitoringWhere endpoints are added, singly or in bulk, with speed, TTFB and SSL columns.
Deliberately left alone. This module does its job well — it just answers a narrower question than its results imply. Journeys were added beside it rather than folded into it.
Synthetic Journeys, emptyThe entry point, before anything has been created.
The subtitle carries the definition — automated browser tests that verify user experience flows such as logins and course loads — because this is a concept most operators are meeting for the first time. The sketch round proposed naming a concrete first journey here; that refinement is still open.
Journey BuilderTwo authoring modes. AI Auto-Pilot is selected by default.
Save is disabled until there is something to save, and Save & Run is the emphasised action. The placeholder text teaches the prompt format by example rather than through help copy.
Journey one — does the catalogue load?The check that would have caught the failure in section 08.
Journey two — do the videos play?One level deeper: open a named course and verify its media.
These two prompts are the entire thesis in plain English. Neither mentions a status code, a selector, or a timeout. Both assert something a learner would notice — and both are written by the person who already knew what to check but previously had no way to express it.
14
Where it stands
Authoring and scheduling are shipped. Result surfacing is the open work.
The builder proves the authoring hypothesis: a platform operator with no browser-automation background can create a working test by describing it. That was the blocker identified in F5, and it is gone.
Still to land
Gap
Why it matters
Run detail with evidence
Without the failing step and a screenshot, P5 is unmet and an alert still triggers the manual reproduction loop it was meant to replace.
Journey results on Overview
The verdict line is still computed from response time. Until it reads from journeys, the contradiction in section 13 remains on the screen.
Visible schedule and next run
Cron is configured outside the interface today. Operators cannot see when a journey last ran or when it runs next, which undermines trust in it.
Two-strike rule in the UI
The retry behaviour needs to be stated on the journey, or a first failure will be read as an outage.
How this gets measured
Four measures, all baselined before release so the comparison means something. None of them is uptime.
Detection source. Share of LMS incidents first detected by a journey rather than by a person. Baseline from the 90-day ticket review.
Time to confirm. Minutes between first signal and confirmed reproduction. Baselined from the diary study.
Alert trust. Proportion of alerts that turn out to be real, tracked weekly. If it falls, the two-strike rule needs tightening before anything else is added.
Authoring reach. Number of distinct people who have created a journey without engineering help. The direct test of P2.
Open question for the next round. AI-generated steps are readable but not yet reviewable — an operator cannot see which selectors the prompt resolved to, so a journey that silently starts asserting the wrong element would pass forever. A generated-steps preview before Save is the most likely answer, and it needs testing with the operations group before it is built.