Delivery engineering: turning one AI measurement into a service that ships on time every month

Building an AI demo that runs is not hard. What is hard is having it finish every month on the same terms, never mistake an error for a result, and deliver its own report. This page describes how the NeuronSpark GEO platform does that. This address used to hold a subscription price list; NeuronSpark is a development company and does not sell subscriptions, so it now shows the engineering we actually deliver.

Updated 2026-10-11

The short version

  • Tiers are data, not code: scan depth (light or full) and cadence (weekly or monthly) are fields on the brand record, and changing tier needs no code change.
  • A full monthly scan is 676 questions. It cannot finish inside one function invocation, so every cell is created empty first, and whatever is not asked stays pending for the next invocation.
  • When a provider runs out of credit, rejects a key or rate-limits, the cell stays pending. It is not recorded as a failure, and never as "the brand was not named".
  • Nothing partial is delivered: a scan with more than one failure in ten is voided; predicate verification shows no figure with fewer than two rounds; a failed database read raises an error instead of rendering an empty table.
  • The report is emailed automatically when a scan closes, and only once.

Tiers are data, not code

One measurement has to serve different depths of need: some brands take a full scan once a month, others a light scan every week. We did not write a branch per tier. Scan depth and cadence are two fields on the brand record, and the scheduler runs whatever it reads there.

676Questions in one full monthly scan: 52 buyer questions × 3 phrasings × 4 engines, plus 52 Google AI Overview queries. The light tier asks only the core questions, one phrasing each.Planned cells of the demo brand's September and October 2026 scans

Results from different tiers have to sit on one trend line, so the history of full scans is recomputed on the light subset. Changing tier should not break a client's curve.

What is not asked stays pending: resumable runs

Cloud functions have a time limit and are killed when it expires, with no chance to log. 676 questions cannot finish inside one invocation.

So a scan begins by creating one empty cell for every (question × phrasing × engine). Each invocation asks as many as it can inside a 240-second budget; when the time is up it stops launching new questions and writes what it has. The remaining cells wait for the next invocation. The scheduler advances a scan every ten minutes inside the scan window and every two hours outside it.

A failed invocation costs one small batch rather than the whole round, and a scan cannot sit at "running" with nobody aware of it.

Out of credit does not mean "the brand was not named"

The most dangerous error in AI measurement is recording "not asked" as "asked, and absent". When a model API runs out of credit it returns an error code; treat that as a failed answer and one step later it is counted as the brand being absent — indistinguishable from a real reading.

Account-level failures are handled separately: out of credit, key rejected, rate-limited. In those cases the cell stays pending, that engine pauses for the round, and the other engines carry on. When credit returns the run resumes where it stopped.

237Cells that stayed pending when the provider ran out of credit on 10 October 2026. After the top-up the runs resumed in place; not one cell was recorded as a reading.Paired-predicate verification · two rounds combined

Nothing partial is delivered

  • A scan with more than one failure in ten is voided — it enters no trend and produces no report. Below that it is marked "partial" and shown as such.
  • Paired-predicate verification shows no figure with fewer than two rounds; the page explains why instead. A single round looks like a reading but cannot separate the engine's position from run-to-run jitter.
  • A failed database read raises an error rather than rendering an empty table. An empty table looks exactly like "nothing wrong", which makes it the worst kind of failure: it reads as good news.
  • An answer that is too short is not an answer. A list question that returned one opening sentence was truncated; it did not "fail to mention the brand".

The report sends itself, once

When a scan closes, the report is emailed to the recipients registered for the brand. The send time is written back to the scan record, so however many times the scheduler returns, the same report is never sent twice.

Every rate in the report carries its numerator and denominator, and a question with fewer than three answers is never listed as a gap.

Three mistakes we fixed

All three were found by measurement. They are listed here because most systems of this kind have the same holes.

  1. A count that could not be read was taken as zero. A database count query returns nothing when it fails; the code treated that as 0, so a round whose read had failed was marked "complete". A count that cannot be read now raises an error.
  2. A search log was read as the answer. An engine that searches the web listed what it had searched ahead of its answer, repeating the question word for word — and the question often contains the brand name. Answers that never named the brand were judged to have named it. The log is now stripped before the answer is stored.
  3. A single comparison round overstated a difference. Comparing answers to Traditional and Simplified Chinese questions, we first asked Simplified only once and got 18.2%. Asking again showed that figure included Simplified's own jitter; with two rounds on each side the figure is 12.2%. The method note has the details.

Frequently asked questions

Does NeuronSpark have a subscription price list?
No. NeuronSpark is a development company. It delivers by project and licenses its methods and engineering; it does not sell self-serve subscriptions.
How many questions are in a full AI visibility scan?
For the demo brand, 676: 52 buyer questions × 3 phrasings × 4 engines, plus 52 Google AI Overview queries.
Does running out of model API credit affect the results?
It is not recorded as a result. When credit runs out, a key is rejected or a rate limit is hit, the affected questions stay pending — not failed, and not counted as the brand being absent — and the run resumes where it stopped once credit returns.
When does a scan produce no report?
When more than one question in ten fails, the whole scan is voided: it enters no trend and produces no report.

Have an AI demo that runs but cannot yet be delivered?

Tell us where it is stuck: it does not finish, the results are unstable, or errors cannot be told apart from findings. We look first, then say whether it is worth building.

← Services