====== AI-Generated PDF Reports from Excel – Workflow Documentation ======
**Status:** Internal guide (v1, English)
**Audience:** All team members who create customer reports with AI support
**Scope:** How to turn an Excel workbook into a professional, presentation-ready PDF report – what to do, what to tell the AI, and how to keep the process fast and reliable.
==== 1. Purpose ====
Instead of manually building PowerPoint/Word reports from Excel data, the AI agent reads the workbook **directly** (all sheets, cell values //and// cell colors) and generates a multi-page A4 PDF with:
* Cover page with key figures
* Executive summary with KPI cards and status chart
* Distribution charts (areas, categories, timelines)
* Complete detail tables for every record in the file
* "Open items & recommended next steps" section
* Page header/footer, consistent company style – ready to send to the customer
The output is saved with **the same name as the Excel file** in a fixed folder: ''/home/user/Documents/generatedpdf/''.
==== 2. Workflow (5 Steps) ====
- **Upload:** Send the Excel file (`.xlsx`) as a chat attachment (or drop it into `Documents/inbox/`).
- **Prompt:** Tell the AI what to build – language, style, output location. See the template in Section 3.
- **Analysis:** The AI reads every sheet and cell, classifies statuses, computes KPIs, builds charts and renders the PDF. //No data is copied by hand – nothing is lost or mistyped.//
- **Delivery:** The finished PDF appears in chat and on disk under its original filename.
- **Review & iterate:** If something must change (wording, color, missing column), say it in one short message – the report is regenerated. //Do not re-upload the file for small fixes.//
Typical total time for a 300+ line workbook: a few minutes.
==== 3. Prompt Template ====
Copy, fill the brackets, paste into a **fresh** chat together with the Excel attachment:
Read the attached Excel file "[FILENAME].xlsx" completely (all sheets, all cells,
including cell colors used as status legend). Then create ONE professional PDF
report in [GERMAN / ENGLISH] for a customer presentation.
Requirements:
- Same filename as the Excel file, saved to /home/user/Documents/generatedpdf/
- Cover page with the 4–5 most important numbers
- Executive summary: KPI cards + one status overview chart
- Charts: distribution by [AREA / CATEGORY / DATE – pick what fits the data]
- Full detail table(s) of ALL rows – do not shorten or sample the data
- Section "Open items & recommended next steps" derived from the status notes
- Clean, modern design (dark blue cover, white content pages), A4
- Keep all original values and notes unchanged; only reformat the presentation
After finishing: show me the PDF in chat.
**Tips for a good prompt**
* Name the output folder and filename rule explicitly (done above).
* State the **target language** – otherwise the AI may mix languages.
* Tell it which columns/words are statuses (e.g. "green = OK, red = open") if colors carry meaning.
* Ask for a specific chart only if you want one – otherwise the AI picks sensible ones.
==== 4. What the PDF Contains ====
* **Cover:** title, key KPIs, report date, document reference.
* **Summary:** KPI cards (totals, OK / fixed / open), status donut chart, 3 key messages.
* **Distribution charts:** e.g. records per area/hall, per category, per date.
* **Detail tables:** every single row of the source file with status badges (✔ fixed / ⏳ pending / ⚠ warning / open).
* **Open items:** each problem with its original note + recommended action, plus a numbered next-steps list.
* **Footer:** document name + page number on every page.
==== 5. IMPORTANT – Context Size & Cleanup (read this!) ====
**The AI chat has a limited memory window ("context").** Everything inside one chat – uploaded files, generated code, rendered pages – counts against it. A full workbook plus its report can consume a large share. Follow these rules:
- **Start a NEW CHAT for every new document.** Do not chain multiple Excel files in one conversation – the old report's data stays in memory, slows everything down, and can degrade quality or break the generation.
- **Delete working files after delivery.** Ask once per chat: *"delete all temporary work files (scripts, images, HTML) from /tmp"*. The finished PDFs in `Documents/generatedpdf/` stay – those are the deliverables.
- **Delete old, unused chats** in the chat list regularly. Finished project chats that you no longer need are safe to remove and free up space for future sessions.
- **Keep iterations short.** One fix = one short message ("fix the typo on page 3"). Do not paste long explanations or screenshots of whole pages – that burns context fast.
- **If a chat gets very long or starts acting strange:** start a new chat, re-upload the Excel file (it arrives fresh), and paste the same prompt from Section 3. //The report is rebuilt from the file, not from the old chat – nothing is lost.//
- **One document per chat** keeps every run fast and identical in quality.
==== 6. Tips for Best Results ====
* **Clean Excel = clean report.** One sheet per topic, meaningful column headers, one value per cell.
* **Use a color legend row** (as we do in our status sheets) – the AI reads cell fills and can reproduce your color coding in the PDF.
* **Write statuses clearly**, e.g. "fixed on 22.07.2026", "open – waiting for electrician" – the AI turns these into badges, timelines and the open-items section automatically.
* **Contradictory entries** (e.g. a note saying "missing" but status saying "present") are flagged in the report as "to verify on site" instead of being guessed – tell the customer which ones to check.
* **Small changes after delivery:** just describe them in one line; the AI regenerates the PDF in under a minute without re-reading everything.
==== 7. Technical Appendix ====
^ Component ^ Used for ^
| Python 3 + //openpyxl// | Reading `.xlsx` values, formulas (cached results) and **cell colors** |
| //matplotlib// | All charts (donut, bar charts), exported as high-resolution PNG |
| //WeasyPrint// | Renders the styled HTML/CSS layout to an A4 PDF with headers/footers/page breaks |
| //pdftoppm// | Page previews for the AI's own quality check before delivery |
**Pipeline:** Excel → parsed into structured data (JSON) → statistics & KPIs computed → chart PNGs generated → single styled HTML document → PDF rendered to ''/home/user/Documents/generatedpdf/''.
**File locations**
* Uploads: chat attachment, or `Documents/inbox/`
* Deliverables: `Documents/generatedpdf/.pdf`
* Temporary work (deleted after delivery): `/tmp` (scripts, chart images, HTML)
**Example commands used internally** (for IT reference):
# inspect a workbook
python3 -c "import openpyxl; wb=openpyxl.load_workbook('file.xlsx'); print(wb.sheetnames)"
# render HTML to A4 PDF
python3 -c "from weasyprint import HTML; HTML('report.html').write_pdf('out.pdf')"
# generate page previews for visual QA
pdftoppm -png -r 80 out.pdf preview
----
**Summary in one line:** upload the Excel, paste the prompt from Section 3 into a //fresh// chat, review the PDF that appears – then clean up and close the chat. One document per chat, always.