Blog

I Turned Weekly SaaS Metrics Into Customer Recap Videos

The Problem Was Not the Metrics

Every week, I had plenty of customer data and almost no practical way to turn it into something a customer would actually watch. We had activity counts, milestone events, feature adoption, and a tidy set of reporting queries. The default output was another dashboard link or a carefully formatted email paragraph.
Neither felt memorable, and neither made the information easier to understand. I wanted a short, customer-specific recap: what changed, what they achieved, and one useful next step. The catch was that I did not want to build a bespoke video editor, manually export a hundred clips, or create a rendering bill that would make the experiment silly.
That led me to VideoFlow, an open-source JSON-to-video toolkit. It gave me a useful middle layer: data in, a portable VideoJSON document in the middle, and a preview or MP4 out at the end. I could treat the video as generated output instead of a creative artifact someone had to assemble by hand.

I Started With One Repeatable Story

The first version was deliberately narrow. Each recap had five scenes: a personal opener, one usage trend, one milestone, one recommended action, and a closing card. No cinematic manifesto, no automated voiceover, and no attempt to summarize every metric we had.
That restraint mattered. The more fields I allowed into the template, the more I had to defend against missing data, weird edge cases, and captions that no longer fit. A recap that can be generated reliably from three good facts beats a complicated video that fails on a third of the customer base.
The input looked more like application data than an editing project:
{
"customerName": "Northstar Studio",
"reportingPeriod": "This week",
"primaryMetric": { "label": "Projects shipped", "value": 14 },
"milestone": "First team workspace created",
"nextAction": "Invite two collaborators"
}
I used that payload to populate a known template rather than asking a model to invent a timeline. That gave me predictable duration, scene order, typography, and validation. The copy could vary; the structure did not.

Why the JSON Layer Was the Useful Part

I have used both manual timelines and one-off FFmpeg scripts. They are powerful, but neither was a great interface for this job. A timeline is awkward to generate from data, while a low-level render command is awkward to inspect, revise, and reuse.
VideoFlow's portable VideoJSON gave me a format I could store with the original input, validate before rendering, and pass between environments. The same video definition can drive a live DOM preview, a browser-side export, or a server render. That is a surprisingly practical design choice when a workflow moves from prototype to product.
For this experiment, I rendered previews in the browser while iterating on the template, then used a server-side renderer for the recurring batch. That division kept the feedback loop fast without forcing every customer export through a browser session. It also made it easy to rerender a single customer when the input changed.
The broader pattern is worth borrowing: use a structured intermediate format whenever an automated system creates something that a person may need to review. It gives your workflow an object to inspect instead of a black-box export.

The Checks I Kept Human

The automation built the scenes and rendered the file. I kept three checks human at the start: whether the metric told a fair story, whether the recommended action was relevant, and whether the message was appropriate for the recipient.
That sounds obvious, but it is exactly where a “send video to every customer” idea can become awkward. A poor week, an incomplete data source, or a customer with an unresolved support issue is not a good moment for an upbeat progress montage. The system needs a no-send path.
I added basic rules before a job could enter the render queue: require a complete payload, exclude accounts with low data confidence, and route higher-value accounts through a review state. That reduced the volume, but it made the output much more credible.

What I Would Build Differently Next Time

My first instinct was to personalize everything. In practice, a small number of controlled fields created the best results. Name, metric, milestone, product image, and a relevant action were plenty. Adding five more charts did not make the recap clearer.
I would also create a template registry from day one: template version, expected data schema, owner, active status, and test payload. That makes a video workflow maintainable once different teams request variations. It is the same discipline I would use for transactional email templates or reporting dashboards.
For teams that want customers to adjust the output, VideoFlow has another advantage: the same VideoJSON can open in its React video editor. You can generate a first draft from data, let a user adjust media or copy in a constrained interface, then render the result. That is a much better product surface than making users reconstruct a video from scratch.
A similar product workflow appears in building an approval-ready AI video workflow with VideoJSON. The point is not “AI makes videos.” It is that a structured video artifact can move through generation, preview, approval, and delivery without changing formats.

The Cost Question

The most useful cost decision was not choosing the cheapest renderer. It was deciding which jobs deserved a server render at all. A quick user-triggered export may fit a browser-side renderer, especially when privacy or infrastructure simplicity matters. A scheduled customer batch belongs on the server, where it can be queued, retried, monitored, and rendered consistently.
That is why I now think about programmatic video as an operations problem first. The creative template is only one component. You also need data validation, rendering capacity, delivery rules, and a clear answer for what happens when a job fails.

Where I Would Use This Next

The same template approach could produce onboarding milestones, ecommerce loyalty summaries, sales follow-ups after a demo, monthly agency reports, or a launch recap for a product team. The trick is to choose an event with enough structured information and a recipient who benefits from a compact visual explanation.
For a more ecommerce-focused implementation, I also like the idea behind building a reviewable product video queue from catalog data: generate the first draft from a known template, then make approval a normal part of the system.
My experiment did not replace reporting, and it did not remove editorial judgment. It did prove that I could turn a narrow, structured data story into a useful customer-facing video without acquiring a video-production team. If you are building a product where data should become a viewable, editable video, start with one template and explore VideoFlow's docs.
Copyright © - Productivity Tech & Business