Contract Engagement
PostDovo
Backend engineering for an AI social content pipeline
Turns a website, product or topic into ready-to-publish social posts - AI-generated captions, images and hashtags across 11 platforms, scheduled and published after approval.
- Laravel
- OpenAI
- AWS Lambda
- S3
- MySQL
The problem
Generating a month of platform-specific content and publishing it on schedule across 11 platforms needed more than a single generate-and-post call.
Business challenge
Run AI generation, human approval and scheduled multi-platform publishing as one reliable pipeline instead of three disconnected steps.
Research
Mapped posting requirements and formats across all 11 target platforms to define what the generation pipeline actually needed to produce per platform.
Planning
Split the system into a generation pipeline, an approval queue and a scheduling and publishing service, so a stalled approval never blocks generation and a platform outage never blocks the others.
Architecture
- Laravel backend exposing campaign, scheduling and publishing APIs
- AWS Lambda functions running AI generation and per-platform publish jobs asynchronously
- OpenAI-driven generation pipeline for captions, hooks, hashtags and images
- S3 storage for generated images and campaign assets
Database design
MySQL for campaigns, generated posts and their approval state, with per-platform publish jobs modelled separately so one campaign can fan out to 11 platform-specific jobs without duplicating content.
API flow
- 1 Campaign request hits the Laravel API and triggers an AWS Lambda generation job
- 2 Lambda calls OpenAI to generate platform-specific captions, hooks, hashtags and images, storing assets in S3
- 3 Generated posts enter the approval queue for review
- 4 Approved posts are scheduled and published per platform through dedicated publishing adapters
Implementation
- Moved AI generation into AWS Lambda so a slow OpenAI call never blocks the main Laravel request cycle
- Built the approval queue as a hard gate before any publish job could be created
- Made each platform publishing adapter independently retryable so one platform API issue does not block the rest
- Stored generated images and assets in S3, referenced by URL from MySQL
Key features
- AI-generated 30-day content campaigns per platform
- Approval queue before any post publishes
- Scheduled publishing across 11 platforms
- Async AI generation through AWS Lambda
Performance
- Per-platform publishing adapters isolate failures instead of blocking the whole campaign
- Offloading generation to Lambda kept the API responsive under long OpenAI calls
Lessons learned
- Offloading AI generation to Lambda keeps the API responsive even when a model call runs long.
- Eleven platforms means eleven failure modes - isolate them or one outage takes down the whole campaign.