Skip to content

[Ingestion]: Word-processing long tail — RTF and ODT #126

Description

@inherent-prime

Problem

RTF and OpenDocument Text are common exports (macOS TextEdit, LibreOffice, legal tooling); both are rejected today, and legacy .doc fails with a generic error.

Proposed contract

  • RTF: application/rtf + text/rtf alias, .rtf. Parser: striprtf (tiny pure-Python dep).
  • ODT: application/vnd.oasis.opendocument.text, .odt. Parser: stdlib zipfile + content.xml through the XML tag-strip path — no odfpy needed.
  • Legacy .doc (application/msword): explicit 400 with "convert to .docx" message — never accept-then-garble.
  • Surface: REST-only. Degradation: hard_fail.

Acceptance criteria

  • Fixtures sample.rtf / sample.odt with headings and lists; non-empty extraction with no control words or markup residue — test-pinned.
  • .doc upload → 400 with actionable message, test-pinned.
  • Docs and CHANGELOG updated.

Depends on #117.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions