📄 SecureDynamics Quote & Invoice Builder — User Guide

📝 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