Inspiration
Mall marketing is stuck in the past. A general manager who wants to run a simple tenant promotion has to manually check inventory reports, guess which tenants need a boost, brief a designer, wait for creatives, get approvals over email, and coordinate with a screen vendor. What should take minutes takes weeks — and by then the moment has passed. We asked: what if an AI agent could handle the entire pipeline, from reading today's signals to deploying ads on screens, in minutes?
What it does
PULSE is an autonomous AI campaign engine for brick-and-mortar malls. A GM picks a date and time, and the system takes over:
- Signal Agent gathers real-time context — weather, calendar events, payday spending curves, and tenant inventory/sales data from Square POS via Fivetran and BigQuery
- Campaign Agent feeds all signals to Gemini 2.5 Pro, which analyzes 25 tenants and ranks the top 5 who would benefit most from a campaign — with full reasoning
- GM reviews and approves the tenant selection (Approval Gate 1)
- Creative Agent pulls each tenant's product data from Square POS and generates personalized ad creatives using Imagen 3, composited with the tenant's logo
- GM previews every creative and its screen placement (Approval Gate 2)
- Delivery Agent deploys creatives to assigned mall screens, triggers a TTS announcement, and sends loyalty notifications
- Performance Agent logs the campaign run to BigQuery for revenue tracking
The entire flow is visualized in a 3D spatial view of the mall — the GM can see exactly which screens are showing which creatives and where they are in the building.
How we built it
- Orchestration: A Python-based multi-agent orchestrator coordinating 5 specialized agents (Signal, Campaign, Creative, Delivery, Performance) with WebSocket streaming to a real-time dashboard
- AI Reasoning: Gemini 2.5 Pro for tenant analysis and campaign strategy, Gemini 2.5 Flash for fast signal processing
- Creative Generation: Imagen 3 for generating personalized ad creatives from product descriptions, with automated logo compositing via Pillow
- Data Pipeline: Fivetran connectors syncing Square POS data into BigQuery — inventory levels, product catalogs, and sales data
- Frontend: BabylonJS-powered 3D mall visualization with dynamic ad screen textures, real-time SSE/WebSocket dashboard, and dual GM approval gates
- Deployment: Cloud Run with Cloud Build, session affinity for WebSocket support
Challenges we ran into
- Real-time orchestration: Coordinating 5 agents with streaming updates to the frontend while maintaining two human approval gates required careful state management across WebSocket connections
- Creative pipeline reliability: Imagen 3 API quota limits meant we needed graceful fallbacks — premade creatives that activate seamlessly when generation fails, so the demo never breaks
- Data pipeline timing: Fivetran sync cycles don't align perfectly with real-time campaign triggers — we had to design the system to work with the latest available data snapshot rather than waiting for a fresh sync
- Deployment on Cloud Run: WebSocket connections, static asset serving, and long-running agent pipelines all needed careful configuration (session affinity, timeouts, IAM permissions for BigQuery)
What we learned
- The power of keeping a human in the loop — the dual approval gate design means AI does the heavy lifting but the GM stays in control, which is critical for real-world adoption
- Designing for failure — every API call (Imagen, Gemini, BigQuery, weather) can fail, so building graceful fallbacks at every step was essential
- Multi-agent architectures work best when agents have clear, narrow responsibilities with structured handoffs between them
What's next for PULSE
- Pre-planned campaign scheduling — using the same signal pipeline to prepare campaigns around known events like Black Friday, seasonal sales, or local holidays
- Multi-mall support — extending the platform to manage campaigns across a portfolio of malls from a single dashboard
- Deeper product intelligence — ranking products within each tenant's catalog to automatically feature the optimal item for each campaign
Built With
- babylonjs
- bigquery
- cloudrun
- fastapi
- fivetran
- imagen
- javascript
- pillow
- python
- server-sent
- square
- websockets
Log in or sign up for Devpost to join the conversation.