Canva Connect integration, owned end to end
- Problem
- AI-generated social posts depended on a previous design provider that had to be replaced without breaking the experience for agents.
- Decision
- I built the Canva Connect integration from OAuth through the Autofill API: a payload assembled from agent and MLS listing data, submit and poll, export, and write-back. I then refactored it into a reusable shared Canva driver, later reused for listing flyers and show sheets with PDF export and generated headlines and descriptions.
- Outcome
- Hardening started from root causes: OAuth tokens were collapsing across clients, so I scoped them per client and serialized token refresh across API instances to remove a race. Routing by template capability, recording which renderer ran, and deduplicating retried runs made the pipeline predictable.
- OAuth
- Canva Connect
- Node.js
- Hono
- PostgreSQL


import { AiService } from "./ai.service";