Splitting it into an ingestion workflow and a question-answering workflow is a good way to explain it, since most bugs end up living in the first one. A practical tip for the chunking step: store the source page number and section heading as metadata with each chunk, so the answer can cite where it came from and you can tell at a glance whether a bad answer came from retrieval or from the LLM. Which chunk size and overlap did you end up using for PDFs with tables?