At RDA, every new initiative comes with operational work. Encoding videos for the web, responding to inquiries and producing newsletters are all essential to the studio, but none of them are where we create the most value. As a two-person team, we wanted a way to reduce that repetitive work without sacrificing quality or removing ourselves from the process.
This article explores how I’m building an operations layer for RDA using eve. Instead of treating each workflow as a standalone automation, we’re teaching a single agent to prepare assets and draft client communications while keeping us in control.

The first responsibility I gave this system was video encoding.
Video plays a huge role in RDA’s brand identity and solutions, but showcasing these videos on the web requires encoding solved by software like Premier, DaVinci, or Mux. In order to get the solution RDA needed, it meant being more hands-on than I wanted to or paying for a lot more than I needed.
If you haven’t discovered FFmpeg, it’s basically a swiss army knife for media processing and at RDA, we use it to solve video encoding. When I found the tools that made this process painless, I wrapped them in an agent to that now powers much more than video encoding.
Scaling Operations With eve
I built an operations agent with two skills, tasked with video encoding:
- probe_video inspects a local video file — dimensions, orientation, duration, fps, whether it has audio, and file size.
- encode_video encodes a local video into a web-ready, silent, looping MP4.
There’s presets like hero-desktop, hero-mobile, and project-gallery with the right settings (size + quality) baked in and an agent that can reason through custom one-offs like “trim this clip to 10 seconds, optimized for the project gallery”.
Agent instructions (instructions.md) define an agent persona. In this file, I provided our operations agent specific rules, constraints, and an identity to associate with. We architect our video encoding workflow by using these instructions as context for our agent:
- Use probe_video first to inspect a file before deciding anything.
- Use encode_video to produce the web-ready web.mp4.
- Favor short durations, If a clip runs long (say 60s+), ask whether to trim it (e.g. to 10s).
- Report before/after size, the reduction, and the output path.
Short, focused instructions and tools became the foundation for our operations agent at RDA. After validating those workflows locally, eve gave us a clear path to extend the same architecture into production, orchestrating workflows across Sanity.
Expanding Our Foundation
I was really inspired by Sanity’s knowledge base article on how they were drafting documentation fixes from reader feedback with eve. With Sanity Functions, they trigger an agent to making content revisions while keeping a human in the loop. This practical, well executed use case made me reconsider the role of our own content at RDA.
Rather than treating our case studies and editorial content as static pages, I started thinking about how they can become the context for the workflows that support the agency. Could our published work help support future content operations without requiring the team to rewrite the same information each time?
Content as Context
During our client discovery, we consistently uncovered opportunities where clients were unaware that their needs fell within our scope of work. Prior to building our site, I imagined a RAG-based agent living in the contact experience that combined three things:
- A conversational form that guides users
- A retrieval layer grounded in our case studies and services
- A dynamic response system to deliver thoughtful, advisory feedback
Two things changed when I started building:
- We required multiple contact paths, including applications for our monthly series. In order to prioritize UX, I opted out of the conversational contact experience.
- I realized we weren’t at scale to see the benefits of RAG. We have 18 projects on our site, with only 3 containing case studies. Adopting RAG would mean building to solve a constraint that we don’t even have.
Realizing this made my approach much simpler. I built our contact forms on Sanity as the datastore. Each "Start a Project" submission creates a document, which triggers a Sanity function that hands the inquiry to eve along with our case studies and services. eve drafts a grounded response and writes it back to the submission as a suggested reply — someone at RDA reviews and sends it, so nothing goes out automatically.
Our agent now had a new job and two new tools:
- find_pending_inquiries provides our agent with a submission ID, our case-studies, and our services. It also answers if a submission already has a draft or whether it a suggested response is worth generating.
- draft_inquiry_response writes the generated reply back onto the submission document
These two tools combined with updated instructions, turned our video encoding agent into a support member that begins our client discovery process. The next step was to see whether that same pattern could connect our content in Sanity with the tools we use to distribute it.
Powering Resend with eve
As a two-person team, we're always looking for ways to spend less time on repetitive work and more time creating. This update to our operations layer streamlines newsletter production by turning newly published blog posts into grounded Resend draft broadcasts, while keeping us in control of the final edit and approval.
I started by updating our agent instructions with a new responsibility:
Turn newly published blog posts into newsletter drafts for the team to review.
I setup two new tools and a Webhook to trigger on Create + Update of our blog posts:
- find_unsent_posts looks up recent blog posts and quietly skips any that already have a broadcast draft in Resend
- draft_newsletter composes the email (subject, body, plain-text version) and creates a draft broadcast
The result is a workflow that keeps Sanity as the source of truth for content, Resend as the delivery platform, and eve as the orchestration layer connecting the two. Instead of starting every newsletter from a blank page, we start with a grounded draft that's ready for editorial review.
Looking Ahead
As RDA continues to grow, our operations layer will too. The value here isn’t that we can automate everything with AI, but that we’ve created a foundation that we can continue to build on.
If you’re looking to take a deeper dive into the architecture and how I built this agent, reach out. I’m happy to hop on a call and talk about why you should be building agents for your business or identify patterns in your work that can be automated.
Liked this article? Share it with a friend on Bluesky or X. Have a question, feedback or simply wish to contact me privately? Shoot me a DM and I'll do my best to get back to you.