Skip to content
Centriu
Centriu Vesper

Bulk-Fill Validation Consistency and Error Visibility Automation: Three Modules That Could Never Succeed in Batch

Centriu Vesper offers two ways to have AI generate the content for a strategic module: one at a time through the chat interface, or all remaining modules at once through a batch-fill job. Measured directly on a real account with 25 total strategic modules, exactly 3 of them failed on every single batch-fill attempt — while generating that same module through the one-at-a-time chat tool succeeded without issue. The two paths validated the AI's generated content differently: the chat tool corrects a handful of common, known AI-output quirks (a value wrapped in an unnecessary extra layer, an object returned as text instead of structured data) before checking it against the module's required shape; the batch engine checked the raw, uncorrected output directly. For the specific modules whose expected shape happened to trigger exactly those quirks, batch fill could not succeed, ever. A second, compounding gap in the same code: the specific reason each module failed was captured internally but then discarded before it reached the job's own final, saved status — leaving a visible failure count with no way to see why, module by module. Both are now fixed together: the batch engine applies the identical correction step the chat tool already used, and every module's own specific failure reason is recorded and saved.
Same correction, both paths
Every failure, explained
Status and progress labels screen
Three modules, failing every single time.

Two paths to the same result quietly earn the right to disagree

Offering both a one-at-a-time chat interface and an all-at-once batch job for the same underlying task is a genuinely useful product decision — different situations call for different amounts of control. The risk that decision quietly creates is that the two paths are two separate pieces of code, built and modified at different times, and nothing forces them to treat the exact same generated output the exact same way. When one path has learned, over time, to correct for a handful of known quirks in how an AI model formats its output, and the other path was never taught the same lesson, the two paths stop being interchangeable — even though, from the outside, they look like two doors into the identical room.

How the underlying problem shows up before you fix it

A specific subset of items consistently fails through one automated, batch-oriented path while succeeding reliably through a manual, one-at-a-time path performing what looks like the identical underlying operation.

The failure rate for the affected items is not occasional — it is total: every single batch attempt for those specific items fails, which is itself a useful signal that the cause is structural (a validation rule, a data-shape mismatch) rather than random (a network hiccup, a transient AI response quality issue).

Two code paths that are supposed to produce equivalent results validate their shared intermediate data differently — one applies a normalization or correction step the other omits entirely.

A batch job's final status accurately counts how many items failed, but the specific reason for each individual failure is generated internally, then overwritten or discarded before the job's own saved record is written — leaving a number with no accompanying explanation.

Diagnosing the gap requires comparing the two code paths' actual validation logic side by side, not just their end results — the difference here was a single function call present in one path and absent in the other.

How the same generated content passed one door and failed the other, and how both gaps closed together

Centriu Vesper's strategic modules — a customer's positioning, target personas, the platforms it operates on, and others — can each be filled with AI-generated content two ways: individually, through a chat-based tool, or as part of a batch job that fills every remaining module for an account in one pass.

Measured directly on a real account carrying 25 total strategic modules: exactly 3 of them — the personas, platforms, and reality-mirror modules — failed on every single batch-fill attempt made against that account, while generating each of those same three modules individually through the chat tool succeeded without any issue.

The two paths call the same underlying AI model to generate the module's content, then validate the result against that module's required data shape before accepting it. The chat-based tool's own fill function, over time, had accumulated a correction step applied to the AI's raw output before that validation — reshaping a small number of known, common formatting quirks a language model can introduce (a value nested inside an unnecessary extra object, structured data returned as a plain text string instead of a parsed object) into the shape the validator actually expects. The batch-fill engine's own validation step, by contrast, checked the AI's raw output directly, with no equivalent correction — a stricter gate than the one it was meant to mirror, purely by omission. For the three specific modules whose expected data shapes happened to trigger exactly the quirks the chat tool's correction step exists to handle, that stricter, uncorrected gate rejected every single attempt.

A second, independently real defect compounded the first, inside the exact same function. When a module's validation failed, the specific error — which field, what was wrong with it — was captured into a local variable for use during that one execution, but the batch job's own final database update, written once the whole job finished, never included it. The saved record showed how many modules had failed, accurately, with no trace of why any specific one of them had.

Both gaps were closed in the same, small, surgical change: the batch-fill engine now imports and applies the identical correction step the chat tool already uses, immediately before validating the AI's output — collapsing the two paths back down to genuinely equivalent behavior for the same underlying task. And a dedicated record of each failed module's own specific error message is now built up during the job and included in its final, saved status update whenever at least one module failed — turning a bare failure count into an explanation.

What is actually built today

The batch-fill engine applies the identical schema-correction step the chat-based, single-module fill tool already used — the same function, not a separate reimplementation that could drift again later.

Every module that fails during a batch-fill job has its own specific validation error captured and preserved, not just counted.

The job's final, saved status record includes a per-module map of failure reasons whenever at least one module failed, alongside the existing success and failure counts.

The correction step reshapes a small number of known, common AI-output quirks (an unnecessarily nested value, a structured object returned as unparsed text) into the shape each module's own schema actually requires, before that schema check runs.

No new validation rules were introduced — the fix brings the batch path up to the exact same standard the chat path already met, rather than loosening or changing what a module's content is required to look like.

The fix is scoped to the shared validation step inside the batch-fill engine itself, so every module type filled through batch — not only the three found failing on this specific account — benefits from the same consistency going forward.

Twenty-five modules requested, three that could never arrive (illustrative framing of the actual measured finding)

A team requests a full batch fill for a client's Vesper account, expecting all of its strategic modules to populate. Before the fix, the job reports back with most modules filled successfully — and three, every single time, marked as failed, with no further explanation available anywhere in the interface. The same team, mildly puzzled, opens the chat tool and asks it to fill just one of those three modules directly — and it works immediately, using what should be the identical underlying generation. After the fix, the batch job itself succeeds on all 25 modules using the same correction the chat tool always applied, and if any module ever does fail for a genuinely different reason, its own specific error is saved and visible, not just a count.

What changes operationally

Centriu Vesper's batch-fill engine now validates AI-generated module content using the identical correction step its own chat-based fill tool already relied on, and every individual module failure during a batch job now carries its own saved, specific reason — closing both a total, structural batch-fill failure for specific module types and a silent loss of diagnostic information in the same function.

When this is not the right fit

This automation governs the internal consistency of Centriu Vesper's own AI-content-generation validation across its two fill paths — it does not change what a strategic module's content is required to contain, does not introduce new AI capabilities, and does not resolve a genuinely different generation failure (such as the AI producing content that is simply wrong, rather than mis-shaped).

Two paths maintained separately vs. one validation standard shared by both

Building a manual, one-at-a-time path and an automated, batch path for the same task and letting each accumulate its own fixes over time feels efficient in the moment — each improvement ships fast, scoped to the path someone happened to be working on. The quiet cost is exactly this: the two paths drift apart, one becomes more forgiving than the other, and the least forgiving one silently becomes the one guaranteed to fail on inputs the other has long since learned to handle. Sharing the actual correction logic between both paths, rather than letting each maintain its own copy, means an improvement made once benefits both automatically — and makes the two paths impossible to accidentally leave inconsistent again.

Related systems

Main system: Centriu Vesper.

What it does NOT do

  • Does not change what content is required in any strategic module, or loosen any module's own data requirements — the fix corrects known AI-output formatting quirks before validation, it does not change what the validation itself checks for.
  • Does not resolve a case where the AI genuinely generates incorrect or low-quality content that is still correctly shaped — that is a different class of issue from a structural, format-shape mismatch.
  • Does not retroactively re-run or repair any batch-fill job that failed before this fix shipped — a team wanting a previously-failed module filled should re-run the fill for that account going forward.
  • Does not introduce a new or separate AI generation engine for batch fill — batch fill continues to call the exact same underlying generation as before; only the validation step immediately after generation changed.
  • Does not surface per-module error detail anywhere a customer directly sees it by default — the saved failure reasons are intended for internal diagnosis of exactly which modules failed and why.
  • Does not affect the chat-based, one-at-a-time fill tool at all — that tool already applied the correction step; this fix brought the batch path up to match it, not the other way around.

Security and governance

Centriu Vesper's batch-fill and chat-based fill tools now share the identical AI-output validation and correction logic, and every batch-fill job records a specific, saved reason for each module that fails. Any personal or business data referenced in a strategic module remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.

Pricing and contracting

Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).

Frequently asked questions

How often did the affected modules fail in batch fill before the fix?

Every single time — measured on a real account, the three affected module types failed on 100% of batch-fill attempts, not intermittently.

Why did the same modules succeed through the chat tool?

The chat tool's own fill function already applied a correction step for known AI-output formatting quirks before validating the result; the batch engine validated the AI's raw output directly, with no equivalent correction.

Was the failure reason for each module ever available anywhere?

It was captured internally during that one execution but discarded before the job's final saved status was written — now it is preserved and included in that final record.

Does this change what a module's content is required to contain?

No — it corrects how the AI's raw output is reshaped before being checked against a module's existing requirements; it does not change those requirements themselves.

Does this affect the chat-based fill tool?

No — that tool already had the correction step; this fix specifically brought the batch-fill engine up to the same standard.

What does Centriu Vesper cost?

It is sold by subscription with a published starting price — exact current values are on the central pricing page.

See how Centriu Vesper keeps batch and chat-based module generation consistent

Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.

Sources

  1. Centriu Vesper — public product page — Centriu, 2026-07-20 · link(primária)
  2. Centriu Vesper — public factsheet (API, JSON) — Centriu, 2026-07-21 · link
  3. Law No. 13,709/2018 — Brazil’s General Data Protection Law (LGPD) — Presidência da República (Brazil), 2018-08-14 · link

Last material update on .

By · AI-assisted production, with human review