For the web crawling and scraping part, you can use the HTTP Request node configured for the Firecrawl API or, more directly, the dedicated Firecrawl node within n8n. This will return the raw text content of each page. Firecrawl is also great at automatically identifying and extracting links to files like PDFs and other documents. Firecrawl itself doesn't download the PDFs and attachments. However, you can use an HTTP Request node to download the binary files using the URLs that Firecrawl provides. In terms of data processing and storage, you first need to process the scraped information. I would recommend splitting it into smaller, manageable chunks. You should also filter out any irrelevant noise from the web pages to improve the quality of your data. You'll then need an Embeddings node to convert these text chunks into numerical vectors before storing them in a vector database of your choice. For the LLM Integration (The Q&A Engine), which handles the Q&A part, you'll use a few key nodes. Start with an Embeddings node to convert the user's question into a vector. This vector is then sent to your Vector Database node to perform a similarity search, which retrieves the most relevant text chunks from the corpus you built. These retrieved documents are then passed to an AI Chat Model node along with the original question. This process provides the LLM with the context it needs to generate a specific and accurate answer. An excellent example of this is the "Open Deep Research" workflow template available on n8n.io, which automates deep research by using AI-driven search, web scraping, content evaluation, and iterative refinement.