📝 Overview
This guide explains how SecureDynamics uses Make.com and a Python-based rendering service to dynamically generate and deliver professional quotes and invoices based on PDF uploads and automated workflows. It automates the entire document transformation process: from uploaded PDF → JSON → rendered HTML → downloadable PDF.
⚙️ Architecture Summary
Component | Function |
---|---|
Google Drive: Quote Processing | Input folder where Zscaler invoice PDFs are uploaded |
Make.com | Orchestrates end-to-end process |
PDF.co AI Parser | Parses uploaded PDF invoices into structured JSON |
Flask API: /render-invoice |
Converts JSON into styled HTML invoice using Jinja2 |
PDF Generator | Converts HTML to downloadable/email-ready PDF |
Google Drive: Ready for Mike | Final PDF output folder for ready-to-use quotes |
🔄 Trigger Options
-
Drive Watcher Trigger via Make.com
-
Monitors a shared folder named
Quote Processing
🔍 Data Extracted from Invoice
Using PDF.co AI Parser module, Make extracts:
Field Name | Description |
Invoice Number | Unique reference number |
Company Name | Extracted from header or bill-to block |
Line Items | Array of services/products |
Subtotal/Tax/Total | Financial summary section |
Payment Terms | Net30, Net45, etc. |
This is further normalized via Make.com and passed to the rendering API.
📅 Step-by-Step Workflow
1. 📂 PDF Upload to Google Drive
-
User drops a Zscaler invoice PDF into the
Quote Processing
folder (shared Drive) -
Make.com scenario is triggered automatically
2. ✏️ Parse with PDF.co AI Parser
-
Extracts invoice fields as structured JSON
-
Handles multiple formats via AI model
3. 🤖 Normalize & Transform
-
JSON is normalized using Make.com mapping modules
-
Structured payload sent to rendering endpoint
4. 🌐 HTML Rendering via /render-invoice
-
The Flask service receives the parsed and normalized payload
-
It validates the structure, injects values into an HTML template, and returns the rendered HTML
5. 📄 PDF Generation & Storage
-
HTML is passed to PDF.co for rendering
-
Final PDF is saved to the
Ready for Mike
folder in Google Drive -
Original uploaded PDF is deleted from
Quote Processing
as part of cleanup
🛑 Troubleshooting
Issue | Resolution |
Blank HTML output | Check for missing template variables |
500 error from Flask API | Ensure payload is valid JSON and template exists |
Skipped invoices in Make.com | Confirm file type and folder permissions |
PDF not stored | Check PDF.co response or Drive permissions |
💼 Best Practices
-
Keep invoice template minimal and consistent
-
Use structured mapping to ensure data accuracy
-
Include default values to prevent missing fields
-
Monitor errors in PDF.co or
/render-invoice
responses -
Always remove original upload file to avoid reprocessing
👍 Summary
Step | Description |
1 | PDF uploaded to Quote Processing folder |
2 | Invoice parsed and normalized |
3 | Payload sent to Flask API |
4 | HTML rendered and returned |
5 | PDF saved to Ready for Mike folder |