Dev AI Summit · DrupalCon Rotterdam · 28 September 2026

FlowDrop in production, on one page

The companion page to the talk: the run it opens with, the numbers behind the cost slides, the tables that were too big for a projector, and one standing offer.

The run 28 Aug 2026 · 31 steps · 16 s

“lets make primary darker”

In · job 907 var(--color-yellow-100)#FEF9C2
colour
specialist
2 s
Out · job 910 oklch(0.45 0.12 40)#8A3819
The agent’s closing reply “Primary is now a darker shade.”
Step 910 was shown two primaries The yellow as a name, no numbers. The saved brown with numbers. It darkened the numbers.

Atelier CMS by AIncient Labs, FlowDrop 2.5.1 on Drupal 11, 28 August 2026. Run 43 hands the request to a second workflow, run 44. 31 steps, 16 seconds. A yellow went in, a brown came out, and the reply said success. The cause was found in the record of the run.

Why brown: the prompt promised the model that relative changes are relative to the current values, then listed the saved primary with numbers, oklch(0.55 0.12 40), and the on-screen primary as the bare token var(--color-yellow-100), with nothing behind it. You cannot subtract ten percent from a name, so the model darkened the saved colour: oklch(0.45 0.12 40), #8A3819. No contrast check fired, because near-white text on dark brown passes. The fix resolves every token reference before the model sees it: var(--color-yellow-100) (= oklch(97.3% 0.071 103.193) ≈ #FEF9C2).

Start small Four steps, one afternoon

Where to begin, if you want to try it

  1. 01

    Install the module.

    There is nothing else to host. composer require drupal/flowdrop
  2. 02

    Build one workflow.

    Start with steps that use no AI.
  3. 03

    Run it in “Synchronous Pipeline” mode.

    You get a record per step from the first run.
  4. 04

    Add one AI step.

    Read its record before you trust its answer.

Export the workflow. It is Drupal configuration, so it goes into git with the rest of the site.

Running it Four modes, one workflow

The same workflow runs four ways

Run modeBuilt forQueue
SynchronousFewer than ten steps, form handling, testingNo
Synchronous PipelineThe same, with a record per step shown in the UINo
AsynchronousLong runs, many steps, calls to external APIsYes
StateGraphLoops, human approval, chat, checkpointsYes

A person approves

A yes or no, a choice, a text or a form. The run is set to Paused and waits in the database for as long as the person takes.

Time limit

300 seconds by default. A run that goes over it pauses, records the reason, and continues later instead of crashing on a PHP timeout.

Planned, not built: a run that starts inside the web request and moves itself to the queue when it pauses. Filed as flowdrop issue 3592458.

What it costs 499 graded runs · n=3

The cost of a correct result, not the cost of a run

Eight ways to build the same task, same model (Claude Sonnet 5), three runs each. The agent that checks its own work (B9) costs about three times more per run, and it is the only one that was never quietly wrong. Per correct result it costs the same as the others.

Variant$ / correctCorrectQuietly wrong
B2 · raw HTML to one prompt0.121 of 32
B3 · markdown to one prompt0.141 of 30
B4 · AI agent with one tool—0 of 32
B5 · agent that reasons, then acts0.131 of 30
B6 · agent left to decide alone—0 of 33
B7 · same agent, tool takes a URL0.201 of 31
B8 · same agent, tools in the parent0.141 of 32
B9 · agent that checks its own work0.153 of 30

The choice of model changes the price 119 times, and the price per correct result 65 times

ModelRuns$ / runCorrect$ / correctQuietly wrong
Claude Opus 5720.152690.1580
Qwen 3.8 27B720.039670.0421
Claude Sonnet 4.6710.104480.15414
Claude Haiku 4.5690.033460.05010
DeepSeek V4 Flash720.003440.00510
Claude Sonnet 5710.058410.10119
Gemma 4 31B720.001380.00228

Source: flowdrop-ai-bench, current corpus, 499 graded runs, every cell n=3, list prices. Open-weight rows (216 runs) and the OpenRouter provider were contributed by George Kastanis, Pointblank, Greece. “Quietly wrong” means the run ended without an error and the result looked fine but was wrong.

Every step reports its token cost

The AI step has an output called tokens_used. Tokens for the prompt and the answer are saved in that step’s record, next to its input, output and time taken. So you can see which step spent the money.

What is enforced today

Time: the 300 second limit pauses the run. Tokens: measured per step, not yet enforced. That is the next step, not a feature today.

With ECA Two different questions

ECA decides when something should happen. FlowDrop shows what each step did.

Event-driven automation

Events, conditions and actions across the whole site. The right place to decide whether something should run at all.

FlowDrop

One run, step by step. Typed inputs and outputs, visible connections, a record for every step.

Two different questions. Most sites will use both.

The offer Open to anyone reading this

Bring one workflow

Have an AI result you cannot explain? Let’s open its record.

Thirty minutes, your workflow, a shared screen. Write to shibin@factorial.io with one line about what the flow does, and we will find a time.

Factorial is the partner for FlowDrop in enterprise use: support, consulting and the hosted backend.

At DrupalCon Rotterdam this ran in person, at the topic tables on Monday 28 September 2026, 16:00 to 17:00. The offer stands after the conference.

Where to go next