{"id":"data2-quality-alert-json-tracking-drop","audience":"analysts","category":"data","track":"data","technique":"format","level":"intermediate","title":"Write a data quality alert as a JSON block","free":false,"task":"Your monitoring tool takes data quality alerts as JSON. Write one JSON block (a single code block) with exactly these keys: severity, metric, observed, expected, drop_pct, likely_cause, confirmed, owner and next_check. severity is written in capitals (HIGH when the drop is more than 50%), next_check is an ISO datetime like 2025-11-05T09:00, drop_pct is a positive number with one decimal, and confirmed is true or false. At most 12 words outside the code.","materialLabel":"Incident notes (attached to your prompt automatically)","material":"Data monitoring - Tuesday Nov 4 (Orbit Shop)\n\nMetric: checkout_completed events per day.\nYesterday (Monday): 310 events.\nUsual Monday volume: 1,200 events.\n\nWhat we know:\n- Mobile SDK version 5.3.0 was released at 2:00 pm Monday.\n- Android checkouts are about 70% of all checkouts, and Android events look missing after 2:00 pm; iOS looks normal.\n- The mobile data engineer, Ines Park, has been asked to confirm but has not replied yet. So the cause is a suspicion, not confirmed.\n- Actual orders in the payments system look normal, so customers are checking out fine; only the tracking is affected.\n\nPlan:\n- Owner: Ines Park (mobile data engineering).\n- Next check: re-count Wednesday Nov 5 at 9:00 am after a hotfix is expected.\n- Severity levels the tool accepts: low, medium, high.\n\nFormatting: numbers as numbers (not strings); booleans as true/false.","rules":[{"type":"codeBlocks","count":1},{"type":"maxProseWords","max":12}],"mistakes":[{"title":"Claiming the cause is confirmed","why":"The AI sets confirmed to true because the SDK story sounds right.","fix":"Add: \"confirmed: false; the cause is a suspicion.\"","checks":["r0"]},{"title":"Wrong or string numbers","why":"The AI writes \"74%\" as a string or computes a different drop.","fix":"Add: \"drop_pct = (1200 - 310) / 1200 x 100 = 74.2 as a number.\"","checks":["r1"]},{"title":"Extra or renamed keys","why":"The AI adds keys like description and timestamps.","fix":"Add: \"Exactly these keys: severity, metric, observed, expected, drop_pct, likely_cause, confirmed, owner, next_check.\"","checks":["r2"]},{"title":"Leaving the format to chance","why":"The AI picks its own length and layout unless told the exact shape.","fix":"Add: \"Put the code in exactly 1 code block. Keep the writing outside the code under 12 words.\"","checks":["codeBlocks","maxProseWords"]}],"promptHints":[{"label":"Lists the keys","patterns":["drop_pct","likely_cause","next_check"]},{"label":"Gives the drop math","patterns":["1,?200 ?- ?310","74\\.2"]},{"label":"Sets confirmed false","patterns":["confirmed: ?false","not confirmed"]},{"label":"Asks for typed values","patterns":["as a number","numbers"]},{"label":"Limits outside text","patterns":["one (short )?sentence","\\d+ words","code block"]}],"hint":"Alerts need exact keys, typed values and honesty about what's confirmed.","mission":"Write a data quality alert as JSON.","musts":["Exact nine keys","Typed values and drop_pct","Cause not confirmed"],"rubricLabels":["The JSON has exactly the nine keys severity, metric, observed, expected, drop_pct, likely_cause, confirmed, owner and next_check, with observed 310 and expected 1200 as numbers","severity is \"HIGH\" (capitals), drop_pct is 74.2 as a number ((1,200 - 310) / 1,200 = 74.2%), and next_check is \"2025-11-05T09:00\"","likely_cause points to the Android tracking in SDK 5.3.0 released Monday 2:00 pm, confirmed is false, and owner is Ines Park"]}