Study status: controlled synthetic experiment App status after the experiment: owner-visible sample; excluded from public app discovery What this demonstrates: Blue Jetty transforms publisher-authorized selection metadata into an efficient, attributable machine-retrieval surface. When an LLM discovers an app through Blue Jetty, it receives explicit app and experience context alongside publisher preferences and destinations.

Swell Atlas is a fictional mobile surfing app created to exercise the complete Blue Jetty publisher and crawler path without using customer data. Every app name, place, event, forecast, destination, and domain in the source snapshot is synthetic.

This document publishes the method and findings. The underlying app record is retained as sample data so authenticated owners can continue testing it, but Blue Jetty does not expose it through public app pages, search, exports, feeds, or sitemaps.

The question

The compact app-representation example contains one capability, one intent and one destination, with retained configuration 0.4 JSON and an illustrative same-query recommendation. For a new implementation, use configuration 0.5. The historical 20-record exercise below is intentional named-entity enrichment, not an onboarding minimum. Its records and experiment evidence remain unchanged.

What additional context can a retrieval-augmented language model receive when a mobile app publishes a small, structured map of what exists inside it?

The test focused on whether a machine could answer four practical questions:

  1. What app and in-app entities exist?
  2. Which entity best matches a user's constraints?
  3. How current and attributable is the record?
  4. Which iOS, Android, or web destination should receive the user?

The submitted catalog

The profile 0.1 submission identified one fictional iOS/Android app, one developer-authoritative push feed, and a complete snapshot containing:

  • 20 stable entities;
  • 60 destinations: one iOS Universal Link, one Android App Link, and one web fallback per entity;
  • 8 surf spots;
  • 4 training sessions;
  • 4 evergreen guides plus 1 forecast brief;
  • 3 community events;
  • typed attributes, explicit units, availability, source-modification times, relationships, and namespaced surfing extensions.

The publisher supplied claims about its own fictional inventory. Blue Jetty supplied normalization, provenance presentation, freshness assessment, publication state, routing projections, and the evaluated trust, verification, relevance, and destination-health context around those claims.

The selection boundary in raw JSON

The publisher shared enough information for a machine to recognize Pelican Sands as a plausible beginner surf destination, compare it with other records, and open the selected experience. The complete forecast, live conditions, interactive map, and proprietary spot guide remained inside Swell Atlas.

This is the exact synthetic Pelican Sands entity submitted during the experiment:

{
  "specVersion": "0.1",
  "id": "break-pelican-sands",
  "type": "other",
  "nativeType": "surf_spot",
  "name": "Pelican Sands",
  "summary": "Synthetic mellow beach break with multiple peaks, soft shoulders, and a broad learning zone.",
  "updatedAt": "2026-09-04T04:30:00Z",
  "language": "en-US",
  "canonicalUrl": "https://swellatlas.example/breaks/pelican-sands",
  "schemaTypes": ["https://schema.org/Place"],
  "attributes": {
    "breakType": { "value": "beach_break", "vocabulary": "com.example.swellatlas/break-type" },
    "skillLevel": { "value": "beginner", "vocabulary": "com.example.swellatlas/skill-level" },
    "preferredTide": { "value": "low_to_mid", "vocabulary": "com.example.swellatlas/tide" },
    "swellDirection": { "value": ["west", "southwest"], "vocabulary": "com.example.swellatlas/direction" },
    "typicalWaveHeight": { "value": 2, "unit": "foot" },
    "amenities": { "value": ["parking", "showers", "board_rental"], "vocabulary": "com.example.swellatlas/amenity" }
  },
  "availability": { "status": "available", "regions": ["US"] },
  "destinations": [
    { "id": "pelican-ios", "url": "https://swellatlas.example/breaks/pelican-sands", "kind": "universal_link", "platform": "ios", "priority": 300, "fallbackDestinationId": "pelican-web" },
    { "id": "pelican-android", "url": "https://swellatlas.example/breaks/pelican-sands", "kind": "android_app_link", "platform": "android", "priority": 300, "fallbackDestinationId": "pelican-web" },
    { "id": "pelican-web", "url": "https://swellatlas.example/breaks/pelican-sands", "kind": "web", "platform": "any", "priority": 100 }
  ],
  "extensions": {
    "com.example.swellatlas/surf": { "crowdTendency": "moderate", "bottom": "sand", "synthetic": true }
  }
}

The record is an invitation into the product, not a copy of the product. It tells a retrieval system what the app contains, which selection attributes support the match, when the assertion changed, and which native or web destination should receive the user.

The end-to-end path

  1. POST /v1/validate parsed the same request shape used for mutation and returned a normalized preview without writing data.
  2. POST /v1/submissions resolved stable app/source identities and ingested the full snapshot idempotently.
  3. Blue Jetty normalized each record while retaining its publisher identity, raw hash, source time, and feed provenance.
  4. Public projections exposed sparse HTML, JSON-LD, JSON, JSONL, search documents, and sitemap URLs.
  5. A crawler could discover the app, enumerate the inventory, retrieve individual entities, compare typed attributes, and select a platform-specific destination.
  6. The synthetic handoff rehearsal combined Pelican Sands with the developer's representation instructions, a single promotion blurb, a fictional AppsFlyer OneLink, app stores, and direct entity destinations.
  7. After the controlled study, a new full snapshot set publication.visibility to sample. The owner record and ingestion history remained; the public projections were withdrawn.

The synthetic qualified-handoff response

For the question “What app can help a beginner find a mellow surf spot?”, the retained rehearsal selects Pelican Sands from its selection attributes and combines it with app-level publisher context. The fictional ChatGPT-shaped request produces this bounded response:

{
  "app": { "name": "Swell Atlas" },
  "entity": {
    "nativeEntityId": "break-pelican-sands",
    "title": "Pelican Sands",
    "summary": "Synthetic mellow beach break with multiple peaks, soft shoulders, and a broad learning zone."
  },
  "publisherInstructions": "Explain why Swell Atlas fits the request, then send the user through the preferred link. Use the entity handoff for a specific surf spot.",
  "currentPromotion": {
    "blurb": "New members save 20% on the first year."
  },
  "recommended": {
    "baseUrl": "https://swellatlas.onelink.me/demo/pelican-sands?pid=publisher_source",
    "operator": "appsflyer",
    "consumer": "chatgpt",
    "verificationState": "declared",
    "parameters": {
      "pid": "publisher_source",
      "c": "bluejetty_launch",
      "af_channel": "ai_assistant"
    }
  },
  "fallbacks": {
    "entity": "https://swellatlas.example/breaks/pelican-sands",
    "iosStore": "https://apps.apple.com/us/app/swell-atlas/id000000000",
    "androidStore": "https://play.google.com/store/apps/details?id=com.example.swellatlas.android"
  }
}

The existing publisher value pid=publisher_source is preserved. Only absent, configured fields are added. The consumer remains declared because a public query parameter cannot authenticate a provider.

The deterministic rehearsal covers installed iOS, installed Android, unknown installation state, provider-link removal with store fallback, promotion removal, and continued sample isolation. It does not convert the fictional URLs into device evidence; production publishers use the real-device acceptance checklist with their authorized application and MMP reporting.

What a model could learn during the controlled public window

App and catalog identity

A model could identify Swell Atlas as a synthetic mobile surfing guide from the fictional publisher Swell Atlas Labs, recognize its iOS and Android identities, see that one authoritative feed supplied the catalog, and count the exposed entity mix.

This is materially different from recognizing only an app name, icon, broad category, star rating, or store-description paragraph. It gives the consumer a bounded inventory rather than forcing it to guess what may exist behind the install button.

Stable things inside the app

The test made 20 named records addressable and typed. Those records included Moonstone Point, Blue Lantern Reef, Pelican Sands, Copper Cove, Starfish Banks, Whispering Kelp, Sunset Arches, Glasshouse Peak, Pop-Up Foundations, Duck Dive Clinic, Paddle Power 30, Bottom Turn Lab, How to Read Swell Period, Choosing Your First Mid-Length, Finding Offshore Wind Windows, Cold-Water Surf Kit Checklist, Dawn Patrol Social, Field Board Repair Workshop, Beach Cleanup and Paddle-Out, and Weekend Long-Period Swell Window.

The names alone are not the useful part. Each record also carried a stable publisher ID, a content/native type, a concise selection summary, a source timestamp, availability, and destinations. A consumer could synchronize updates without treating mutable titles or URLs as identity.

Constraints that support real selection

Surf-spot records expressed break type, skill level, preferred tide, swell direction, representative wave height, and selected details such as hazards, wind protection, board types, or amenities. Training records expressed duration, skill level, equipment, and focus. Guides expressed reading time and topics. Events expressed time, duration, capacity, skill level, and equipment. The forecast brief expressed its validity window, swell direction, period, confidence, and relationships to recommended breaks.

Values such as 4 foot, 30 minute, 52 degree_fahrenheit, and 16 second remained typed values with explicit units. Vocabulary-backed values such as reef_break, advanced, and northwest remained machine-comparable instead of being trapped in prose.

Provenance, time, and authority boundaries

A consumer could distinguish the developer-authoritative source assertion from Blue Jetty's evaluated fields. It could see source update time, ingestion time, provenance, verification state, and freshness state without assuming that the publisher certified its own trustworthiness.

This permits a careful answer such as “the publisher's catalog describes this record as beginner-friendly and Blue Jetty received it at this time,” rather than flattening every field into an unattributed fact.

Relationships and destinations

The forecast brief linked explicitly to Moonstone Point and Glasshouse Peak through recommended_break relationships. Every entity supplied ordered iOS, Android, and web destinations. A retrieval system could therefore return both the selected item and an appropriate handoff rather than ending at a generic store page.

Destination metadata described routing intent, while Blue Jetty's separate destination observations provide the place to attach current resolution status.

Simulated questions and evidence-bounded answers

“Which record is intended for a beginner looking for a mellow learning break?”

Answer: Pelican Sands. Its publisher record combined skillLevel=beginner, a two-foot representative wave height, a mellow beach-break summary, and amenities including parking, showers, and board rental. Copper Cove was another plausible result for a beginner-to-intermediate user who prioritized wind shelter.

“Which records suit an advanced surfer looking for a reef break?”

Answer: Blue Lantern Reef and Whispering Kelp. Both combined breakType=reef_break with skillLevel=advanced; both also disclosed hazards that a useful answer can preserve alongside the recommendation.

“What option is described as sheltered when open beaches are blown out?”

Answer: Copper Cove. Its selection summary described a sheltered cove, and its structured attributes included north-wind protection.

“What training can help with paddle endurance?”

Answer: Paddle Power 30. The record described a 30-minute, all-levels session with endurance, shoulder, and core focus. A consumer could also distinguish Pop-Up Foundations, Duck Dive Clinic, and Bottom Turn Lab by their different goals, durations, skill levels, and equipment.

“What does the weekend forecast brief recommend?”

Answer: Moonstone Point and Glasshouse Peak. The relationship graph named both breaks, while the forecast record supplied a west/northwest swell, 16-second period, moderate confidence, and a bounded validity window.

“Does the app contain instruction, equipment help, or events?”

Answer: Yes. The catalog exposed forecast education, board selection, wind interpretation, cold-water equipment, three dated community events, and four training sessions. That breadth would not be reliably inferable from a conventional app-store category alone.

Before and after Blue Jetty

Before: ordinary app-discovery evidence

  • A store listing could describe the app at a category level but not enumerate a current catalog.
  • A crawler might discover disconnected marketing pages without stable cross-platform entity identity.
  • Typed constraints, units, availability, and relationships would be inconsistent or absent.
  • A model would have to infer whether a result represented an in-app item, a web article, a destination, or merely marketing copy.
  • A useful answer would often end at a home page or store listing instead of the selected in-app experience.

With the Blue Jetty projection

  • One app identity connected to a complete, versioned entity inventory.
  • Sparse machine records carried stable IDs, types, summaries, attributes, time, provenance, and availability.
  • Search and feeds exposed the same normalized meaning in complementary retrieval shapes.
  • JSON-LD made the visible entity page legible to web tooling.
  • Sitemaps made app and entity URLs enumerable.
  • Ordered native and web destinations let a consumer preserve the selected entity through handoff.

Blue Jetty replaces a high-friction guessing problem with a direct, attributable retrieval path.

Observed technical access

During the public test window, the app API and 20-entity feed returned HTTP 200. The master sitemap linked a 21-URL app sitemap. Representative searches returned relevant records. The Pelican Sands page exposed visible entity text, publisher provenance, and JSON-LD.

The same entity HTML and JSON-LD were readable through ordinary requests and the crawler identities used by major search and assistant providers. This means that when one of those systems discovers a Blue Jetty URL, it can receive the same structured app, entity, source, freshness, and destination context shown in this study.

How the sample is isolated after the study

The retained submission uses:

{
  "publication": {
    "publicSelectionMetadata": false,
    "visibility": "sample"
  }
}

This publication state is separate from onboarding state. Swell Atlas can remain onboarded because it has a source, successful updates, and current inventory while also remaining non-public because it is a sample.

For a sample app, Blue Jetty:

  • retains the app, source, entities, destinations, run history, and status for the authenticated owner;
  • marks all current entities unpublished on every ingestion path;
  • omits the app and entities from the public app list, search, aggregate export, feeds, and sitemaps;
  • returns the same public 404 used for a missing app rather than revealing private sample state;
  • adds X-Robots-Tag: noindex, nofollow, noarchive to public API 404 responses;
  • shows a sample · private state in the owner dashboard.

Removal from the sitemap plus public 404 responses gives search engines a clean recrawl and removal signal while keeping the test catalog available to its owner.

Reproduce the pattern with your own authorized data

Use the publisher quickstart, complete endpoint reference, OpenAPI contract, and publisher lifecycle guide. Validate before mutation, submit only authorized selection metadata, and use sample visibility until a corpus is reviewed for public release.