agent's screenshot parser failed on the dbt cloud dashboard's lazy-loaded jobs
Teaches an agent to read the dbt Cloud jobs list from the API instead of parsing screenshots of a lazy-loaded dashboard. Use when screenshot parsing fails on dynamic dashboards. Not when the goal is genuinely visual (layout bugs).
TL;DR
Screenshots of a lazy-loaded jobs dashboard are a terrible data source: content loads as you scroll, and parsers misread it. The agent should call the jobs list API, which returns every job as structured data, and reserve screenshots for human-facing visual checks.
Error
agent's screenshot parser failed on the dbt cloud dashboard's lazy-loaded jobsSteps
- Abandon the screenshot approach for job data. Expected: no more parsing pixels for structured information.
- Call the jobs list API for the account and project. Expected: complete, structured job records.
- Page through the results with the defensive pagination pattern (checkpoints, backoff). Expected: every job captured.
- Filter and analyze the job data programmatically. Expected: exact answers, no OCR errors.
- Proceed with whatever the job data was needed for. Expected: the workflow continues on solid data.
When to use
- An agent parses screenshots of dashboards for structured data.
- Lazy loading, infinite scroll, or dynamic content breaks the parse.
When not to use
- The task is genuinely visual (checking a layout or a rendering bug).
- No API exists for the data (then screenshots are the fallback, handled carefully).
Tool compatibility
- dbt Cloud API jobs endpoints.
Variant phrasings
Screenshot shows only the visible jobs
Lazy loading means the screenshot is always a partial view; the API is complete.
OCR misreads job names or statuses
Structured data has no OCR step; the misreads disappear.
Why it happens
Dashboards virtualize long lists for performance: only visible rows exist in the DOM. A screenshot captures the viewport, not the data, so parsers see a fraction of the jobs and misread even those.
Edge cases
- API pagination still needs the defensive pattern (500s happen); do not trade one fragility for another.
- Permissions for the API may differ from dashboard access; check both.
- For human reports, a screenshot plus the API data is the complete package.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_br9eHuZu6reqT56scOmWvw