Skip to content

User feedback: inline links dropped, AcroForm false positive, tables not reflowing, 50-page limit needs clearer upfront messaging #113

Description

@dylan-isaac

Summary

User feedback from testing four complex financial PDFs (T. Rowe Price). Overall reception was very positive — merged headings, reading order, and complex financial tables handled well. Four issues surfaced across the four test documents.

"I used to work in the finance industry and we had complex PDFs with links, multi columns, complex headings (you name it, we had it) … it did a really great job of handling merged headings, reading order, and complex financial tables. This is AMAZING!"

Issues reported

1. Inline links dropped from markdown output (bug)

Test PDF: https://www.troweprice.com/content/dam/trp-ecl/global/en/ipc/assets/trpis-trpa/2026/q2/is-it-smart-to-keep-money-invested-in-equities-during-market-volatility/is-it-smart-to-keep-money-invested-in-equities-during-market-volatility.pdf

Embedded inline hyperlinks in the source PDF are not carried through into the output markdown. Expected [text](url) style links; got plain text.

Suspected area: Docling extraction phase (_step_* for extraction in src/services/pipeline_viewer.py) — need to confirm whether Docling preserves link annotations and, if so, where they're being lost downstream.

2. AcroForm false positive blocks PDFs that only contain embedded links (bug)

Test PDF: https://www.troweprice.com/content/dam/public/enterprise/insights/pdfs/2026/retirement-market-outlook.pdf

Rejected at submission with:

PDF contains 66 interactive form field(s) (AcroForm). Form content cannot be reliably extracted. Please flatten the form or export as a standard PDF.

User confirms the PDF has no forms — only embedded links. The classifier appears to be counting link annotations (or some other widget) as AcroForm fields.

Suspected area: src/services/pdf_classifier.py AcroForm detection. Likely needs to filter annotation types (e.g. ignore /Link annotations) before counting form fields.

3. Tables on page 12 not reflowing as markdown tables (bug)

Test PDF: https://investors.troweprice.com/static-files/a772cd0c-8940-4b3b-a819-62813d689a4c

Most of the document reflowed cleanly, but specific tables on page 12 came through as unstructured text instead of markdown tables. Everything else (including other tables in the same doc) reflowed correctly, so this is an edge case in table reconstruction rather than a general failure.

Suspected area: Table reconstruction subagent invoked from the page content corrections phase (_step_* in src/services/pipeline_viewer.py, src/agents/table_reconstruction.py). Worth pulling page 12 as a fixture and inspecting agent input/output via the ledger endpoint.

4. 50-page limit should be surfaced upfront (docs/UX)

Test PDF: https://investors.troweprice.com/static-files/49ef20a8-2607-4f27-8023-ca6ae069f5e2

User hit the 50-page cap at upload time. Feedback: the limit itself is fine, but users should see it before attempting to upload.

Decision: We are not increasing the 50-page limit. Scope of this issue is to make the limit clearly visible in the viewer upload UI (e.g. in helper text near the file input and/or in the docs), so users know the constraint before they try.

Suggested scope

Four separate fixes — could ship as one PR or split. The docs/UX change (#4) is independent of the three bugs and can land first.

Test plan

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions