API is not responding
Request to /api/version failed: HTTP 502
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Read-only observation · no ability to change anything
Each alert stays open for as long as its condition holds, rather than repeating every cycle. Explanations are written by the AI at the moment of detection.
Nothing is alerting
Every monitored condition is within its threshold.
Kept so a recurring problem is visible as a pattern rather than a series of surprises.
Request to /api/version failed: HTTP 502
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
ECS service memory at 89.8%
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Average API response time is 3725.4ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Average API response time is 3612.4ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Request to /api/version failed: This operation was aborted
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Request to /api/version failed: This operation was aborted
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Request to /api/version failed: This operation was aborted
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Average API response time is 2803.2ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 of 3 tasks running
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Request to /api/version failed: This operation was aborted
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Request to /api/version failed: This operation was aborted
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
5.1% of API requests returned 5xx (4 of 78)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
2 email deliveries failed. Top reason: Recipient is on the SES suppression list (2).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
5.1% of API requests returned 5xx (4 of 79)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
5.5% of API requests returned 5xx (3 of 55)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
5.2% of API requests returned 5xx (3 of 58)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Average API response time is 2148ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
What this likely means
A single email send failed because the recipient address is on the SES suppression list. This is almost certainly a per-recipient issue, not a platform fault: the address was previously suppressed (bounce or complaint), so SES rejected the send before delivery. Everything around it looks healthy — API reachable at 200 in 33ms, 0 HTTP 5xx, 3/3 healthy hosts on both ALBs, ECS 3/3 tasks at 2.5% CPU / 23% memory, RDS at 4% CPU with 9 connections and sub-millisecond write latency, and 19/19 registrations plus 3/3 applications succeeding with no recorded failure reasons. So the mail path itself and the stage-transition workflow that triggers it are working for everyone else in this window. The user impact is narrow but real: one candidate did not receive a transactional email (likely a stage-transition or registration/verification notice) and has no in-product signal that it was dropped — they may be blocked on a verification link or unaware their application moved stages. Note the alert threshold is 0, so this rule will fire on any single suppressed recipient; that is expected noise unless the count climbs. Two things are unknown from this payload: which specific email type and recipient failed, and whether there is a retry/dead-letter path — neither is instrumented here, so do not assume the message will be re-sent. The 5 HTTP 4xx on the API are likely unrelated routine client errors, but they are not broken down here.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 5837.7ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
Average API response time is 2645.8ms
What this likely means
What the data shows: ALB target-group average latency for the API is 2645.8ms over 84 requests in the window, while a direct synthetic probe of the API returned 200 in 23ms. Infrastructure is idle: ECS CPU 4.4%, memory 31.8%, 3/3 tasks running and healthy; RDS CPU 5.2%, 9 connections, 961MB freeable, read latency 0ms / write 0.3ms. No 5xx, 4 x 4xx, web tier at 5.3ms. Business workflows in the window all succeeded: 12 registrations, 5 applications, 0 failures, 0 email failures, with 15 candidates and 0 staff active. Most likely interpretation: this is a latency average skewed by a small number of genuinely slow requests rather than a platform-wide slowdown. With only 84 requests, roughly 5-10 requests taking 20-30s would produce this mean on their own. The fact that CPU, memory, DB latency and connection count are all near-idle argues strongly against resource contention, connection-pool exhaustion or a DB hot spot; a saturated pool or slow disk would show up in RDS connections or latency. The endpoints candidates hit in this window are registration and application submission, both of which typically do synchronous outbound work - transactional email at stage transitions, file/resume upload to storage, or an external enrichment call. Slow or retrying outbound I/O is the explanation most consistent with 'high wall-clock latency, no CPU, no DB pressure, no errors'. A second, weaker possibility is cold-start or first-request compilation cost on a recently deployed task, or a few unindexed list/search queries returning large result sets (these would show as low DB CPU but non-trivial query duration, which is not instrumented here). User impact: likely limited but real - a minority of candidates experienced multi-second waits on register or apply, while most requests were fast. Nothing failed: no registration, application, or email failures were recorded, and no 5xx. Note the 4 x 4xx are unexplained by the workflow counters, and staff activity is 0, so staff-side latency is unmeasured in this window. Unknowns - do not assume healthy: there is no p50/p95/p99 breakdown, no per-route or per-endpoint latency, no application-level trace or slow-query log, no outbound email/SMTP latency metric, and no DB connection-pool utilisation metric. All of these are simply unknown, not zero. The 23ms probe only proves one lightweight path was fast at one instant.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2263.7ms
What this likely means
The ALB is reporting a 2263.7ms average API response time over the window, but every resource metric that would explain a broad slowdown is idle: ECS CPU 2.7%, memory 31%, 3/3 tasks running and healthy; RDS CPU 5.4%, 9 connections, 956MB freeable, read latency 0ms and write latency 0.7ms. A direct synthetic probe at detection time returned 200 in 33ms, and the Next.js frontend behind the same infrastructure averaged 8.3ms. No 5xx, only 2 4xx out of 57 requests, and all workflows succeeded (20 registrations, 7 applications, 0 failures, 0 email failures) with 11 talents active. This pattern is most consistent with a small number of individually slow requests skewing the average over a low-volume window (57 requests), not a platform-wide degradation — one or two 30-60s requests would be enough to lift the mean past 2000ms. The likely culprits are a specific slow endpoint or code path rather than capacity: an unindexed or N+1-heavy query (RDS aggregate latency can look fine while one query blocks on locks or a seq scan), a synchronous outbound call such as the transactional email provider on a stage transition, or a cold-start/first-request penalty on a rarely-hit route. Note what is not instrumented here: there are no per-endpoint or percentile latency breakdowns, no ALB target_processing_time vs request/response time split, no queue depth, and no email-provider latency — so the slow path cannot be identified from this payload alone, and its absence should not be read as healthy. User impact is likely narrow: most candidates are seeing normal response times, but whoever hits the slow path is waiting seconds (possibly tens of seconds) or may perceive a hang, and staff activity is 0 so no internal users are currently affected.
Suggested checks
Suggestions only — this system has no ability to act on them.
8 email deliveries failed. Top reason: Recipient is on the SES suppression list (8).
What this likely means
What the data shows: 8 email sends failed in the window, all with the same reason — the recipient address is on the SES suppression list. Everything else is healthy: API returns 200 in 29ms, 3/3 ECS tasks running at 3% CPU / 26% memory, RDS at 4% CPU with 9 connections, zero 4xx/5xx on both ALBs, and 12 registrations plus 6 application submissions all succeeded with no recorded failure reasons. So this is not an outage, a capacity problem, or a broken integration — the API accepted the sends and SES rejected them at the recipient level. What this likely means: suppression-list entries are created by prior hard bounces or complaints (account-level suppression) or by an explicit suppression list you manage. With 13 talents active and 12 registrations in 5 minutes, the plausible readings are (a) genuinely invalid/typo'd addresses from self-registration that previously hard-bounced, or (b) a batch of addresses — e.g. seeded, synthetic, or load-test accounts such as @example.com or SES simulator addresses — that were suppressed earlier and are now being re-mailed. A third, worse possibility is that a recent bounce spike put real domains into account-level suppression; that would be a deliverability/reputation issue, not just bad data. User impact: those 8 candidates did not receive their transactional email (registration confirmation or a stage-transition notice). The pipeline state change itself almost certainly still committed — nothing in the workflow counters failed — so those candidates are silently advanced or registered without notification. Whether the platform retries, dead-letters, or drops these sends is not instrumented here, so treat the eventual delivery state as unknown. Also unknown: bounce and complaint rates, SES reputation-dashboard status, and whether sending quota is constrained — none of those appear in this payload, so do not assume they are fine. This is a data-quality / deliverability issue, not an infrastructure incident. It is unlikely to escalate on its own, but if the underlying cause is a rising hard-bounce rate it can threaten the whole sending domain's reputation, which would be a much broader outage.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2839.5ms
What this likely means
What the data shows: the ALB reports a 5-minute average API latency of 2839.5ms across 58 requests, but every other indicator is healthy. The direct health probe returned 200 in 21ms. ECS is at 3% CPU / 26% memory with 3/3 tasks running and 3 healthy hosts behind the load balancer. RDS is at 4.6% CPU, 9 connections, 970MB freeable, read latency 0ms. There are no 5xx, only 7 4xx out of 58 requests, and no workflow failures: 25 registrations and 8 applications succeeded, zero failed, zero email failures. The frontend is fast (11.7ms). 12 candidates and 0 staff were active in the window. Most likely interpretation: this is not a capacity or saturation problem. With idle CPU everywhere and a fast health check, a ~2.8s average over a small sample (58 requests) is most consistent with a handful of individually slow requests dragging the mean up — an average, not a percentile, is very sensitive at this volume. Two candidate causes fit best. (1) A few slow endpoints doing work that blocks on something external rather than on CPU: the RDS write latency of 31.6ms is the one genuinely off-looking number (reads are 0ms), so write-heavy paths — registration inserts, application submission, stage transitions — are plausible contributors, likely compounded by N+1 queries or missing indexes that are slow in wall-clock but cheap in CPU. (2) Synchronous outbound calls on the request path, most plausibly transactional email sends at stage transitions; if those are awaited inline, a slow SMTP/provider response would produce exactly this signature: high latency, no errors, no resource pressure. Note the traffic mix is unusual — 25 registrations in a 5-minute window from 12 active candidates is a burst, so the slow requests are likely concentrated in the registration/application path (which is write-heavy and email-triggering) rather than spread evenly. User impact: likely a subset of candidates experiencing multi-second waits on specific actions (probably signup or apply), while most browsing stays fast. Nothing is failing — no failed registrations, applications, or emails — so this is currently a degradation, not an outage. Important unknowns: per-endpoint and per-percentile latency breakdowns are not in this payload, so I cannot confirm which routes are slow or whether this is a few outliers versus a broad shift. Email send latency, external provider health, and ECS task-level (as opposed to service-average) metrics are not instrumented here — treat all of these as unknown, not healthy. The 7 4xx responses are uncharacterised and may or may not be related.
Suggested checks
Suggestions only — this system has no ability to act on them.
2 email deliveries failed. Top reason: Recipient is on the SES suppression list (2).
What this likely means
Two email sends failed in the window, both rejected because the recipient address is on the SES account-level suppression list. This is a per-recipient delivery problem, not a platform fault: SES accepted nothing for those two addresses because they previously hard-bounced or produced a complaint. Everything around it is healthy and corroborates that reading — API reachable at 200 in 27ms, 0 HTTP 5xx across API and web, 3/3 healthy hosts and 3/3 ECS tasks, ECS CPU ~4.7% / memory ~32%, RDS CPU ~4.3% with 9 connections and sub-millisecond latency, and 24 registrations plus 6 applications all succeeding with no recorded failure reasons. So the email path itself is up and the rest of the system is transacting normally; the failures are scoped to specific addresses. User impact is narrow but real: those two candidates did not receive their transactional email (likely a registration confirmation or stage-transition notice, given 24 registrations and 12 active talents in the window), and they will silently keep missing every future email while they remain suppressed — they may believe their application has stalled. Note the 10 HTTP 4xx on the API; that is not obviously connected and is plausibly ordinary client-side noise, but it is unverified. Also unknown: whether the platform retries or dead-letters suppressed sends, whether the candidate-facing UI surfaces any error, and whether other emails in this window succeeded (only the failure count is instrumented, so I cannot infer a success rate). Treat those as unknown rather than fine. The thing that would change the severity assessment is the trend: two suppressed recipients is routine, but a rising count would point at a bad address source (typo-prone signup form, no email verification, or imported/seeded data) or at a reputation problem generating new bounces.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2659.4ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
3 email deliveries failed. Top reason: Recipient is on the SES suppression list (3).
What this likely means
Three transactional emails failed, all with the same SES reason: the recipient address is on the SES account-level suppression list. This is a recipient-scoped problem, not a platform or infrastructure problem. Every surrounding signal is healthy and corroborates that: API returns 200 in 23ms with 3/3 healthy hosts and no 5xx; ECS is at 3% CPU / 25% memory with 3/3 tasks running; RDS is idle (4.5% CPU, 9 connections, sub-millisecond latency); 20 registrations and 4 applications succeeded with zero failures. So the send path itself is working — SES accepted the API call and then refused delivery for specific addresses. A suppression-list entry means SES previously recorded a hard bounce or complaint for that address (or it was added manually/by a bulk import), so SES silently drops sends to it to protect the account's sending reputation. User impact: the affected candidates did not receive their stage-transition email and will not receive any future email until the suppression is removed. They may be stuck waiting on an interview invite or assessment link with no idea it was sent. Note the 3 http4xx on the API in the same window — likely unrelated (nothing in recentFailureReasons), but worth a glance in case they are the same requests surfacing the failure. Also treat the count as a floor: only failures the platform observed are counted here, and asynchronous bounces or complaints that arrive after the send are not visible in this data, nor is any retry/dead-letter state — those are unknown, not zero. Whether this is three unrelated stale addresses or an early sign of a reputation problem (rising bounce rate, a bad import, a domain-auth regression) cannot be determined from these metrics alone.
Suggested checks
Suggestions only — this system has no ability to act on them.
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
What this likely means
Scope is almost certainly a single recipient, not a platform problem. One email delivery failed in the window, and SES reported the reason as 'Recipient is on the SES suppression list' — that is SES refusing to attempt delivery to one address that was previously hard-bounced or marked as a complaint. It is not an outage of the email path: other emails in the window were not reported as failed, and every surrounding metric is healthy (API 200 in 34ms, 0 5xx, 3/3 ECS and ALB hosts, ECS CPU ~4% / memory ~25%, RDS CPU ~6% with 9 connections and sub-ms write latency, 21 registrations and 6 applications succeeded with zero failures and no recorded failure reasons). The alert fired only because the threshold is 0. User impact: one candidate silently did not receive a stage-transition or registration email and will not receive any future email at that address until the suppression entry is removed. If it was a verification or stage-change notification, that candidate may appear stalled in the pipeline from their perspective. The suppression is a symptom of an earlier event — a hard bounce (typo'd or non-existent address) or a complaint/spam report — so the real question is which, because complaints affect sender reputation and repeated hard bounces suggest an address-validation gap at registration. Unknowns to respect: the alert payload does not include the recipient address, the template/stage that triggered the send, or whether the app records and retries suppressed sends. SES account-level bounce and complaint rates, and reputation/sending-pause status, are not present in this data — treat them as unknown rather than fine. Staff activity is 0 in the window, so nobody is watching this live.
Suggested checks
Suggestions only — this system has no ability to act on them.
3 email deliveries failed. Top reason: Recipient is on the SES suppression list (3).
What this likely means
Three email deliveries failed in the window, all with the same reason: the recipient address is on the SES suppression list. Everything else looks healthy — API 200 at 19ms, 0 HTTP 5xx, ECS 3/3 tasks at ~4% CPU and 23% memory, RDS at 4% CPU with sub-millisecond write latency and 9 connections, and 17 registrations plus 4 applications all succeeded with no recorded failure reasons. So this is almost certainly not an infrastructure, capacity, or code-path problem: the application is calling SES successfully and SES is deliberately refusing the send for those three specific recipients. SES suppression entries come from prior hard bounces or complaints against those addresses (either your account-level suppression list or the AWS global list). Likely causes: candidates who registered with a typo'd or defunct address, addresses that previously bounced during an earlier stage transition, or someone who marked a past transactional email as spam. Because 17 talents were active and only 3 emails failed, this reads as a per-recipient data-quality issue rather than a systemic sending failure — but I'm inferring that from the failure count and the uniform reason, not from a confirmed list of affected recipients. User impact: those specific candidates silently received no stage-transition email. They will not know their application moved to review/assessment/interview, and if the pipeline assumes email is the notification channel they may stall. The failure is silent to them and, unless the app surfaces it, silent to staff too — note staff activity is 0 in this window, so no one is watching. Worth flagging: whether these sends are retried, whether the failure is persisted against the candidate record, and whether a stage transition is committed even when its email fails are all things I cannot tell from this data. Also unknown here: the account-wide SES bounce and complaint rates. If suppression entries are accumulating steadily, the underlying bounce rate could be trending toward the SES reputation thresholds, which would be a much more serious problem than three missed emails — that needs to be checked directly, not assumed healthy.
Suggested checks
Suggestions only — this system has no ability to act on them.
3 email deliveries failed. Top reason: Recipient is on the SES suppression list (3).
What this likely means
Three transactional emails failed, all for the same reason: the recipient address is on the SES suppression list. This is a per-recipient delivery problem, not a platform fault. Everything around it is healthy and corroborates that: API reachable at 200 in 25ms, ECS 3/3 tasks at 2.6% CPU / 28.6% memory, RDS at 4.3% CPU with 9 connections and 949MB freeable, zero 5xx on both API and web, 3 healthy hosts each. Registrations (28) and applications (6) all succeeded with no recorded failure reasons, so the pipeline that generates these emails is working — the messages were produced and handed to SES, and SES declined to send to those specific addresses. SES suppression normally means those addresses previously hard-bounced or filed a complaint, either on your account-level suppression list or the global AWS one. User impact is narrow but real and silent: up to 3 candidates did not receive a stage-transition email (e.g. assessment or interview invite) and have no way to know it. They will appear in the pipeline as unresponsive. Note the 8 HTTP 4xx on the API in this window — likely unrelated client/validation noise given 18 active candidates, but worth a glance to confirm none are from the email-sending path. Also note RDS write latency of 23.8ms, which is elevated relative to a read latency of 0ms; it is not causing this alert and may simply reflect low sample volume, but it is the one metric that is not obviously idle. Unknowns: the actual recipient addresses, whether the suppression is account-level or global, the original bounce/complaint reason, and whether any retry or dead-letter mechanism exists for failed sends are not in this data. Bounce and complaint rates for the account are also not instrumented here — do not assume they are healthy.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2160.6ms
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
1 email deliveries failed. Top reason: Recipient is on the SES suppression list (1).
What this likely means
Scope is one email, not a delivery outage. A single send failed with SES reason 'Recipient is on the SES suppression list' — that is SES refusing to send to one specific address, not TaliLink failing to send. Every surrounding metric is healthy and corroborates a narrow, recipient-specific issue rather than a platform fault: API reachable (200, 33ms), 0 HTTP 5xx across both API and web, ECS 3/3 tasks at 5% CPU / 23% memory, RDS at 4.5% CPU with 9 connections and sub-millisecond write latency, and the workflows that trigger emails are succeeding (42 registrations, 12 applications, zero failures, no recent failure reasons). So the alert fired on a threshold of 0, which any single suppressed recipient will breach. User impact is likely limited to one candidate who will not receive their transactional email (e.g. a stage-transition notice) and has no in-product signal that it was never delivered. Addresses land on the SES suppression list after a prior hard bounce or complaint, so the underlying cause is most likely a bad/typo'd or abandoned address, or a candidate who previously marked TaliLink mail as spam — possibly from an earlier send. Note what the data does not tell you: the recipient address, the email type/stage, and the candidate ID are not in this payload, and there is no metric here for the account-wide SES bounce or complaint rate or sending-quota state. Those are unknown, not healthy. The one thing worth ruling out quickly is whether this is the first of a cluster — a rising suppression count would point at a list-hygiene or reputation problem that could eventually threaten SES sending privileges for all candidates. A single event on a zero threshold does not yet support that reading. The 12 HTTP 4xx on the API are almost certainly unrelated at this traffic level (124 requests, 22 active candidates, normal for validation errors and auth challenges), but nothing in this data links them either way.
Suggested checks
Suggestions only — this system has no ability to act on them.
Workspace SMTP rejected the backup password. SES is still sending; there is no failover until the app password is replaced.
What this likely means
What the data shows: the NestJS MailService is repeatedly failing to authenticate its secondary/failover SMTP transport against Google Workspace with '535-5.7.8 Username and Password not accepted' — roughly 16 occurrences logged between 07:05:29 and 07:05:48, i.e. a tight, ongoing retry loop rather than a one-off. Everything else is healthy: API 200 in 27ms, ECS 3/3 tasks at 6% CPU / 30% memory, RDS 5% CPU with 9 connections and sub-1ms write latency, no 5xx on either ALB, 6 healthy API hosts and 3 healthy web hosts. Workflows are succeeding normally in the window — 44 registrations, 13 applications, zero failures — and emailsFailed is reported as 0, which is consistent with the primary path (SES) still delivering. This is almost certainly a credential problem, not an infrastructure problem: a Google Workspace app password that was revoked, expired, rotated, or invalidated (e.g. by a password change, 2FA/app-password policy change, or admin-enforced revocation), and the env var SMTP_USER/SMTP_PASS in the running task definition still holds the old value. Impact right now is latent, not user-visible: candidates are still receiving stage-transition, invite and password-reset email via SES, so no one is blocked today. The real exposure is that redundancy is gone — if SES is throttled, suspended, or hits a sending/reputation problem, transactional mail fails outright, which on this platform means candidates cannot complete password resets or receive invites and stage-transition notices. Two caveats: emailsFailed=0 covers only the observed window and may only count primary-path sends, so it is weak evidence that no mail is being lost, not proof; and I cannot see SES-side metrics (bounce rate, send quota, suppression list) in this payload, so SES health is unknown rather than confirmed good. A secondary concern is the retry loop itself — if it is unbounded it can generate log volume and, on Google's side, repeated failed logins can trigger further account lockout.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2493.3ms
What this likely means
The elevated API response time suggests a performance bottleneck affecting user experience. Despite all components reporting healthy usage levels, with low CPU and memory usage across ECS and RDS, and no HTTP 5xx errors indicating server errors, the average API response time remains high at 2493.3ms. The absence of increased database latency and the fact that CPU and memory are not maxed out across resources suggest the bottleneck may reside in application processing or network latency. The elevated API response time, despite low traffic levels (130 requests), further points to an internal inefficiency or misconfiguration rather than resource exhaustion.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 160.2ms
What this likely means
The high write latency of 160.2ms in the PostgreSQL RDS instance likely indicates a performance bottleneck in write operations to the database. Despite this, the API is reachable with a response status of 200 and normal error rates, suggesting that the immediate impact on the platform's functionality and user experience might not yet be severe. However, elevated write latency could lead to delays in operations such as candidate registrations or job applications, particularly if they involve writing data to the database. The low CPU utilization (4.29%) and modest number of connections (9) suggest that the database instance is not CPU-bound. The platform's Next.js frontend also shows normal operation, with low response times and no HTTP errors, indicating that current user interactions are likely unaffected. Despite the limited immediate impact, prolonged high write latency can degrade performance over time, especially under heavier loads.
Suggested checks
Suggestions only — this system has no ability to act on them.
Request to /api/version failed: HTTP 502
What this likely means
The platform is experiencing an API issue indicated by the HTTP 502 error when accessing /api/version, suggesting a bad gateway problem. This typically occurs when the API is unable to properly communicate with backend services or there's a misconfiguration. Despite the 502 error, other metrics show no signs of elevated HTTP 5xx errors overall, and ECS resources appear underutilized, indicating the problem might be specific to a particular service or endpoint rather than a general system failure. The RDS instance and other component metrics like ECS CPU and memory utilization are within normal ranges, suggesting they aren't the direct cause of the 502 error. The 'healthyHosts' metric reporting 3 healthy hosts implies the issue isn't due to host failures. The continued successful registration and application processes hint that parts of the platform are still operational.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 3278.2ms
What this likely means
The elevated API response time suggests latency issues affecting user interactions with the platform, likely resulting in slow page loads or timeouts. Despite the high response times, there are no elevated 5xx errors, indicating that the API is reachable and functional, but experiencing delays. Both ECS and RDS show low CPU and memory utilization, implying they are not bottlenecks. The error logs indicate some POST requests to /api/uploads have encountered errors, though these do not appear to be widespread. The transactional and workflow activities, such as registrations and applications, are completing successfully without failures, supporting that the latency might be isolated or affecting a subset of functions like file uploads.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2422.3ms
What this likely means
The elevated API response time suggests a bottleneck impacting users' experience. Despite the API's healthy status, the increased response time indicates potential issues in the request handling pipeline. With low CPU and memory usage on ECS and RDS, system resource exhaustion is unlikely. The absence of elevated 5xx errors or failed workflows reinforces this. The discrepancy between the reported responseMs in apiTraffic (2422.3ms) and the API's quicker responseMs (45ms) suggests intermittent network latency or another external factor prolonging API requests as aggregated by apiTraffic.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2135.6ms
What this likely means
The elevated API response time suggests there is a bottleneck or a delay in the API processing, affecting user experience. Considering that the ECS and RDS resource usage is low (CPU 2.07%, memory 29.37%, RDS CPU 4.93%), the issue is likely not due to resource exhaustion. API traffic shows 8 requests with an average response time of 2135.6ms, but there are no 5xx errors, which indicates the API is functioning but slowly. With only 1 HTTP 4xx error, this points to a likely application-level slowness rather than an influx of invalid requests or server errors. The ECS tasks are running as desired, and the database latency is low, so network issues or an isolated slow query could also contribute to this delay.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 3875.4ms
What this likely means
The elevated API response time suggests a performance issue, but specific metrics show the underlying systems are performing within normal parameters. The ECS and RDS instances have low CPU usage, indicating they aren't overwhelmed. Network latency to or from the API could be a factor, or potential blockage in between steps of processing HTTP requests. Also, the slightly elevated HTTP 4xx errors suggest user or input errors, but no 5xx implies server-side errors aren't present. Given the low number of requests, possible issues with the load balancer or network configuration might be causing delayed responses despite available resources.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 4488ms
What this likely means
The API response time of 4488ms, which has breached the threshold of 2000ms, indicates a performance bottleneck. The data shows the ECS CPU and memory usage are low, ruling out resource exhaustion on the application servers. The RDS metrics show low CPU usage and latency, suggesting the database is not currently a bottleneck. The report of 0 HTTP 5xx errors suggests the API is error-free but slow. Given the low traffic (10 requests) relative to the elevated response time, this is consistent with an issue in backend processing or a third-party service the API relies on being slow, rather than server overload. The absence of collection errors also suggests that data input isn't disrupted. Users may experience delays in their requests being processed, affecting interactions like job applications and stage transitions.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2101ms
What this likely means
The elevated API response time suggests that users experience slower-than-expected interactions with the platform. However, the system metrics show low resource usage: ECS CPU is at 2.05%, memory at 27.62%, and RDS CPU at 4.14%. Network or concurrency issues may contribute, considering the low traffic (20 API requests in 5 minutes) and no signs of system overload. Given zero API 5xx errors, current delays are more likely due to queuing, load balancing inefficiencies, or transient spikes in resource demand. It is worth checking if certain endpoints are particularly slow or if external dependencies, such as transactional email operations, introduce latency.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2529.7ms
What this likely means
The elevated API response time of 2529.7ms is primarily affecting the user experience by making interactions with the platform slower than expected. Despite the high average response time, the system is reachable and returning 200 status codes, indicating it is functioning but with degraded performance. The ECS CPU and memory usage are low, suggesting that compute resource limitations in ECS are not the root cause. Similarly, the RDS instance shows low CPU usage and normal read/write latency, ruling out database processing as a bottleneck. The presence of recent errors related to the AnthropicService and multiple schema validation failures might imply issues in auxiliary service calls or business logic handling that could be contributing to the increased API response time. No indication of exhausting AI feature limits or API 5xx errors; thus, the platform's core processing is healthy, but latency issues are likely rooted in specific logic or external service calls.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 117.2ms
What this likely means
The platform is experiencing high write latency on the PostgreSQL RDS instance, recorded at 117.2ms against a threshold of 100ms. While other metrics such as API response times and error rates appear normal, the elevated write latency could result in slower performance for operations involving data submission or updates, such as candidates applying for jobs or moving through the pipeline stages. This might slightly degrade user experience but is not causing outages or visible errors. The low CPU usage and connections on RDS, and absence of application-level errors, suggest the issue is not due to an overloading condition or increased traffic demands, but may be related to I/O performance issues on the RDS instance itself.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 101.9ms
What this likely means
The platform is experiencing elevated database write latency at 101.9 ms, just above the threshold of 100 ms, which could lead to slower performance during write operations. This can affect the speed at which user actions like submitting applications or registering are processed. Despite the high write latency, the overall system appears to be functioning without errors (e.g., no elevated 5xx errors or failed workflows). The CPU usage on both ECS and RDS is low, indicating that the issue is likely not related to CPU resource constraints.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2244.4ms
What this likely means
The elevated API response time of 2244.4ms despite a healthy platform indicates a localized slowdown. With CPU and memory usage low on both ECS and RDS, hardware resource saturation is unlikely. The absence of API errors (0 HTTP 5xx) suggests stability, but 7 HTTP 4xx errors indicate some bad requests affecting performance. Traffic levels are modest (35 API requests in 5 mins), ruling out volume bottlenecks. The issue may lie in specific request patterns or payloads causing slowness, or an unoptimized process during specific API calls.
Suggested checks
Suggestions only — this system has no ability to act on them.
Average API response time is 2126ms
What this likely means
The average API response time is slightly elevated at 2126ms, above the threshold of 2000ms. Despite this, the ECS and RDS metrics are within normal operating ranges, indicating that neither the application server nor the database is heavily overloaded. The network and traffic load is relatively low with only 6 API requests and 3 web requests during the monitoring period. This suggests the latency might be due to specific API endpoints or certain requests rather than general system load. The API requests have 3 instances of HTTP 4xx errors but no 5xx errors, meaning there are some client-related issues. Two upload errors were recorded but do not directly contribute to API response latency because they involve file uploads which are separate from the average response time latency being observed. Therefore, it most likely means the latency may be related to specific processes or endpoints within the API that are not heavily impacted by server or database performance.
Suggested checks
Suggestions only — this system has no ability to act on them.
6.2% of API requests returned 5xx (38 of 609)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
7.0% of API requests returned 5xx (21 of 300)
What this likely means
What the data shows: 21 of 300 API requests (7%) returned 5xx in the window. Every captured failure reason is the same endpoint — GET /api/me/applications -> 500, thrown through AllExceptionsFilter — with occurrences spread across 08:14 to 08:17, so this is ongoing rather than a single blip. Infrastructure looks healthy and is unlikely to be the cause: ECS 7% CPU / 28% memory with 3/3 tasks running, RDS 4.8% CPU, 9 connections, 1032 MB freeable, sub-3ms write latency, 3 healthy hosts on both target groups, and the direct API health probe returned 200 in 23ms. The frontend is clean (287 requests, zero 4xx/5xx). Write paths are fine too: 228 registrations succeeded with 0 failures and 0 email failures. So this is almost certainly an application-level bug on one read endpoint, not saturation, not a deploy-wide outage, and not a database availability problem. User impact (inferred): 83 talents were active in the 5-minute window and 0 staff. /api/me/applications is the candidate's "my applications" view, so affected candidates likely see a broken or empty applications dashboard after logging in or registering. Notably applicationsSubmitted is 0 in this window while registrations are high — consistent with a burst of new signups whose application list is empty or whose data is in an unexpected shape (e.g. a null join on a pipeline stage, missing profile row, or an unhandled case for a user with zero applications). That is a plausible hypothesis, not established: the log lines carry no stack trace or exception class, so the actual throw site is unknown from this data. Caveats: the aggregated failure reasons account for 8 occurrences, not 21 — the remainder are not represented in this sample, so I cannot rule out a second failing endpoint. The 352ms mean API latency vs 7.6ms on web is elevated but not alarming, and per-endpoint latency is not instrumented here. Whether the 12 4xx are related is unknown.
Suggested checks
Suggestions only — this system has no ability to act on them.
7.0% of API requests returned 5xx (39 of 560)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
8.1% of API requests returned 5xx (37 of 458)
What this likely means
What the data shows: 458 API requests in the window, 37 of them 5xx (8.1%), while infrastructure is essentially idle — ECS 6.5% CPU / 27% memory with 3/3 tasks running, RDS 4.4% CPU, 9 connections, 1034 MB freeable, write latency 1.6 ms, and all 3 API targets healthy. A synthetic probe against the API returned 200 in 30 ms. So this is not capacity, not database saturation, and not a host/task outage — it is consistent with a specific code path throwing on specific requests. The captured failure reasons point almost entirely at one endpoint: GET /api/public/jobs/cmtvbo4hj001mw001u4prr8tq/sponsor-eligibility?email=..., failing repeatedly across different candidate emails on a single job ID (cmtvbo4hj001m...), spanning 7:54 to 7:58. One unrelated GET /api/me/applications -> 500 also appears. Note the sample of reasons shown is only 5 lines, not all 37 errors, so the endpoint attribution is inferred from that sample, not proven for all failures. Likely user impact: candidates viewing or applying to that one job are hitting a broken sponsor-eligibility check. Registrations are unaffected (148 succeeded, 0 failed) and 66 talents were active in the 5-minute window, so traffic is real user traffic, not a probe artifact. Notably applicationsSubmitted is 0 for this window with 0 failures — that may be normal for a 5-minute slice, or it may mean candidates are stalling before submit because the eligibility call fails; the data cannot distinguish these. Mean API latency of 294 ms is unremarkable and the frontend is clean (310 requests, 0 5xx, 6.5 ms), so the Next.js app itself is serving fine; users would see an error state or a stuck widget inside an otherwise working page. Email failures are 0, but emailsFailed only covers attempted sends — it says nothing about emails never triggered. Most likely cause, stated as inference: an unhandled exception in the sponsor-eligibility handler — e.g. a null/missing field on that particular job record (a sponsorship or visa attribute that other jobs have), an unhandled result from a downstream/external eligibility lookup, or a query returning no row where the code assumes one. The fact that it fails for many different emails but one job ID points at job-record data rather than per-candidate data. Unknown from this data: the actual stack trace, whether all 37 5xx share this endpoint, and whether any write path is affected.
Suggested checks
Suggestions only — this system has no ability to act on them.
5.2% of API requests returned 5xx (22 of 422)
What this likely means
What the data shows: 22 of 422 API requests (5.2%) returned 5xx in the window, and API p-average latency is 736ms while the health-check probe itself answered in 20ms with a 200. The named failures cluster on GET /api/me/applications (6 occurrences across 07:49-07:53, from the AllExceptionsFilter) plus one GET /api/public/jobs/:id/sponsor-eligibility. Infrastructure is not strained: ECS 3/3 tasks running, CPU ~6%, memory ~25%; RDS CPU 4.55%, 9 connections, 1030MB freeable, read latency 0ms. All 3 ALB targets are healthy on both API and web, and the Next.js frontend is returning zero 4xx/5xx with 6.5ms responses. Registrations are succeeding (125, 0 failed) and 0 emails failed. Most likely interpretation: this is an application-level fault on specific read endpoints, not a capacity, deploy-wide, or database-down event. If it were resource exhaustion or a bad task, you would expect elevated CPU/memory, unhealthy hosts, or failures spread across registration and other write paths — none of which are present. The concentration on /api/me/applications (a candidate-facing read of their own applications) is consistent with a query or serialisation error triggered by particular data — e.g. a null/orphaned relation, a candidate with an unusual pipeline stage, or an unhandled edge case — rather than a systemic outage. One corroborating oddity: RDS write latency is 32.2ms against 0ms read latency, which is high relative to the near-idle CPU; that may be unrelated background write activity, but it is worth a glance since the 736ms average API latency suggests something is slow somewhere. User impact: likely narrow but sharp. 56 talents were active in the 5-minute window and 125 registrations succeeded, so signup is working. But candidates hitting their applications dashboard are getting errors — for an affected user this probably fails every time, not intermittently, since it is likely data-dependent. applicationsSubmitted is 0 in this window; with 0 applicationsFailed, that is most plausibly just no submission attempts, but I cannot rule out that broken dashboard navigation is suppressing submissions. Note also that staff activity is 0, so no one internal is likely to notice from the inside. The 21 4xx responses are not broken out by route or status and are unexplained. Not instrumented / unknown here: the actual exception stack traces and messages (the log lines captured only the route and status), per-route request counts and latency breakdown, which user IDs hit the errors, recent deploy timestamps, and whether the 22 5xx are all from these logged routes — the sampled reasons account for only 7, so 15 of the 22 have no attached reason in this payload.
Suggested checks
Suggestions only — this system has no ability to act on them.
5.3% of API requests returned 5xx (17 of 318)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
8.4% of API requests returned 5xx (29 of 345)
What this likely means
A single endpoint is failing, not the platform. All 5 captured failure reasons are GET /api/me/applications -> 500 from the NestJS AllExceptionsFilter, spread across 07:42-07:46, so the 29 5xx (8.4% of 345 requests) are most likely concentrated on the candidate 'my applications' list. Infrastructure looks healthy and is not the constraint: ECS 3/3 tasks, CPU 5.8%, memory 24.7%; RDS CPU 5.8%, 9 connections, 1030MB freeable, write latency 1.4ms; ALB reports 3 healthy hosts on both API and web; the direct API health probe returned 200 in 27ms. That pattern is consistent with an application-level bug (unhandled exception in the handler/query/serialisation) rather than saturation, a bad deploy of the whole service, or a database outage. Two things deserve attention beyond the obvious. First, API p-average latency is 508.6ms versus 8.1ms on the web tier, which is high for a system this idle - either the failing path is timing out/retrying before throwing, or a slow query is affecting more than just this endpoint; the data does not tell us which. Second, applicationsSubmitted is 0 while 100 registrations succeeded and 50 talents were active in the 5-minute window. That may simply mean nobody happened to submit in this window, but it is also consistent with the application flow being broken upstream of submission - the log sample only covers a GET, so we have no evidence either way. applicationsFailed is 0, which means no failure was recorded, not that submissions are working. User impact: candidates who log in and open their applications page likely see an error or empty state, which is high-visibility even though registration and the frontend are unaffected. Note the failure reasons are raw log lines with no statusCode field and no stack trace, so the actual exception type is unknown from this data.
Suggested checks
Suggestions only — this system has no ability to act on them.
5.0% of API requests returned 5xx (16 of 318)
What this likely means
What the data shows: 16 of 318 API requests (5.03%) returned 5xx in the window, just over the 5% threshold. Infrastructure is not the constraint — ECS is at ~7% CPU / 24% memory with 3/3 tasks running, RDS at 4% CPU, 9 connections, 1032MB freeable, sub-2ms write latency, and all 3 API hosts healthy. A direct health probe returned 200 in 24ms. So this is almost certainly application-level, not capacity or availability. The named failures cluster on two candidate-facing GET endpoints: /api/public/jobs/{id}/sponsor-eligibility (4 occurrences, all against the same job ID cmtvbo4hj001mw001u4prr8tq, different candidate emails) and /api/me/applications (2 occurrences). The sponsor-eligibility failures repeating on one job ID with varying emails is consistent with bad or missing data on that specific job record, or an unhandled case in the eligibility logic — not a generic outage. Note the listed reasons only account for 6 of the 16 5xx; the other 10 are unattributed in this payload, so the blast radius may be wider than these two routes. Corroborating signals worth weighting: API average response time is 945ms against a web tier at 6.8ms and a health check at 24ms — that gap suggests some API requests are slow (possibly timing out or retrying) beyond the ones that hard-fail. Also, 93 registrations succeeded but applicationsSubmitted is 0 with 53 talents active in a 5-minute window. That is a plausible funnel break — candidates arriving and registering but not completing applications — though applicationsFailed is also 0, so this could equally be a cohort that has not reached the apply step yet. Treat it as a lead, not a conclusion. Staff activity is 0, so no internal user is currently reporting this. User impact: likely a subset of candidates hitting an error page when checking sponsor eligibility on one particular job, and some candidates unable to load their own applications list. emailsFailed is 0 and registrations are all succeeding, so signup and transactional email appear intact.
Suggested checks
Suggestions only — this system has no ability to act on them.
5.2% of API requests returned 5xx (18 of 345)
No AI explanation attached (set ANTHROPIC_API_KEY to enable).
7.1% of API requests returned 5xx (20 of 280)
What this likely means
What the data shows: 20 of 280 API requests (7.1%) returned 5xx in the window, while infrastructure is idle — ECS 4% CPU / 23% memory with 3/3 tasks running, RDS 4.6% CPU, 9 connections, 1 GB freeable memory, read latency 0 ms / write 1.8 ms, and all 3 API targets healthy. A direct health probe returned 200 in 26 ms. So this is not capacity, not a crashed task, and not an unreachable database. The frontend is completely clean (248 requests, 0 errors, 8.4 ms), so users can load pages; the failures are in API calls made from those pages. The named failures are concentrated on GET /api/me/applications (4 of the 5 sampled log lines, spread across 07:28-07:32) and one GET /api/public/jobs/{id}/sponsor-eligibility. Both are read paths, both are candidate-facing. Note the sample only accounts for 5 of the 20 5xx responses — the other 15 are not itemised here, so do not assume they share the same cause. The logs are raw AllExceptionsFilter lines with no stack trace or exception type captured, so the actual defect is unknown from this data alone. Most likely interpretation (inference, not established): an unhandled exception in a specific read handler, triggered by particular data or particular user accounts rather than by load — consistent with a repeating failure at low CPU with a healthy DB. A plausible variant is a slow/failing query on that endpoint: mean API latency is 464.7 ms versus 8.4 ms on web, which is high for an idle system and could reflect a handful of very slow requests dragging the average, though RDS-side latency counters look fine. User impact: 31 candidates were active in the 5-minute window and 57 registrations succeeded with zero failures, and zero applications were submitted (with zero application failures — this may simply be a quiet window, or may mean candidates are stalling before submitting; the data cannot distinguish). The concrete visible harm is that logged-in candidates hitting their applications list are likely seeing an error or empty state, and at least one candidate hit an error on the sponsor-eligibility check during a job application flow. Registration and email are unaffected (emailsFailed 0). Unknowns to respect: no per-endpoint request counts or latency breakdown, no exception types or stack traces, no per-task error distribution, and no visibility into whether the remaining 15 5xx responses are the same route. Treat all of those as unknown, not healthy.
Suggested checks
Suggestions only — this system has no ability to act on them.
5.8% of API requests returned 5xx (8 of 138)
What this likely means
Infrastructure is healthy: ECS 3/3 tasks at 3% CPU / 19% memory, RDS at 5% CPU with 9 connections and sub-2ms read/write latency, 3 healthy hosts on both target groups, and a direct API probe returned 200 in 28ms. So this is not capacity, deploy-wide failure, or database exhaustion — it is a specific endpoint throwing. Four of the five captured failure reasons are GET /api/public/jobs/cmtvbo4hj001mw001u4prr8tq/sponsor-eligibility?email=... returning 500, all against the same job ID with different candidate emails, and one is GET /api/me/applications -> 500. The most likely reading is a handler-level bug on the sponsor-eligibility route — something about that job record or the eligibility logic (e.g. missing/malformed sponsorship field, null deref, or an unhandled lookup for candidates with no existing profile) — reproducing every time a candidate hits that job's page. Note the log lines only show five distinct reasons while the window counted 8 5xx, so 3 more errors are unattributed; assume they are more of the same until confirmed rather than absent. User impact is real but narrow: 20 talents were active and 33 registrations succeeded with zero failures, and zero registration/application/email failures are recorded, so signup and mail are working. However applicationsSubmitted is 0 for this window — that is consistent with candidates being blocked at the eligibility check before they can apply, but with no baseline for a 5-minute window it could equally be normal low volume; do not treat it as confirmed impact. Aggregate API latency of 246ms vs 4.9ms on the frontend is elevated but not alarming, and is plausibly inflated by the failing requests themselves. Overall: a localised endpoint defect degrading the apply funnel for one job, not a platform outage.
Suggested checks
Suggestions only — this system has no ability to act on them.
8.0% of API requests returned 5xx (2 of 25)
What this likely means
What the data shows: 2 of 25 API requests in the window returned 5xx (8%), and both logged failures are the same endpoint — GET /api/assessments -> 500, at 07:10:37 and 07:10:38, caught by AllExceptionsFilter. Nothing else looks stressed: API health check returns 200 in 36ms, avg API latency 18.2ms, 3/3 ECS tasks running and healthy, ECS CPU 1.9% / memory 17.6%, RDS CPU 5.2% with 9 connections, 1046MB freeable, sub-1ms write latency and 0ms read latency. Web tier has zero 5xx. No 4xx at all, no email failures, no collection errors. Most likely reading: this is a localised application-level bug on the assessments read path, not a capacity, database, or deployment-wide outage. The two errors are one second apart and probably the same actor retrying, which matches the activity data (1 staff user, 0 talents in the 5-minute window). Because the denominator is only 25 requests, a single failing endpoint hit twice is enough to push the percentage over a 5% threshold — the rate is statistically fragile at this volume, so treat 8% as 'two errors', not 'a 1-in-12 failure rate'. User impact is likely narrow: a staff user viewing the assessments list is seeing a failure; candidate-facing flows show no evidence of harm. But note the limits — registrations, applications, and talent activity are all zero in this window, so those paths were not exercised and their health is unknown, not confirmed good. The log lines carry no stack trace, exception type, or status code field, so the underlying cause (null data, bad query, missing relation, unhandled edge case in a specific assessment record) cannot be determined from this payload alone.
Suggested checks
Suggestions only — this system has no ability to act on them.
8.0% of API requests returned 5xx (2 of 25)
What this likely means
What the data shows: 2 of 25 API requests in the window returned 5xx (8%), tripping a threshold on a very small denominator — at this traffic level a single extra error moves the rate by 4 points, so the percentage is statistically noisy. The recent error log lines name two specific read endpoints: GET /api/analytics/dashboard (bu=all and bu=BU%20ARA, at 06:15:56-58) and GET /api/assessments (06:15:58 and 06:18:07). All are unhandled exceptions caught by AllExceptionsFilter. Infrastructure looks healthy: API probe returned 200 in 30ms, ECS 3/3 tasks running with CPU ~1.8% and memory ~17%, RDS CPU 4.3% with 9 connections and 1042MB freeable, 3 healthy hosts on both target groups, average API latency 9.2ms, zero 4xx on the API, and no registration, application, or email failures recorded. So this is not capacity, not a crashed task, and not a broad outage — it is consistent with a localised bug or data-dependent failure on two specific staff-facing read endpoints. One caveat worth checking rather than dismissing: RDS writeLatencyMs is 40.7 while readLatencyMs is 0, which is unusually asymmetric; it may just be near-zero write volume producing a noisy average, but it is the only infrastructure number out of character. User impact: likely narrow. Activity in the window was 1 staff user and 0 talents, so the failing dashboard and assessments calls are almost certainly that one staff member's console retrying — probably seeing a broken or empty analytics dashboard and assessments list. Candidate-facing flows show no evidence of harm: zero registration failures, zero application failures, zero email failures, and no 5xx on the web tier. Note these workflow counters are all zero partly because no candidates were active, so 'zero failures' here means 'no traffic to fail', not 'verified working'. Nothing confirms the candidate path is healthy — it is simply untested in this window. Also note the log sample shows only 5 recent failure reasons and may be truncated; error counts before 06:15 are unknown from this payload. I have not changed anything and cannot; the following are checks for you to run.
Suggested checks
Suggestions only — this system has no ability to act on them.
17.9% of API requests returned 5xx (5 of 28)
What this likely means
Five 5xx responses out of 28 requests tripped the 5% threshold, but the absolute volume is tiny and the failures are narrowly scoped. All five logged errors are GETs on just two read endpoints — /api/analytics/dashboard (3, with bu=BU%20ARA and bu=all) and /api/assessments (2) — all within a ~3 second span at 06:15:56-58, roughly one minute before detection. Infrastructure looks healthy and does not corroborate a capacity or dependency outage: ECS 1.9% CPU / 17% memory with 3/3 tasks running, RDS 5% CPU, 9 connections, 1041 MB freeable, sub-millisecond write latency, 3 healthy hosts on both target groups, and the API health probe returning 200 in 27 ms with a 13.7 ms average response time. The Next.js frontend shows 0 5xx over 40 requests. No registrations or applications were attempted or failed and no emails failed, so candidate-facing signup/apply/email flows show no evidence of impact in this window — though with 0 talents active in the 5-minute window, that is an absence of traffic rather than proof those paths work. The single staff user active is the likely source of the failing dashboard and assessments calls, so user impact is most likely one internal operator seeing a broken analytics dashboard and assessments list, probably with retries (the repeated identical requests seconds apart are consistent with a page auto-retrying or a component re-rendering). Most likely an application-level exception in those two handlers — a bad query, null/unhandled data shape, or a parameter-specific edge case (note the URL-encoded 'BU ARA' business unit) — rather than an infrastructure fault. Important caveat: the log lines are truncated at the AllExceptionsFilter summary and carry no stack trace, exception class, or statusCode field, so the actual cause is not visible in this data. A short-lived burst like this can also be a transient that has already cleared; the current 200/27 ms health check neither confirms nor rules that out, since the health endpoint does not exercise these code paths.
Suggested checks
Suggestions only — this system has no ability to act on them.
8.0% of API requests returned 5xx (2 of 25)
What this likely means
What the data shows: 2 of 25 API requests in the window returned 5xx (8%), and both recorded failure reasons are the same endpoint — GET /api/assessments -> 500, logged at 06:06:50 and 06:06:51, about 35 seconds apart and ~35s before detection. Everything else looks healthy: API probe returned 200 in 23ms, ECS 3/3 tasks running at 1.8% CPU and 17% memory, RDS at 5% CPU with 9 connections, 1045MB freeable and sub-ms read/write latency, 3 healthy hosts on both target groups, zero 4xx, and the web tier shows no 5xx at all. No registrations or applications failed, and no emails failed — though with 0 talents and only 1 staff user active in the 5-minute window, those counters being zero reflects near-zero traffic, not proven health. Most likely interpretation: this is an endpoint-specific application bug or unhandled exception in the assessments route, not an infrastructure or capacity problem. There is no resource pressure, no database stress, and no host removed from the load balancer that would explain a systemic failure. The 8% figure is also an artifact of a tiny denominator — 2 errors out of 25 requests during an almost-idle window crosses a percentage threshold that would not have fired under normal traffic. The alert is likely real but low-severity in blast radius. User impact: likely confined to whoever was hitting the assessments endpoint — plausibly the single active staff user, or a frontend page polling that route. Since talents was 0, it is unlikely a candidate was affected. I cannot confirm from this data whether the two 500s came from the same caller or the same underlying cause; the log lines do not include a request ID, user, or stack trace. Whether the failure is intermittent or would reproduce on every call to that endpoint is unknown from this snapshot.
Suggested checks
Suggestions only — this system has no ability to act on them.
16.2% of API requests returned 5xx (6 of 37)
What this likely means
Six 5xx responses out of 37 requests in the window, and the captured NestJS logs pin them to two specific read endpoints: GET /api/assessments (4 occurrences) and GET /api/candidates?includeIncomplete=true (1), all between 05:54:42 and 05:54:51 — a ~9 second burst roughly a minute before detection. Everything around the failure is healthy: the API health probe returned 200 in 33ms, all 3 ECS tasks running and desired, ECS CPU ~1.8% and memory ~17%, RDS CPU ~4.3% with 9 connections, 1046MB freeable and sub-millisecond write latency, 3 healthy ALB hosts on both API and web, and average API latency 10.6ms. So this is not saturation, not a crashed task, and not a database resource problem — it is consistent with an application-level exception thrown inside specific handlers (e.g. a null/shape error, a bad query, a failing serialization, or a dependency call inside those two endpoints), not an infrastructure fault. The 16.2% rate is inflated by very low traffic: 37 requests total, with only 1 staff user and 0 talents active in the 5-minute window, so a handful of failed requests from one person's screen crosses the 5% threshold. User impact is therefore likely narrow: the single staff user was probably looking at an assessments/candidates view that failed to load or partially rendered; zero registrations or applications were attempted, 0 workflow failures and 0 emails failed, so the candidate-facing funnel shows no evidence of damage in this window. Note the limits of this data: the log lines carry no stack trace or exception type, there is no per-endpoint request count, and there is no instrumentation here for repeated retries, so I cannot tell whether these were 5 distinct user actions or one page retrying, nor whether the underlying bug is still live.
Suggested checks
Suggestions only — this system has no ability to act on them.
10.3% of API requests returned 5xx (4 of 39)
What this likely means
All 5xx errors in the window trace to a single endpoint: GET /api/assessments, which threw unhandled exceptions caught by AllExceptionsFilter at least 7 times between 05:48:57 and 05:49:17. This is an application-level bug or data-dependent failure on one route, not an infrastructure problem. Corroboration: ECS is healthy (3/3 tasks, CPU 1.9%, memory 17%), RDS is idle and fast (CPU 4%, 9 connections, write latency 0.4ms, read latency 0ms), the ALB reports 3 healthy hosts on both target groups, the API health probe returns 200 in 30ms, and average API latency is 33ms - so the failures are fast rejections, not timeouts or resource exhaustion. Note the denominator is tiny: 39 requests in the window, so 4 errors trips a 5% threshold. The percentage is statistically noisy, but the repeated identical stack signature is real and worth investigating. User impact is likely narrow: activity shows 3 staff and 0 candidates active, so the errors are most likely hitting internal/staff users loading an assessments view rather than candidates. Candidate-facing workflows show no failures (0 registrations failed, 0 applications failed, 0 emails failed) - though note that registrations and applications submitted were also 0, so those paths were simply not exercised and their health is unverified, not proven good. The error log lines have no status code field populated and no stack trace or exception message in the captured data, so the actual cause (null dereference, bad query, missing relation, serialisation error) is not determinable from this payload.
Suggested checks
Suggestions only — this system has no ability to act on them.
11.8% of API requests returned 5xx (4 of 34)
What this likely means
What the data shows: 4 of 34 API requests in the window returned 5xx (11.8%), and all four map to just two staff-facing read endpoints — GET /api/analytics/dashboard?bu=all (2 errors, 05:38:46 and 05:38:47) and GET /api/assessments (2 errors, 05:38:48 and 05:38:49). They occurred in a 4-second burst about 45 seconds before detection. Everything else is healthy: API reachable (200 in 36ms), 3/3 ECS tasks running at ~2% CPU and 17% memory, 3 healthy hosts on both target groups, RDS at 4% CPU with 9 connections and 1044MB freeable, no 4xx, no web-tier 5xx, and average API latency of 9.8ms. Only 1 staff user and 0 candidates were active in the 5-minute window. Most likely interpretation: this is an endpoint-specific application fault (unhandled exception in the analytics dashboard and assessments handlers), not a capacity, infrastructure, or dependency-saturation problem. The AllExceptionsFilter caught the exceptions, so the stack traces exist in the logs but are not in this payload — the actual exception type and message are unknown from this data. The 11.8% rate is inflated by a tiny denominator: 34 requests total, so 4 failures crosses a 5% threshold that would need ~2 failures at this volume. Treat the percentage as low-confidence; the repeated failures on the same two routes are the real signal. User impact: narrow but real. The single active staff user likely saw a broken analytics dashboard and a failing assessments list, probably retrying (hence the duplicate calls one second apart). No candidates were active, and registrations, applications, and email sends all show zero failures — but they also show zero attempts, so those paths are unexercised rather than proven healthy. Candidate-facing signup/apply flows are untested by this data, not confirmed working. One metric worth noting: RDS writeLatencyMs is 45.4 against readLatencyMs of 0. That is elevated in absolute terms, but both failing endpoints are reads, and read latency is flat, so this is probably unrelated background write activity rather than the cause. Worth a glance, not a priority.
Suggested checks
Suggestions only — this system has no ability to act on them.
18.2% of API requests returned 5xx (4 of 22)
What this likely means
Four 5xx out of 22 requests tripped a percentage threshold on a very small sample — one or two more errors would move the rate by ~5 points, so treat 18.18% as noisy. The errors are not a platform-wide outage: infrastructure is idle and healthy (ECS ~1.9% CPU, 17% memory, 3/3 tasks running; RDS ~4.2% CPU, 9 connections, 1040 MB freeable, sub-millisecond write latency and 0 ms read latency), the direct API health probe returned 200 in 37 ms, average API latency is 14.8 ms, all 3 API and 3 web targets are healthy, and the frontend logged zero 5xx. The failures are concentrated on two specific read endpoints — GET /api/analytics/dashboard?bu=all (4 occurrences at 05:31:17, 05:31:18, 05:33:52, 05:33:53) and GET /api/assessments (1 at 05:31:21) — all surfaced by NestJS AllExceptionsFilter, which is consistent with an unhandled exception in application code on those handlers rather than resource exhaustion or DB saturation. Note the log shows 5 error lines while the ALB counted 4 5xx in the window; the 05:31 cluster likely straddles the window boundary. The paired timestamps one second apart suggest retries or a double-fire from a single client. User impact appears narrow: activity shows 1 staff member and 0 talents in the last 5 minutes, so this is most likely one internal user's dashboard/assessments view failing to load. No candidate-facing workflows are implicated by the data — registrations, application submissions, and email sends all report 0 failures, but they also report 0 successes, so the pipeline is simply idle and is untested rather than proven healthy. The specific exception type, stack trace, and whether the dashboard query is DB-backed are not in this payload and are unknown.
Suggested checks
Suggestions only — this system has no ability to act on them.
7.3% of API requests returned 5xx (4 of 55)
What this likely means
Four 5xx responses out of 55 requests tripped the 5% threshold, but the absolute volume is tiny and the rest of the platform looks healthy: the API health check returns 200 in 36ms, average API latency is 10.1ms, all 3 ECS tasks are running with ~1.8% CPU and ~17% memory, RDS is at 4% CPU with 9 connections and sub-millisecond write latency, and the web tier shows zero 5xx. There is no sign of a saturation or dependency-capacity problem. The error log lines are specific and clustered: two failures on GET /api/analytics/dashboard?bu=all (05:31:17, 05:31:18) and two on GET /api/assessments (05:31:20, 05:31:21) — four consecutive seconds, roughly 80 seconds before detection. All were caught by the NestJS AllExceptionsFilter, which is consistent with an unhandled application exception on those two read endpoints rather than infrastructure failure. Activity shows 1 staff user and 0 talents in the 5-minute window, so this is most likely a single staff member loading the dashboard and assessments views (possibly with retries or a component re-render) and hitting an error on both. Because traffic is so low, one user's failed page load is enough to push the percentage over threshold — the rate is statistically fragile at n=55. Candidate-facing impact is likely minimal right now: zero talents were active, registrations and applications show zero attempts (not failures), and emailsFailed is 0. But note that zero attempts means those workflows are untested in this window, not proven healthy. The affected endpoints are staff-facing analytics and assessments, so the practical impact is a staff user seeing a broken dashboard/assessments view. The underlying defect — whatever exception those two handlers throw — would affect any user hitting the same code path, so it should not be dismissed as noise just because the count is low. The exception type and stack trace are not in this payload, so the actual cause is unknown from the data available here.
Suggested checks
Suggestions only — this system has no ability to act on them.
23.8% of API requests returned 5xx (5 of 21)
What this likely means
What the data shows: 5 of 21 API requests in the window returned 5xx (23.8%). All five errors are accounted for in the logs and are GETs on exactly two read endpoints — GET /api/candidates?includeIncomplete=true (3) and GET /api/assessments (2) — all logged by AllExceptionsFilter between 05:08:50 and 05:09:16, i.e. a ~26-second burst, not a sustained failure. Infrastructure is idle and healthy: ECS 3/3 tasks running at 2.3% CPU / 17% memory, RDS 4.3% CPU with 9 connections, 1045 MB freeable, read/write latency ~0–0.2 ms, 3 healthy hosts behind the ALB, and a direct health probe returned 200 in 35 ms with average request latency 7.9 ms. There were 0 4xx, 0 registration or application failures and 0 email failures. What this likely means: this is almost certainly an application-level bug on two staff-facing read endpoints (unhandled exception — e.g. null/bad data in a candidate record, a serialisation or query error, or an ORM/relation issue triggered by includeIncomplete=true), not a capacity, database or infrastructure problem. The saturation metrics rule out resource exhaustion, and the ALB shows all hosts healthy. The percentage is inflated by very low traffic — 21 requests total, 1 staff user, 0 candidates active — so 5 errors is a large share but a small absolute count. User impact is likely limited to the single staff member active in the window, who would have seen failed loads of the candidate list and assessments views; no candidate-facing signup, application or email path shows failures. Caveat: the logs are truncated to a reason line with no stack trace or status code field, and there is no per-endpoint request-count breakdown or error-budget history here, so whether this is a new regression or a recurring background error is unknown from this data.
Suggested checks
Suggestions only — this system has no ability to act on them.
25.0% of API requests returned 5xx (8 of 32)
What this likely means
What the data shows: 8 of 32 API requests in the window returned 5xx (25%). The failing requests are all authenticated staff-side GET reads — /api/assessments (3x), /api/analytics/dashboard?bu=all, /api/candidates?includeIncomplete=true — all surfacing via NestJS AllExceptionsFilter as 500s, clustered in ~13 seconds around 04:56:01–04:56:14. Infrastructure is idle and healthy: ECS 3/3 tasks, CPU 1.9%, memory 17%; RDS CPU 4.4%, 9 connections, 1044MB freeable, sub-millisecond read/write latency; ALB shows 3 healthy hosts on both target groups and 10ms mean API latency; the direct health probe returned 200 in 53ms. No 4xx anywhere, web tier clean. Traffic is tiny (32 API requests, 1 staff user, 0 talents in 5 minutes), so a single user hitting a few broken pages is enough to blow through a 5% percentage threshold — the 25% figure is inflated by the low denominator. Most likely interpretation (inference, not established): this is an application-level bug or data-dependent failure on specific read endpoints, not a capacity, database, or availability problem. Resource saturation and DB contention are effectively ruled out by the metrics. Candidate causes consistent with the pattern: an unhandled exception in shared query/serialisation code used by those three endpoints, a recent deploy, a schema/migration mismatch, or a row of data that breaks a mapper. A dependency timeout is also possible but the sub-millisecond RDS latency argues against the database being the source. User impact: zero candidates were active in the window, and registrations, application submissions and email sends all show no failures — so the candidate-facing funnel appears unaffected. The visible impact is on internal/staff users: the assessments list, candidates list and analytics dashboard are likely erroring in the UI. Caveat: the 5xx count is a request-level metric; per-endpoint request volume, exception stack traces, and whether this is deploy-correlated are not present in this payload and should be treated as unknown.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 112ms
What this likely means
What the data shows: RDS write latency is 112ms (threshold 100), read latency 0ms. Everything else is idle and healthy — RDS CPU 4.6%, 9 connections, 1062MB freeable memory; ECS 3/3 tasks at 2% CPU and 17% memory; API responding 200 in 34ms; only 4 API requests in the window with 0 4xx/5xx and 3 healthy hosts; zero staff and zero talent activity in the last 5 minutes; no registrations, applications, or email failures recorded. Web traffic response time is reported unavailable(no_data), so frontend latency is unknown, not healthy — though 0 web requests is consistent with genuine idleness. Most likely interpretation: this is a low-volume measurement artefact rather than a user-facing problem. RDS latency metrics are per-operation averages; with almost no write traffic, a handful of writes (an autovacuum, a checkpoint flush, a WAL sync, an automated backup snapshot, or a burst-balance-limited EBS I/O) can dominate the average and push it over a fixed 100ms threshold. Read latency of exactly 0ms corroborates that the volume is tiny — the sample is too small to be statistically meaningful. The near-zero activity counts mean essentially no user is currently experiencing this. User impact right now: likely none observable. No candidate registrations, applications, or stage-transition emails failed or were attempted in this window, and the API is fast. The risk worth ruling out is that this is the leading edge of a real storage problem (depleted gp2/gp3 burst credits, a failing volume, or a backup window overlapping traffic) that would bite once real load returns — that cannot be distinguished from the current snapshot alone.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 118.4ms
What this likely means
A write-latency threshold breach (118.4ms vs 100ms) on RDS, with essentially no load anywhere else in the system. Corroboration: RDS CPU 4.4%, 9 connections, 1060MB freeable memory, read latency 0ms; ECS at 2% CPU / 17% memory with 3/3 tasks running; only 4 API requests in the window with a 14.9ms average and zero 4xx/5xx; health check returned 200 in 40ms; zero staff and zero talent activity in the last 5 minutes; no registrations, applications, or email failures recorded. No user impact is visible in this snapshot — nobody was on the platform to be affected. The most likely reading is a measurement artifact rather than a storage fault: at near-zero write volume, RDS WriteLatency is an average over a handful of I/O operations, so one slow or cold-cache write (checkpoint flush, autovacuum, log rotation, EBS burst-credit or gp2/gp3 baseline behaviour, or a background snapshot) dominates the average and inflates it. Read latency of exactly 0ms is consistent with 'no read IOPS in the interval' rather than 'reads are instant', which supports the low-sample interpretation. That said, this cannot be ruled out as an early sign of real storage degradation — write IOPS, queue depth, burst balance, and disk throughput are not present in this payload, so their state is unknown and must not be assumed healthy. The key discriminator is whether this latency persists or repeats once real write traffic arrives; a single breach during an idle window is weak evidence of a problem, whereas the same latency under load would be a genuine incident affecting registration, application submission, and stage-transition writes.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 101.4ms
What this likely means
A write-latency threshold breach (101.4ms vs 100ms) on the RDS instance during what appears to be an idle period. Almost certainly no current user impact, and likely a metric artefact rather than a real storage problem. Corroborating evidence: RDS CPU is 4%, only 9 connections, 1053MB freeable memory, and read latency is 0ms. The API is reachable (200, 37ms), ALB-observed API latency is 13.4ms across 3 healthy hosts, no 4xx/5xx, and ECS is at 2% CPU / 17% memory with 3/3 tasks running. Activity shows 0 staff and 0 talents in the last 5 minutes, 0 registrations, 0 applications, 0 email failures, and only 4 API requests in the window (likely health checks). Web traffic is 0 requests with response time unavailable (no_data) — unknown, not healthy. The most likely mechanism: RDS read/write latency is reported as total latency divided by number of IOPS, so at near-zero write volume a handful of slow or large I/O operations (e.g. a checkpoint flush, autovacuum, a WAL/backup write, or an EBS burst-credit hiccup) produces a very high per-operation average. This is a classic low-denominator artefact. A read latency of exactly 0ms alongside 101ms writes is consistent with that reading — essentially no read I/O happened, so nothing is corroborating a genuine volume-wide storage slowdown. Less likely but worth ruling out: real EBS degradation, exhausted gp2 burst balance or gp3 IOPS/throughput limit, or an automated backup/snapshot window overlapping this timestamp. Those would show sustained elevation and would matter once real write traffic returns. Note that disk queue depth, EBS burst balance, and write IOPS/throughput are not present in this snapshot — treat them as unknown. For users: no observable degradation right now. There is no evidence of failed registrations, applications, or stage-transition emails. The genuine risk is that this is an early signal of storage constraint that would surface as slow application submissions and stage transitions under load.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 123.5ms
What this likely means
RDS write latency is 123.5ms against a 100ms threshold, but every corroborating signal says the platform is idle and healthy. Traffic is 4 API requests in the window, 0 web requests, 0 staff and 0 talents active in the last 5 minutes, 9 DB connections, RDS CPU at 4%, ECS CPU 2% / memory 17%, all 3 tasks running and healthy, API responding 200 in 31ms (ALB-observed 12.1ms), no 4xx/5xx, and no registration, application or email failures. Read latency is reported as 0ms, which is what you'd expect when there are essentially no read IOs in the interval rather than evidence of fast reads. The most likely reading: with almost no write IO happening, the per-operation average is computed over a tiny denominator, so one slow or unusual write (a checkpoint flush, autovacuum, a WAL/backup-related IO, or an EBS burst-credit / volume-level latency blip) dominates the average and produces a misleadingly large number. This is a classic low-traffic metric artefact, not a user-visible incident — no user was on the platform to be affected, and no workflow failed. The alternative, which the data cannot rule out, is genuine storage-layer degradation (EBS gp2/gp3 throughput or burst exhaustion, an ongoing snapshot/backup, or a maintenance operation) that simply has not been exercised by real load yet; that would become visible as soon as write traffic returns. Note that write IOPS/throughput, queue depth, burst balance, and any maintenance/backup schedule are not present in this payload, so they are unknown, not healthy.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 107.5ms
What this likely means
A single RDS write-latency sample of 107.5ms crossed the 100ms threshold, but essentially nothing else on the platform is under stress, and there is almost no load to be affected. Corroboration: RDS CPU 4.2%, only 9 connections, 1044MB freeable memory, read latency 0ms; ECS at 1.9% CPU / 15% memory with 3/3 tasks running; API healthy (200, 45ms probe, 19.2ms average over just 4 requests, zero 4xx/5xx); 3 healthy hosts on both target groups. Activity in the last 5 minutes is zero staff and zero talents, zero registrations, zero applications, zero email failures. Read latency of exactly 0ms alongside a non-zero write latency is typical of a near-idle database: the metric is an average per-I/O figure, so with only a handful of writes (likely just autovacuum, WAL/checkpoint flushes, or a log/backup task) one slow flush dominates the average. This is most likely benign low-sample-count noise rather than a storage problem, and no user is currently experiencing anything — web traffic is zero and the frontend response time is unavailable (no_data), so frontend latency is unknown, not healthy. The residual risk worth ruling out: if this is real storage degradation (EBS burst-balance exhaustion, gp2 IOPS starvation, or an underlying volume issue), it would stay invisible while idle and then surface as slow writes on registrations, application submissions, and stage transitions once traffic returns. Note also that disk free space, IOPS/throughput, burst balance, queue depth, and any background job or email-queue health are not present in this snapshot and should be treated as unknown.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 178ms
What this likely means
Write latency of 178ms on the RDS volume is the only abnormal signal; everything around it looks idle and healthy. API is up (200, 39ms), ALB p50 is 14.6ms across 5 requests in the window, no 4xx/5xx, 3/3 ECS tasks healthy with CPU at 2% and memory at 15%, RDS CPU at 4% with 9 connections and 1043MB freeable memory. Read latency is 0ms and there were zero registrations, applications, staff or talent sessions in the 5-minute window. That combination is most consistent with a low-volume measurement artefact rather than a user-facing problem: WriteLatency is an average per-write figure, so when only a handful of writes occur in the interval, a single slow or cold I/O (e.g. an EBS burst-credit stall, a checkpoint/WAL flush, an autovacuum write, a backup snapshot, or first-touch of cold gp2/gp3 blocks) dominates the average and produces a large number with no real throughput behind it. No user is currently observed to be affected — there is no traffic and no failed workflow to correlate with the latency. The risk to weigh is the alternative reading: genuine storage degradation that is only visible now because there is no load masking it, which would surface as slow stage transitions, slow application submits and email-triggering writes once traffic returns. The metrics present cannot distinguish these two on their own; disk queue depth, IOPS/throughput, burst balance and DB-side query timings are not in this payload and should be treated as unknown, not healthy.
Suggested checks
Suggestions only — this system has no ability to act on them.
Read 0ms, write 107.4ms
What this likely means
RDS write latency of 107.4ms crossed the 100ms threshold, but essentially every corroborating signal is idle or healthy, so this is most likely a low-traffic measurement artefact rather than a live user-facing problem. Evidence: read latency is 0ms, RDS CPU is 4.5%, only 9 connections, 1046MB freeable memory; ECS is at 1.8% CPU / 14.9% memory with 3/3 tasks running; the API answered the health probe in 34ms and the ALB saw only 5 requests at 13.9ms average with zero 4xx/5xx; zero staff and zero talents active in the last 5 minutes; zero registrations, applications, or email failures. At ~08:34 UTC with no user activity, CloudWatch's WriteLatency is an average over a very small number of write IOPS, so a single slow or cold-cache write (or a background task such as autovacuum, checkpoint, a backup snapshot, or log flush) can dominate the average and produce a large number that says little about throughput. Note what is NOT known: there is no instrumentation here for disk queue depth, write IOPS/throughput, burst balance, EBS credits, or per-query timings, so the underlying cause cannot be confirmed from this payload, and web responseMs is unavailable (no_data) rather than zero. Practical impact right now: no evidence any user was affected — no failed workflows, no errors, no latency in the API path. The genuine risk to rule out is a storage-level degradation (exhausted gp2/gp3 burst credits, an EBS volume issue, or a backup/maintenance window) that would become user-visible once traffic returns during business hours.
Suggested checks
Suggestions only — this system has no ability to act on them.