Survive a Messy Transcript

validation, repair, edge cases

Part of: Meeting Notes to Action Items

Your extractor works on a clean transcript. Now hand it a real one: someone pastes a Slack thread, half the "action items" are actually just comments, one item has an empty task because the model got confused, and the meeting had no action items at all. A tool ships only when it handles this gracefully instead of crashing or emitting garbage. That's the "harden" step every project has. Three failures to expect 1. Empty or junk items. The model sometimes returns an item with a blank task, a leftover from an ambiguous sentence. An action item with no task is not an action item; drop it. 2. Missing fields. Owner or due comes back blank. You already know the fix: default them to "Unassigned" and "No deadline" so the report is still complete. 3. No action items at all. A pure status meeting yields an empty list. The tool should say "No action items found", not throw. One cleaning pass Fold all three into a single function that takes the raw parsed items and returns only the trustworthy ones, repaired: The (it.get("task") or "") guard is doing double duty: .get handles a missing key by returning None, and or "" turns that None into a string so .strip() never crashes. This is the defensiv

Challenge: Clean the Raw Items