An automated newsletter summarization and distribution system designed for parish communities. It parses weekly publications, extracts liturgical calendar details, standardizes naming structures, and schedules email deliveries—supported by an interactive Admin Console with Google Contacts syncing and validation override workflows.
Renders a public archive feed, subscriber signup portals, and a locked down Admin Console with validation audit tables, editable metadata modals, and subscriber directory sync.
Manages uploads, coordinates prompt generation, interfaces with database schemas, logs ingestion stack traces, and proxies PDF download files directly from secure storage.
Maintains transactional records, delivery outcomes, and subscriber tables on Neon Serverless Postgres. Stores compressed assets and thumbnails in Cloudflare R2 / Google Drive.
AI extracts target Sunday date that mismatch next Sunday criteria. File is locked under the "failed_validation" status for audit log review.
Admin overrides metadata errors using the correction modal, choosing to either "Schedule Email Delivery" or mark as "Archive Only".
Cron triggers the asynchronous delivery worker. Scheduled newsletters are emailed to active subscribers, creating tracking logs in Postgres.
| PIPELINE STAGE | TECHNOLOGY | ARCHITECTURE ROLE |
|---|---|---|
| PDF Extraction & Compression | PyMuPDF & PDF Compressor | Standardizes and shrinks multi-megabyte church bulletins down to web-optimized sizes for fast loading. |
| Dual LLM Routing | Groq (Llama 3.1) & Local Llama 3.1 | Intelligently routes requests to Groq Cloud APIs and delegates bulk historical cataloging to local Ollama nodes to prevent API rate limiting. |
| Validation Audit Logs | Upload Auditor | Records all manual and batch imports, capturing stack traces and LLM parsing errors to display in the Admin Console. |
| Google Contacts Sync | Subscribers Sync Engine | Parses Gmail CSV contact structures, mapping and updating subscriber names, emails, and phone numbers in Postgres. |