Dev Blog
Deep-dives, engineering notes and tutorials from the team building genvi.

Nov 2, 2026
Why weird AI influencers go viral, and why spikes fade
Why weird AI influencers spread fast, what one observer reported about their numbers, and why attention can drop sharply.

Oct 27, 2026
Reading a brand kit from a website
Paste a web address and genvi finds a brand's name, colours, logo and products. Here is how the page is read and why we copy the pictures.
Oct 21, 2026
How we built the genvi apps for iPhone and Android
Native editors on the same engine as genvi.co, a shared codebase, and projects that move between your phone and the web. Some notes from the team.

Oct 20, 2026
Moderation before the credit reservation: checking first
Since 20 October, every genvi generation is checked before it is paid for. If a request is refused, it costs you nothing. Here is how that works.

Oct 13, 2026
API keys that act as their owner, and never more
An API key lets another app use your genvi account. Ours can only do what you can do, with limits you choose and a daily spending cap.

Oct 2, 2026
Cutting our phone app's start time from 7 seconds to 3
The genvi app took 7.3 seconds to show your name when opened from scratch. Three changes cut that to 3.2 seconds. Here is what we did.

Sep 16, 2026
Why a save cannot be trusted to keepalive
Edits vanished when you moved between pages, and big saves never left the browser. Here are the two traps behind it and the single saver that fixes both.

Sep 16, 2026
Imports point inward: how we keep our code tidy
A rule that nobody checks slowly breaks. Here is the one rule we follow for how parts of genvi connect, and the automatic checks that enforce it.

Sep 15, 2026
How we stop pasted links reaching places they should not
Some genvi features download a link you give us. Here is how one safety check keeps every such link pointed at the public internet only.

Sep 15, 2026
Eleven bugs from copied rules, and how we fixed them
A September review found eleven real bugs, all caused by the same rule written in two places. Here is what went wrong and how each rule now lives in one place.

Sep 8, 2026
Inside the Genvi Agent
Ask for eleven stills on the image track and eleven stills move. Here is how the agent actually does that, in plain terms, including the parts we got wrong first.

Sep 8, 2026
Pricing 120 models with one formula
Every provider prices differently: per image, per second, per token, per megapixel. You get one number. Here is how those two things get reconciled.

Sep 8, 2026
A product launch film, start to finish
One espresso machine, six shots, a score and a finished cut. The whole path from a single product photograph to a film that holds together.

Sep 7, 2026
Define a character once and use it everywhere
A practical guide to writing a reference that holds a character together across a dozen generations, and to the descriptions that quietly fail.

Sep 6, 2026
Game assets: concept, sprite sheet, mesh
From a character description to a sheet an engine can slice and a mesh you can open in a DCC tool, without leaving the project.

Sep 6, 2026
A product catalogue at scale
Forty products, five formats each, one look. This is the job where a node canvas stops being a novelty and becomes the only sane option.

Sep 5, 2026
Pre-visualising a film before anyone is on set
Storyboards exist so you can have the argument early, while changing your mind is still free. Generated boards are cheap enough to actually iterate on.

Sep 5, 2026
A music video, cut to the beat
The track is the edit. How to build a performance video where the cuts are decided by the music and not by how long each clip happened to render.

Sep 4, 2026
Testing an agent when there is no right answer
Unit tests cannot tell you whether an agent did a good job. So we built a harness that scores the real agent against a fake canvas, and learned to distrust our own easy cases.

Sep 3, 2026
Selling a building that does not exist yet
Architectural visualisation is the rare case where the geometry is fixed and only the feeling is up for debate. That turns out to suit generative work very well.

Sep 3, 2026
Parallel generations that do not scramble the timeline
Ask for three images and the agent really does request all three at once. Letting them land in whatever order they finish builds a different video every run.

Sep 2, 2026
From 34% to 90%: caching an agent’s prompt
One line that changed on every step was costing us two thirds of our cache. The fix was not to cache harder. It was to move the line.

Sep 1, 2026
What an agent can actually see
An agent editing a canvas has to be told what is on it. That description has a budget, and the budget binds long before the model gets slow.

Aug 29, 2026
Uploads over 4.5 MB: sending files straight to storage
A report said deleting and re-uploading broke uploads. The real cause was a hidden size limit. Here is how we fixed it without dropping any safety check.

Aug 25, 2026
A lease that was never renewed, and the double bill
A rescue helper could run one generation twice and make us pay the AI provider twice. Here is how we found the mistake and fixed it.

Aug 23, 2026
Why your reference came back stretched
Hand a square reference to a model generating widescreen and something has to give. Providers stretch. We would rather warn you first.

Aug 16, 2026
Every provider takes reference images differently
Attaching a reference image and having it silently ignored is worse than an error. We found it happening across an entire provider.

Jul 26, 2026
How genvi exports video inside your browser tab
There is no render farm behind the export button. Your video is encoded on your own machine, and our server-side export route is a stub.

Jul 3, 2026
Playing a dense timeline without stutter
A 25-clip project stuttered a few seconds into playback. It was not decoding speed. We had mounted every video in the project at once.

May 30, 2026
Your first workflow in Node Studio
Ten minutes, three nodes, one generated image. The picture at the end is not really the point. Understanding why a canvas beats a prompt box is.