burr1to.

~/work/youanai

YouanAI

YouanAI cover

Live productNov 2025 to PresentYouanAI Technologies · Remote

YouanAIAI-Powered Digital Marketing Platform

An AI assistant that proposes changes and waits for a person to say yes.

Production marketing platform where Lisa, the in-product agent, drafts, edits, schedules, and publishes content across a team’s social accounts, with an image editor, video tools, and background jobs underneath.

The product is public. The code is private, so the case study stays at the architecture level.

What I built

  • Built much of Lisa, the platform assistant: an agent loop over 144 product tools that drafts posts, edits images and video, and schedules content
  • Approval flow for agent actions: Lisa proposes a change, the user reviews a before and after diff of the text and media, and the run resumes only after a decision
  • Searchable, resumable thread history, so a conversation with a pending decision can be found and picked up later
  • Agent runtime first built on Mastra (Feb to Jul 2026), then migrated with the team to the Vercel AI SDK
  • Started the agent-chat, workspace-knowledge, and home-feed background queues on BullMQ
  • Redis cache for LLM-generated home-feed responses, keyed per team and model and cleared when new posts land
  • Browser image editor on Fabric.js with layers, grouping, undo history, and sessions saved locally in IndexedDB through Dexie
  • Contributed to Website Buddy, an AI concierge that answers site visitors from crawled and uploaded sources, and built the custom TikTok OAuth provider with multiple accounts per user

Stack

  • Next.js
  • TypeScript
  • React
  • Vercel AI SDK
  • Mastra
  • BullMQ
  • Redis
  • Prisma
  • PostgreSQL
  • Fabric.js
  • Dexie.js

Case study

The problem

Lisa can publish to a customer’s social accounts, rewrite their brand profile, and change their images. An assistant that does those things on its own is a liability, and one that asks in a chat bubble is easy to approve by accident. Agent actions had to stop, show exactly what would change, and carry on from the same point once a person decided.

What I built

  • Proposal cards for nine kinds of change, from post, image, and video edits to brand-profile patches and questions, each with approve and reject
  • A before and after diff for text and media, so a change is read rather than guessed at
  • One approval switch for every social-publishing tool, plus questions where Lisa offers options and waits for a pick
  • Searchable thread history, so a conversation waiting on a decision can be found and resumed

How one agent action moves through it

  1. 01ProposeLisa calls a tool that needs approval
  2. 02PauseThe run stops and keeps the pending call
  3. 03ReviewA card shows the before and after diff
  4. 04DecideApprove, reject, or pick an option
  5. 05ResumeA queued job continues the same run

What was hard

Showing the change, not describing it

The agent’s own summary of a change is not something to approve on. The card diffs the before and after text line by line with a longest-common-subsequence pass, marks added and removed lines, and lists media that would be added or removed, so a rewritten caption or a swapped image is visible before anything is applied.

One switch for every risky tool

Publishing tools are not trusted to opt in one by one. Anything on the approval list is wrapped in one place before the agent sees it. Questions to the user ride the same pause and resume path, so a question still waits for an answer even when a team turns publishing approvals off.

Resuming exactly once

A decision becomes a queued job whose id is built from the run, the approval, a sequence number, and the decision, so a double click or a retried request cannot start the run twice. The worker claims the approval and the run together in a Serializable transaction and backs off when two workers race. I built this path with a teammate, who owns the outbox that re-sends missed resumes.

Finding the conversation again

Pending decisions live in threads, so threads have to be easy to find. Search ranks exact and prefix title matches above phrase and word hits in the title and last message, and matches thread ids directly. Threads cached on the device are merged with the server list, so one does not vanish while it syncs.

Result

144
product tools the agent can call
9
kinds of change a user can review
100
step cap on a single agent run
1,140
commits of mine since Nov 2025

Live in the YouanAI product. Lisa drafts, edits, and publishes across a team’s accounts, and by default nothing leaves the platform until a person has seen the change.