Source document yielded zero line items
You uploaded a DOCX or PDF; the parser ran but produced no XbrlLineItem rows. XbrlSourceDocument.parseStatus = FAILED.
What this means
The line-item extractor needs textual tables. If it cannot find any, it bails.
Causes (most common first)
- Rasterised PDF — the PDF is essentially a flat image.
pdf-parsereturns no text; table heuristics find nothing. - DOCX without tables — the financial statements are embedded as text paragraphs, not Word tables.
mammothreads the paragraphs but the table extractor produces nothing. - Non-standard section headings — the extractor looks for headings like Statement of Financial Position, Statement of Profit or Loss, Statement of Cash Flows. Headings in another language or non-standard wording miss.
- Encrypted or password-protected file — extractor fails before it begins.
- Source is the wrong document — e.g. a draft management letter, an audit working paper, a SOCE-only file.
Diagnose
sql
SELECT parse_status, page_count, mime_type
FROM xbrl_source_documents WHERE xbrl_filing_id = '<filingId>';If parse_status = FAILED, check the worker logs:
bash
docker logs breezycorp-monorepo-worker-1 2>&1 | grep -A 5 extract-line-items | tail -30Look for the error class: NoTextLayer, NoTablesFound, EncryptedFile, etc.
Fix
- Rasterised PDF: ask the client for the source DOCX (preferred) or a text-extractable PDF (some accounting platforms export both).
- DOCX without tables: ask the client to provide a version with the statements in Word tables, not as flowing text. Or use Pull from FS engagement if the client also uses our FS module.
- Non-standard headings: rare; the extractor's heading-detection is forgiving. If you're hitting this, check the source language and re-export in English where possible.
- Encrypted file: ask the client to remove the password protection.
Cross-product alternative
When the same client has a FsEngagement at NOTES_COMPLETE for the same period, use Pull from FS engagement (Phase 3 path). This skips the DOCX parse entirely.