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.