What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Ninety is a travel-allowance agent built around a simple division of labor: Sanity Context retrieves structured candidate rules, a classifier handles uncertain language, and a deterministic TypeScript engine calculates the day count. Its author, Kiter, says the model can retrieve, classify, explain, and cite—but every reported number comes from the engine. That is an architectural claim from the project author, not an independent audit or a source of current travel-eligibility advice.

What Ninety is designed to answer

The project starts with a traveler’s practical question: “I have eleven trips logged this year and one booked — am I still legal?” More specifically, it aims to determine how many days remain under applicable travel-allowance rules. The input is natural-language travel history; the output is a day count, an explanation, and citations to the rule records used.

The design matters because a corpus of rules does not, by itself, know which dates belong to a particular traveler. As Kiter puts it, “The corpus holds the rules, and never held the traveller.” The system must connect a person’s itinerary and calendar to the applicable rules without asking a language model to invent the governing candidate set or perform authoritative arithmetic.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How the answer is produced

  1. Extract dates from the traveler’s text. The project describes deterministic date extraction as the first step, separating trips and stays from a free-form account.
  2. Retrieve candidate territories and rules. A hosted Sanity Context MCP endpoint is used to retrieve possible territories and presence rules from structured content. According to the author, candidates are fetched at request time rather than generated by the model.
  3. Classify the relevant case. The system uses TypeSafe System One to make a typed choice among candidate cases, with probabilities rather than free-form numerical generation. The author says readings below a 0.62 confidence threshold are surfaced as uncertain.
  4. Calculate with the TypeScript engine. A pure, deterministic engine applies the selected rule to the dates and produces the day-count result. The author’s stated constraint is: “Every figure it reports comes from that engine.”

This separation limits the model’s role: it helps interpret language and explain retrieved material, while the engine is responsible for the reported number. The distinction is especially useful when a classification label and the arithmetic do not agree.

Why the rules are modeled by date and territory

The project represents membership as date-banded rules: records include start and end windows, whether presence counts, and the travel modes to which the rule applies. That makes it possible to represent a rule change over time instead of applying one timeless description to every trip.

Geographic carve-outs are modeled as separate territory documents. Presence rules can be marked counted, not_counted, or disputed. In the author’s description, a disputed rule is not collapsed into a single answer: the engine refuses to turn an unresolved disagreement into an apparently certain result. Rule records also carry source references, so an explanation can point back to the material represented by the record.

These choices are intended to make the retrieved material precise enough to support calculation. They do not establish that the underlying travel rules are complete, current, or legally authoritative.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the Context MCP tools do

Kiter describes four tools available through the project’s Context MCP endpoint:

  • initial_context provides an overview of the schema.
  • groq_query retrieves structured records, including candidate territories and rules.
  • schema_explorer supplies field-level schema details.
  • array_field_reader reads selected array fields.

The project post includes a GROQ query example for Croatia’s date-banded access rules. The roles above are the project author’s description; the protected endpoint was not independently called as part of the evidence available for this article.

What the travel example shows—and what it does not

Kiter’s example combines time on Tenerife, an airport layover without clearing immigration, and a train journey into Bulgaria. The agent separates the legs, applies the project’s date-banded rule to the Bulgaria dates, treats an unnamed airside transit as not counted, and declines to resolve a fragment it considers too uncertain.

The example illustrates the intended workflow: split a narrative into relevant stays, retrieve candidate rules, classify the uncertain details, and calculate using the rule ledger. It is not legal guidance. The tool covers only a handful of passport classes, refuses cases outside that scope, and the project author says it is not legal advice.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why a deterministic calculator matters

The author describes a bug in which classification labeled the Bulgaria-by-train case misleadingly, even though the engine correctly determined the counted days from the ledger. The correction was to display the count from the engine output rather than infer it from the classifier’s opinion about whether the stay should be charged.

This is a practical boundary for agent design: a classification label is an interpretation, not a calculation. When the output includes a number that can be derived from explicit dates and rules, the number should come from the component that owns that arithmetic. The model can still explain the result, but its prose should not silently replace the computed value.

How the author’s evaluation compares retrieval approaches

Kiter reports an evaluation on 23 adversarial travel histories, comparing structured GROQ retrieval plus the calculation engine with keyword/BM25 retrieval over the same corpus flattened into prose. These are the project author’s results for that setup, not an independently audited benchmark or a general comparison of retrieval systems.

Measure Structured retrieval plus engine Flattened keyword/BM25 comparison
Correct answers on the 23-history evaluation 23/23, as reported by Ninety’s author in 2026 1/23, as reported by Ninety’s author in 2026
Cases producing a day count 21/23, as reported by Ninety’s author in 2026 The project article does not report a comparable figure

The 21/23 count is not a claim that every case was answerable: some histories were meant to trigger uncertainty or refusal. The project article does not provide comparable figures for exact breach-date identification or refusal behavior, so those outcomes should not be inferred from the correctness totals. Kiter also reports 56 unit tests; the article does not publish an independently verified test run.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the project does not search

Ninety does not use a Sanity Knowledge Base, according to its author. The structured rules are served through Context, while cited EU guidance documents are referenced as sources rather than ingested as searchable text. As described, the agent therefore cannot search those underlying guidance passages as knowledge-base content or quote them directly through that mechanism. A citation attached to a rule record should not be mistaken for retrieval of the full source text.

Implementation lessons from the build

The project post records several corrections that are useful context for anyone building a similar pipeline. They are author-reported implementation experiences, not independently reproduced findings:

  • The Context endpoint initially required a deployed Studio.
  • Batched classification questions were not reliably associated with their corresponding stays.
  • A regular expression intended to strip dates did not behave as expected.
  • An incorrect territory code caused one case to pass for the wrong reason.
  • A Sanity Function guard encountered issues involving lazy patches, transaction reuse, and resolving a referenced dispute kind.

Together, these examples point to failure modes beyond retrieval quality: schema and deployment assumptions, binding model outputs to the right input, validation of identifiers, and correctness of the code that enforces disputed cases all matter to the final answer.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Where Sanity Context fits in the architecture

Sanity’s vendor materials describe Context as schema-aware retrieval over typed, related Content Lake documents using GROQ. They also describe instructions managed in Studio and staged through Content Releases. A separate Sanity guide presents the Vercel AI SDK as an orchestration and tool-calling layer, with Context supplying retrieval. These are vendor explanations of the product, not independent validation of Ninety’s implementation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Sanity’s guide frames schema-awareness this way: “Schema-awareness isn’t only about what the agent can find, it’s about what it’s allowed to say and how that behavior changes over time.” For a project like Ninety, the relevant architectural questions are whether retrieval reads the maintained source of truth or a synchronized copy, whether the content model exposes the fields and relationships the calculation needs, whether source metadata travels with the answer, and how people review changes to agent instructions.

The vendor materials also describe hybrid retrieval that combines semantic similarity with exact-term matching, and say dataset embeddings are tied to content updates. Those descriptions may change; they do not establish a particular latency, price, or service-availability guarantee for this project.

Who should treat Ninety as a prototype

Ninety is most informative as a case study in separating retrieval, interpretation, uncertainty, and arithmetic. Its project-reported results suggest that structured rules paired with a deterministic engine performed well on the author’s small, adversarial set, while also showing why refusal behavior and correct case binding deserve attention.

It should not be used to decide whether a real traveler is legally eligible to enter or remain in a country. Its passport coverage is limited, the author says it is not legal advice, the underlying cited guidance is not searchable as ingested text, and the reported evaluation has not been independently audited. Travelers should verify current requirements through authoritative sources for their circumstances.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.