NFR-1: Latency
- Cached descriptions: instant (≤ 50ms from cache read to client
response)
- Fresh descriptions: ≤ 15 seconds end-to-end (image retrieval + API
call + response parsing)
- The client must not block waiting for descriptions — messages load
immediately, and description bubbles appear asynchronously when
ready
- If a description is pending, show a placeholder bubble: “[Describing
image…]” with a subtle animation (e.g., pulsing dot)