Methodology
TasteAudit asks whether a simulated assistant’s recommendations fit the interests and constraints a customer actually stated. It is a demonstration and a working audit for one session, not a claim about a brand’s production model.
TasteAudit asks whether a simulated assistant’s recommendations fit the interests and constraints a customer actually stated. It is a demonstration and a working audit for one session, not a claim about a brand’s production model.
The current inputs and results live in React state in this tab. Refreshing or closing the tab clears them. The app does not use local storage, session storage, or a database. Download a JSON or CSV file if you want a copy. That file stays on your device until you move it.
No application storage is not the same as no provider processing. Interests and answers are sent to the Qloo and Gemini credentials configured on the server. TasteAudit does not promise zero retention by those providers, by hosting logs, or by network infrastructure. The app avoids writing customer prompts and raw provider payloads to its own logs.
Favorite names and recommendation names are searched with Qloo’s /search parameters query, types, page, and take. An exact normalized name inside the expected type is preferred. Otherwise the first type-compatible candidate is provisional and can be corrected. An unmatched name stays unmatched.
Discovery and scoring use GET /v2/insights with filter.type of urn:entity:book or urn:entity:place, signal.interests.entities, and feature.explainability=true. Places may also send filter.location.query. The parameter dictionary lists that name for Destination and Place as a locality candidate filter. The place entity-type table lists filter.location and does not list filter.location.query. Books are absent from both. The parameter dictionary lists signal.location and signal.location.query as compatible with Book and Place. The book and place entity-type tables do not, so those scoring signals are not sent. Affinity is query.affinity for the interest signal on the returned entity id. It does not measure local market preferences. A city sent only to Gemini does not change the Qloo request. Scoring sends the pool through filter.results.entities. A missing affinity is shown as Unavailable and left out of the mean. It is not replaced with another number. Missing explainability is labeled unavailable.
The place demo compares Lisbon, New York, Kuala Lumpur, and Osaka with the same interests and filter.location.query. The book demo compares four readers with different explicit interests and does not send a city. When geography does not affect scoring, the result says: Interest-based affinity. City was not applied to Qloo scoring. Evidence lines come from the score row: Qloo affinity returned, Explainability unavailable, Identity match provisional, and Price, edition and stock unverified. Gemini does not decide whether a score is authenticated.
An explicit age can be mapped to a documented Qloo age band and is shown before it is sent. Gender is never inferred. Audience ids are not sent. Optional entity metadata does not prove hours, stock, price, or accessibility.
Regional Audit can run with no personal favorites. Direct location scoring is not sent for books or places, because those entity-type tables omit signal.location and signal.location.query. Where a taste-analysis call returns tags whose types include the target domain, TasteAudit labels the result “Derived from regional taste profile” and scores originals and alternatives with those tags. Incompatible tags are not sent. If no compatible regional evidence comes back, the page says regional evidence is unavailable and does not substitute a global score. A Qloo explanation score is the contribution the provider returned. Leave-one-interest-out sensitivity is a separate, on-demand calculation: full-context affinity minus affinity without that interest. Neither number is a causal effect, and a higher affinity is alignment with the scoring evidence, not proof of satisfaction.
Original Gemini and Gemini self-refinement share the same customer context and frozen generation settings. Self-refinement sees no Qloo evidence. Reranking the original names changes order only, so it does not raise the mean affinity of that same complete set. The grounded revision may choose different allowlisted ids, and a shorter list is disclosed. Pasted answers can be audited and revised, but their original model is unknown, so they are not a controlled model comparison.
Affinity is a provider score for the signals that were sent. It is not preference accuracy, a purchase probability, or a business outcome. One profile cannot support a significance test. An optional A/B vote is an informal session review.
Each provider route is stateless, validates its body, and returns. The browser runs the stage sequence and can retry a failed stage without repeating completed work. Closing the tab stops the run. There is no durable resume. Instance-level request throttling, if configured, resets with the server process and is not a global rate limit. Set spend limits on the provider accounts.