What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →How the answer is produced
- 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.
- 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.
- 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.
- 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.
#1 Best Overall
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.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →What the Context MCP tools do
Kiter describes four tools available through the project’s Context MCP endpoint:
initial_contextprovides an overview of the schema.groq_queryretrieves structured records, including candidate territories and rules.schema_explorersupplies field-level schema details.array_field_readerreads 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.
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.
Rank #3
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.
Recommended Free Tools
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.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.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsSanity’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.
Best Value
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.
Quick Recap
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.

