A production-grade serverless architecture connecting multiple SaaS systems into a unified, real-time business intelligence solution.
Critical recipe data locked in disconnected systems with no automated path to reporting
Maven Meals' recipe data originates from a separate ordering system where staff manually enter information into Galley Solutions, their catering management platform. Galley holds the detailed recipe specifications, ingredients, and packaging requirements - but getting that data out for business reporting was the problem.
Recipe data hand-entered into Galley from external ordering system - no direct integration
Galley holds 2,900+ recipes with 160+ fields each - but no API access initially available
Commerce platform with DynamoDB streaming real-time orders needing recipe correlation
Business needed unified insights across orders, recipes, and packaging - no path existed
From scrappy problem-solving to elegant architecture
With no API access to Galley, the only way to extract recipe data was through printed PDF packaging guides. Staff would export PDFs from Galley and save them to Google Drive - a tedious, error-prone process that couldn't scale.
We built an automated PDF parsing solution - Lambda functions that monitor Google Drive, download new PDFs, parse structured content, detect changes via content hashing, and load data into PostgreSQL. Not elegant, but it worked.
Working with Galley's team, we developed a proper API integration using
their GraphQL endpoint. This unlocked access to all 160+ recipe fields, real-time sync,
and even a custom deletedAt filter they added at our request for reliable
deletion tracking.
Sometimes the "right" solution isn't available yet. Building a working solution with available tools - even if imperfect - demonstrates value and often opens doors to better approaches. The PDF parsing pipeline proved the ROI that justified investing in proper API integration.
Event-driven serverless architecture with real-time data pipelines
Orders from the commerce platform flow through DynamoDB Streams for real-time capture. A Lambda function processes each change event, normalizes data across 110+ attributes, and writes to PostgreSQL for unified querying.
A two-Lambda architecture fetches recipe data from Galley's GraphQL API and synchronizes to PostgreSQL. This design maintains database isolation while enabling external API access without expensive NAT Gateway costs.
deletedAt filter developed with Galley teamPDF packaging guides from Google Drive are mirrored to S3, parsed by Lambda, and loaded into PostgreSQL. Business users generate formatted Google Sheets reports on demand via a web interface with automatic change detection.
A Tampermonkey userscript adds functionality to the Galley web interface, allowing users to create recipes directly from ingredient pages with a single click. The extension intercepts SPA navigation and calls a secure API Gateway endpoint.
history.pushStateOptimized serverless architecture at $15/month
Complete audit trail with timestamp tracking for every change
Built with defense-in-depth principles to protect sensitive business data at every step
PostgreSQL database runs in a private VPC subnet with no public internet access. Only authorized Lambda functions within the VPC can connect.
Each Lambda function has a dedicated IAM role with only the specific permissions required for its task. No shared credentials or over-permissioned roles.
All sensitive credentials stored in AWS Secrets Manager with automatic rotation. No hardcoded passwords, API keys, or connection strings in code.
Data encrypted both in transit and at rest. TLS for all API connections, AWS-managed encryption keys for storage, and SSL-only database connections.
Schema validation at every integration point prevents malformed or malicious data from entering the system. Type checking and sanitization before database writes.
Comprehensive logging via CloudWatch captures every data transformation. CloudTrail tracks all AWS API activity for security auditing and compliance.
Every record processed through this pipeline maintains a complete audit trail. Idempotent operations ensure data consistency even during retries or failures. The system reliably processes thousands of records daily with zero data loss since deployment.
Designed two-Lambda architecture to maintain database security while accessing external APIs without expensive NAT Gateway ($32/month savings).
Implemented timestamp-based change detection to minimize API calls and processing time, syncing only modified records.
Consolidated formatting calls to stay within rate limits while maintaining professional output quality for business reports.
Collaborated with Galley's team to add a deletedAt filter to their GraphQL API, enabling reliable deletion detection with actual timestamps.
Browser extension intercepts history.pushState for single-page application compatibility in the Galley interface.
Let's discuss how a custom integration solution can streamline your business operations.
Get in Touch