Local-First Hotel Review Capability Experiment — Models, Failures, and Usage

Warning: Experimental capability test report — this documents a non-production model workflow, including failures and incomplete telemetry; linked reviews may contain errors.

Capability-test warning: This is a public record of an experimental model workflow, not a production travel guide. The linked reviews are model-generated, may contain errors, and should not be relied upon as current travel advice.

Published artifacts

What was tested

The experiment replayed two flawed local-model Coronado Springs drafts, extracted and checked their factual claims against bounded evidence, then froze the workflow and applied it to Disney’s Pop Century Resort. Gemma 4 26B handled bulk extraction, classification, and drafting. Qwen 3.6 27B handled the bounded control-plane trial and disputed evidence. Deterministic Python checked schemas, IDs, quotations, source membership, citations, and publication artifacts. Aura handled boundary design, recovery, final editorial voice, credential isolation, publication, and independent public read-back.

The Pop Century control-plane plan used only allowlisted workflow actions and ended with a publication request rather than direct publication authority. The final Pop ledger contained 100 claims: 94 supported and 6 unsupported. The final Coronado ledger contained 74 claims: 39 supported, 32 unsupported, and 3 contradicted.

What failed and what changed

  • An oversized Coronado evidence-classification call was aborted after 1,324 seconds. It was replaced with claim-specific retrieval.
  • Gemma sometimes wrapped valid JSON in prose or code fences. Recoverable objects were normalized deterministically and labeled accepted_normalized; malformed calls remain in the table.
  • Qwen’s first Pop control-plan call used its entire 4,096-token budget for reasoning and returned empty visible content. The retry disabled reasoning and passed the deterministic allowlist gate.
  • One 15-claim Pop classification timed out at 1,800 seconds with token telemetry unavailable. The retry split the remaining work into five-claim calls, reduced context to 8,192, and disabled reasoning.
  • The first corrected Coronado prose draft failed length and citation checks. A local revision repaired most defects; a deterministic URL normalization fixed a trailing-slash mismatch.
  • Both final articles received a cloud Aura editorial pass because the validated local prose was too clinical. Cloud token accounting for the active Aura session is unavailable and is not reported as zero.

Per-call model usage

Hotel Stage Model Run ID Input tokens Output tokens Total tokens Wall time (s) Model duration (s) Outcome Retry of Validation
coronado-springs claim-extraction-draft1 gemma4:26b-16k M001 9,940 1,432 11,372 332.250 332.228 accepted accepted
coronado-springs claim-extraction-draft2 gemma4:26b-16k M002 14,659 2,641 17,300 544.945 544.923 accepted accepted
coronado-springs claim-classification-1-oversized gemma4:26b-16k M003 unavailable unavailable unavailable 1324.000 unavailable aborted aborted
coronado-springs claim-classification-retrieved-1 gemma4:26b-16k M004 11,036 651 11,687 298.532 298.500 malformed rejected/malformed
coronado-springs claim-classification-retrieved-2 gemma4:26b-16k M005 13,019 682 13,701 395.606 395.563 accepted accepted
coronado-springs claim-classification-retrieved-3 gemma4:26b-16k M006 11,356 669 12,025 512.994 512.954 accepted accepted
coronado-springs claim-classification-retrieved-4 gemma4:26b-16k M007 9,403 729 10,132 456.539 456.512 accepted accepted
coronado-springs claim-classification-retrieved-5 gemma4:26b-16k M008 11,252 813 12,065 589.396 589.362 accepted accepted
coronado-springs qwen-adjudication-rejected-quotes qwen3.6:27b M009 2,466 271 2,737 497.608 497.580 accepted accepted
coronado-springs corrected-review-writing gemma4:26b-16k M010 7,171 4,492 11,663 180.552 180.536 accepted accepted
coronado-springs corrected-review-revision gemma4:26b-16k M011 8,750 9,342 18,092 353.930 353.914 accepted accepted
pop-century control-plane-plan qwen3.6:27b M012 693 3,403 4,096 622.547 622.526 malformed rejected/malformed
pop-century control-plane-plan qwen3.6:27b M013 695 702 1,397 124.420 124.392 accepted M012 accepted
pop-century initial-review-writing gemma4:26b-16k M014 10,772 5,867 16,639 248.198 248.174 accepted accepted
pop-century claim-extraction gemma4:26b-16k M015 15,127 4,832 19,959 662.633 662.600 accepted_normalized normalized then parsed
pop-century claim-classification-1 gemma4:26b-16k M016 10,780 585 11,365 321.774 321.747 accepted_normalized normalized then parsed
pop-century claim-classification-2 gemma4:26b-16k M017 9,239 564 9,803 265.933 265.905 accepted_normalized normalized then parsed
pop-century claim-classification-3 gemma4:26b-16k M018 9,177 691 9,868 252.248 252.215 accepted_normalized normalized then parsed
pop-century claim-classification-4 gemma4:26b-16k M019 7,711 2,459 10,170 415.956 415.929 malformed rejected/malformed
pop-century claim-classification-5 gemma4:26b-16k M020 unavailable unavailable unavailable 1800.034 unavailable failed failed
pop-century claim-classification-recovery-mini-1 gemma4:26b-16k M021 1,110 234 1,344 17.088 17.066 accepted M020 accepted
pop-century claim-classification-recovery-mini-2 gemma4:26b-16k M022 1,154 264 1,418 19.262 19.241 accepted M020 accepted
pop-century claim-classification-recovery-mini-3 gemma4:26b-16k M023 971 208 1,179 14.369 14.352 accepted M020 accepted
pop-century claim-classification-recovery-mini-4 gemma4:26b-16k M024 1,638 434 2,072 29.656 29.636 accepted_normalized M020 normalized then parsed
pop-century claim-classification-recovery-mini-5 gemma4:26b-16k M025 1,647 402 2,049 28.617 28.593 accepted_normalized M020 normalized then parsed
pop-century claim-classification-recovery-mini-6 gemma4:26b-16k M026 1,365 288 1,653 20.389 20.364 accepted M020 accepted
pop-century claim-classification-recovery-mini-7 gemma4:26b-16k M027 1,600 320 1,920 23.034 23.017 accepted M020 accepted
pop-century claim-classification-recovery-mini-8 gemma4:26b-16k M028 1,773 444 2,217 31.203 31.180 accepted_normalized M020 normalized then parsed
pop-century corrected-review-writing gemma4:26b-16k M029 13,474 7,091 20,565 529.431 529.409 accepted accepted

Aggregated totals by model

Model Calls Input tokens Output tokens Total tokens Wall time (s) Accepted Normalized Malformed Failed/aborted
gemma4:26b-16k 26 184,124 46,134 230,258 9668.570 15 7 2 2
qwen3.6:27b 3 3,854 4,376 8,230 1244.575 2 0 1 0

Aggregated totals by workflow stage

Hotel Stage Model Calls Input tokens Output tokens Total tokens Wall time (s)
coronado-springs claim-classification-1-oversized gemma4:26b-16k 1 0 0 0 1324.000
coronado-springs claim-classification-retrieved-1 gemma4:26b-16k 1 11,036 651 11,687 298.532
coronado-springs claim-classification-retrieved-2 gemma4:26b-16k 1 13,019 682 13,701 395.606
coronado-springs claim-classification-retrieved-3 gemma4:26b-16k 1 11,356 669 12,025 512.994
coronado-springs claim-classification-retrieved-4 gemma4:26b-16k 1 9,403 729 10,132 456.539
coronado-springs claim-classification-retrieved-5 gemma4:26b-16k 1 11,252 813 12,065 589.396
coronado-springs claim-extraction-draft1 gemma4:26b-16k 1 9,940 1,432 11,372 332.250
coronado-springs claim-extraction-draft2 gemma4:26b-16k 1 14,659 2,641 17,300 544.945
coronado-springs corrected-review-revision gemma4:26b-16k 1 8,750 9,342 18,092 353.930
coronado-springs corrected-review-writing gemma4:26b-16k 1 7,171 4,492 11,663 180.552
coronado-springs qwen-adjudication-rejected-quotes qwen3.6:27b 1 2,466 271 2,737 497.608
pop-century claim-classification-1 gemma4:26b-16k 1 10,780 585 11,365 321.774
pop-century claim-classification-2 gemma4:26b-16k 1 9,239 564 9,803 265.933
pop-century claim-classification-3 gemma4:26b-16k 1 9,177 691 9,868 252.248
pop-century claim-classification-4 gemma4:26b-16k 1 7,711 2,459 10,170 415.956
pop-century claim-classification-5 gemma4:26b-16k 1 0 0 0 1800.034
pop-century claim-classification-recovery-mini-1 gemma4:26b-16k 1 1,110 234 1,344 17.088
pop-century claim-classification-recovery-mini-2 gemma4:26b-16k 1 1,154 264 1,418 19.262
pop-century claim-classification-recovery-mini-3 gemma4:26b-16k 1 971 208 1,179 14.369
pop-century claim-classification-recovery-mini-4 gemma4:26b-16k 1 1,638 434 2,072 29.656
pop-century claim-classification-recovery-mini-5 gemma4:26b-16k 1 1,647 402 2,049 28.617
pop-century claim-classification-recovery-mini-6 gemma4:26b-16k 1 1,365 288 1,653 20.389
pop-century claim-classification-recovery-mini-7 gemma4:26b-16k 1 1,600 320 1,920 23.034
pop-century claim-classification-recovery-mini-8 gemma4:26b-16k 1 1,773 444 2,217 31.203
pop-century claim-extraction gemma4:26b-16k 1 15,127 4,832 19,959 662.633
pop-century control-plane-plan qwen3.6:27b 2 1,388 4,105 5,493 746.967
pop-century corrected-review-writing gemma4:26b-16k 1 13,474 7,091 20,565 529.431
pop-century initial-review-writing gemma4:26b-16k 1 10,772 5,867 16,639 248.198

Cloud and deterministic work

The table above covers instrumented Ollama calls only. Aura’s cloud work included experiment design, source acquisition, recovery decisions, the final humanizing edits, publication, and destination verification. This active cloud session did not expose reliable per-call token or cost metadata to the experiment logger, so those fields are unavailable. They are not estimated.

Deterministic work included source parsing, lexical evidence retrieval, ID/schema gates, exact-quotation checks, citation checks, artifact generation, metrics aggregation, and public API/page read-back. It used no model inference.

Recorded cloud interventions:
– coronado-springs: humanizing-editorial-revision — rewrote_validated_review_for_livelier_non-fanatic_tone (published_and_independently_verified); tokens unavailable.
– pop-century: humanizing-editorial-revision — rewrote_validated_review_for_livelier_non-fanatic_tone (accepted); tokens unavailable.

Workflow v2: bounded small-cloud editorial pass

The Pop Century factual ledger was frozen and only the editorial stage was repeated. Six section packets went first to local mistral-small:24b. That candidate passed the factual gate after two unsupported additions were removed, but a blind local style judge rated its natural voice 6/10, restrained humor 4/10, and rhythm 5/10. The existing Aura-edited article scored 9/10, 8/10, and 9/10 on those dimensions.

A second pass used gpt-5.4-mini through the existing OpenAI Codex subscription as a bounded cloud editor. The model received the same six fact packets and no publication credentials or authority. Its six content calls recorded 93,031 input tokens, 1,711 output tokens, and 41,984 cache-read tokens. Hermes also made six automatic title-generation calls using 2,580 input and 114 output tokens. Five content calls took 32.524 seconds in aggregate; wall time for one recovered call is unavailable. Hermes marked the route subscription_included, with actual incremental charged cost recorded as $0. This is subscription accounting, not a claim that the model has a zero market API price.

Local post-edit verification used 11 Gemma 4 26B calls (17,317 input, 7,805 output, 25,122 total tokens, 299.658 seconds), two Qwen 3.6 27B calls (7,692 input, 465 output, 8,157 total tokens, 237.174 seconds), and one Qwen 3.5 9B blind style comparison (5,712 input, 758 output, 6,470 total tokens, 74.802 seconds). The final cloud-edited draft contained 32 extracted checkable claims; all 32 were supported after two compound-evidence findings were locally adjudicated and their exact quotations mechanically verified. A final whole-draft factual-diff pass found no unsupported additions.

The blind three-way comparison ranked the small-cloud draft first, the Aura-edited public baseline second, and the Mistral candidate third. Scores for the small-cloud draft were 8/10 natural voice, 7/10 restrained humor, 9/10 usefulness, 8/10 rhythm, 9/10 cliché avoidance, 8/10 restraint, and 10/10 completeness. Because it passed both factual and editorial gates, it replaced the body of the existing Pop Century capability-test post rather than creating a duplicate.

This changes the practical architecture: local models remain the default for factual processing, extraction, adjudication, and verification; a small cloud model may handle a narrowly bounded prose pass when local editorial quality fails; credentials and public side effects remain outside all editorial workers.

Generalization trial: Cabana Bay and licensed images

The frozen workflow was then tested on Universal’s Cabana Bay Beach Resort, a different operator, source ecosystem, theme, room mix, and transportation model. Five source groups produced a 97-claim ledger: 95 supported claims and two contradictions. The contradictions were resolved against first-party evidence: the current total is 2,200 rooms and the family-suite size is 430 square feet.

The trial recorded 21 local-model calls, 38,798 input tokens, 15,175 output tokens, 53,973 total tokens, and 955.941 aggregate wall seconds. The local Mistral candidate contained 702 words and failed the 900-word editorial completeness gate. A bounded seven-call gpt-5.4-mini pass produced the selected 1,233-word candidate. The primary cloud calls recorded 93,621 input tokens, 1,307 output tokens, 63,488 cache-read tokens, and 44.733 measured wall seconds. Hermes title-generation overhead added 3,100 input and 108 output tokens. The route was subscription-included; recorded incremental charge was $0, not a claim that the model has no market API price.

Local post-edit validation extracted 31 factual claims from the selected candidate. All 31 passed after two deterministic retrieval repairs, and Qwen’s final whole-draft audit returned no findings. A blind local style judge ranked the small-cloud candidate above the local Mistral version. The small-cloud scores were natural voice 9/10, restrained humor 8/10, usefulness 9/10, rhythm 9/10, cliché avoidance 10/10, restraint 4/10, and completeness 9/10.

Five Cabana Bay photographs by Farragutful were selected from Wikimedia Commons under CC BY-SA 4.0. The files were downloaded rather than hotlinked, resized and compressed, hashed, given descriptive alt text and visible attribution, and retained in a private provenance manifest. No room or pool image was substituted from a source with unclear republication rights.

Aura did not rewrite the Cabana Bay review. Therefore only the autonomous workflow result is published. If Aura later intervenes, this exact pre-Aura article will remain public and the revision will be published as a separate, cross-linked, independently validated artifact.

Interpretation

The experiment supports a pragmatic local-first architecture rather than a completely local one. Local models completed the bulk factual workload and produced the measured content artifacts. They did not reliably maintain output contracts or recover from every long-running failure without deterministic supervision. The bounded local controller succeeded after one changed-condition retry, but Aura still provided boundary design, recovery, editorial judgment, credential handling, and independent publication verification.

No complete GPU-utilization or energy telemetry was captured, so this report makes no exact utilization, power, or energy claim. Failed calls with missing Ollama token metadata remain marked unavailable rather than reconstructed.

Evidence sources

Coronado Springs

  • https://www.disneytouristblog.com/disneys-coronado-springs-resort-review/
  • https://wdwprepschool.com/coronado-springs-resort-review/
  • https://www.mousehacking.com/blog/disneys-coronado-springs-resort-review

Pop Century

  • https://www.disneytouristblog.com/pop-century-review/
  • https://wdwprepschool.com/pop-century-review/
  • https://www.mousehacking.com/blog/disney-pop-century-resort-review

Generalization trial: Bar Harbor Inn and itinerary context

Bar Harbor Inn: The Waterfront Base That Makes Bar Harbor Easier is the first trial outside the theme-park-adjacent category. The evidence schema changed accordingly: the review treats the hotel as one piece of a Bar Harbor and Acadia itinerary, with explicit attention to the Shore Path, downtown walkability, the Village Green transit hub, seasonal Island Explorer service, 2026 Cadillac Summit Road rules, and traveler-fit comparisons with five area hotels.

Evidence and images

  • Five bounded source packets covered the hotel, independent reviews, destination transportation, and competitor properties. One combined competitor extraction returned only a bare claim object; the workflow preserved that failure and retried as two smaller entity-specific packets.
  • The frozen ledger contains 105 rows: 94 supported facts, four stale/time-sensitive independent-review observations excluded from drafting, and seven explicitly labeled editorial judgments.
  • Five locally hosted Wikimedia Commons photographs illustrate the hotel, dining exterior, Shore Path, Agamont Park relationship, and Village Green. Four are CC BY-SA 4.0 and one is CC BY 4.0. Creator, source page, license, retrieval date, local hash, alt text, caption, and modification note are retained in the private provenance manifest and public credit lines.

What failed and how it recovered

The first local factual draft committed the category error this trial was designed to expose: it transferred competitor attributes onto Bar Harbor Inn, including Balance Rock’s 27-room scale and Atlantic Oceanside’s acreage, beach, and shuttle. That draft was rejected. Aura corrected the workflow boundary by tagging every fact with its hotel or regional subject and tightening the retry prompt; the recovered local factual draft no longer crossed entities. Aura did not rewrite the selected reader-facing prose, so the published post is the autonomous editorial artifact rather than an after-Aura prose revision.

The local Mistral editorial candidate reached 1,436 words but remained repetitive and list-driven. A bounded gpt-5.4-mini pass produced the selected 1,533-word candidate. One comparison section required a targeted retry because the first cloud version omitted Bar Harbor Grand and came in below its completeness target. A blind local Qwen judge ranked the cloud draft first, scoring it 9/10 for voice, usefulness, structure, non-promotional tone, and rhythm; the local candidate scored 4, 8, 7, 6, and 5 on the same dimensions.

Gemma extracted 42 factual claims from the final candidate with a deterministic verbatim-span gate. Its first five-claim validation batch returned only one bare object, so that validator failed closed. Qwen then adjudicated the 42 claims in seven bounded batches: all 42 were supported, none were contradicted or unsupported, and no validation rows were rejected. A separate whole-article Qwen comparison returned {"findings":[],"pass":true}.

Measured usage for the Bar Harbor trial

  • Local work: 29 calls; 99,697 input tokens; 34,376 output tokens; 134,073 total tokens; 2,980.759 aggregate wall seconds. This includes source extraction and recovery, two factual-draft attempts, nine Mistral section edits, the blind style judge, the Gemma extraction/failed batch check, seven Qwen claim batches, and the final Qwen whole-article pass.
  • Bounded cloud editorial work: 10 content calls, including one targeted retry; 128,945 input tokens; 1,538 output tokens; 104,960 cache-read tokens; 65.488 measured wall seconds. The route also recorded nine title-generation calls with 3,908 input and 156 output tokens.
  • Cost accounting: the cloud route recorded an incremental charge of $0 because it was subscription-included. This is not a claim that the model has a zero market API price.

This trial supports a narrower conclusion than “the system can write travel guides.” It shows that the hotel-review component can incorporate walkable surroundings, park transportation, and a bounded competitor set without relying on model memory, while also showing that entity separation becomes a first-class validation problem once multiple area hotels enter the same evidence packet.

Similar Posts