{"/apps/district":{"id":"app_a774d69c53b3ad9d8ba6","slug":"district","name":"District","description":"Movies, events and going-out journeys.","brandColor":"#e8452f","iconUrl":"https://www.flownato.com/design/icons/district.webp","categorySlug":"events","categoryName":"Events","platform":"Android","version":"2.61.1","lastRiddenAt":"2026-09-14T11:32:49.519709+00:00","releaseId":"90eac7d5-51c3-4431-a8f0-21e2afa0883c","knowledgeRevisionId":"knowledge_revision_import_expgraph_v_98d4d1360a6c4838b557ec9caa4b5e5f","counts":{"journeys":4,"screens":14,"elements":101},"journeys":[{"id":"journey_movies_guest_seat_selection","slug":"book-movie-tickets-0d981fe","title":"Book movie tickets","description":"The end-to-end cinema booking goal: enter Movies, pick a film, choose date/cinema/showtime, select seats, then confirm and pay. Guest evidence reaches seat selection; the payment leg is behind sign-in.","accentColor":"#2b59ff","appSlug":"district","appName":"District","brandColor":"#e8452f","appId":"app_a774d69c53b3ad9d8ba6","capturedAt":"2026-09-14T11:32:49.519709+00:00","userGoalStatus":"authentication_gate","variant":{"account_state":"guest_logged_out","locale":"en-IN","scenario":"single PRIME seat, one cinema and showtime, Bengaluru","entry_mode":"app_home_movies_tab","persona_ref":null},"goal":"Choose a film, showtime and seat and pay for cinema tickets.","boundary":{"kind":"human_gate","rationale":"Judged independently of the episode's final Dining boundary. occ_9b0dce126d4f539c6474b059 is the 'Log in or sign up' sheet presented over the seat map after Proceed was tapped — the screen THIS Movies flow actually reached, hence human_gate and no completion frame. occ_b2b78f9dfabe0274caccc020 shows that same sheet over the same seat map a second time and is the deliberate second capture from which Back was pressed, so it is confirmation, not a step. occ_8524f706e72cd2c9ddef6dff is the post-Back seat map with the sheet gone — recovery only, never an endpoint. This walk retreated from Movies mid-session and later reached Dining, so the two journeys stop at different gates."},"releaseId":"90eac7d5-51c3-4431-a8f0-21e2afa0883c","taxonomy":[{"name":"Booking movie tickets","role":"primary","termKey":"commerce_finance.booking_reserving.movie","parentTermKey":"commerce_finance.booking_reserving"}],"primaryTaxonomy":{"name":"Booking movie tickets","role":"primary","termKey":"commerce_finance.booking_reserving.movie","parentTermKey":"commerce_finance.booking_reserving"},"flowPatterns":[{"name":"Booking movie tickets","role":"primary","termKey":"commerce_finance.booking_reserving.movie","parentTermKey":"commerce_finance.booking_reserving"}],"catalogRole":"primary","journeyFamilyId":"family_movie_ticket_booking","familyName":"Book movie tickets","familyGoal":"Choose a film, showtime and seat and pay for cinema tickets.","familySummary":"The end-to-end cinema booking goal: enter Movies, pick a film, choose date/cinema/showtime, select seats, then confirm and pay. Guest evidence reaches seat selection; the payment leg is behind sign-in.","parentJourneyFamilyId":null,"parentJourneyFamilyIds":[],"isFree":true,"captureStatus":"complete","screenCount":6,"previewCount":3,"lockedScreenCount":3,"previewScreens":["/api/v1/assets/product_asset_d57020f13d83f0e8fb35d60b","/api/v1/assets/product_asset_782275e7b00ecbfe8e6f9a0a","/api/v1/assets/product_asset_eb71875268669cc0c7bd8e2e"],"previewLabels":["Choose Movies on app home","Browse now-showing movies","Movie page with Book tickets"],"routeSlug":"book-movie-tickets","canonicalPath":"/flows/district/book-movie-tickets","branches":[],"anchoredUtilities":[],"connections":[],"variants":[]},{"id":"journey_events_guest_ticket_checkout_gate","slug":"buy-event-tickets-984bc34","title":"Buy event tickets","description":"The event ticketing goal: browse Events, open an event, select date/time and ticket tier with quantity, then check out. Guest evidence reaches an enabled Checkout with one ₹100 cover ticket in the cart.","accentColor":"#009a66","appSlug":"district","appName":"District","brandColor":"#e8452f","appId":"app_a774d69c53b3ad9d8ba6","capturedAt":"2026-09-14T11:32:49.519709+00:00","userGoalStatus":"authentication_gate","variant":{"account_state":"guest_logged_out","locale":"en-IN","scenario":"one cover ticket, single date and time slot, Bengaluru","entry_mode":"events_landing","persona_ref":null},"goal":"Find an event and buy tickets for a chosen date, time and ticket tier.","boundary":{"kind":"human_gate","rationale":"occ_ab2314517f9ef0c19baf1ed4 is the loaded ticket surface (one ticket, running total, Checkout enabled) and Checkout landed on occ_ae9deeeb3cfac643710e142a, the 'Log in or sign up' sheet with a phone field, disabled Continue and a linked-account option — an auth wall, so human_gate and no completion frame: no order confirmation or ticket exists in the evidence. occ_654015198ef4902278abb044 and occ_38fb0f6c6797299bdfc142ef are the ticket surface restored after the escape Back; recovery only, never the endpoint. No second capture of the gate exists in this walk, so confirmation stays null rather than being invented."},"releaseId":"90eac7d5-51c3-4431-a8f0-21e2afa0883c","taxonomy":[{"name":"Booking event tickets","role":"primary","termKey":"commerce_finance.booking_reserving.event","parentTermKey":"commerce_finance.booking_reserving"}],"primaryTaxonomy":{"name":"Booking event tickets","role":"primary","termKey":"commerce_finance.booking_reserving.event","parentTermKey":"commerce_finance.booking_reserving"},"flowPatterns":[{"name":"Booking event tickets","role":"primary","termKey":"commerce_finance.booking_reserving.event","parentTermKey":"commerce_finance.booking_reserving"}],"catalogRole":"primary","journeyFamilyId":"family_event_ticket_booking","familyName":"Buy event tickets","familyGoal":"Find an event and buy tickets for a chosen date, time and ticket tier.","familySummary":"The event ticketing goal: browse Events, open an event, select date/time and ticket tier with quantity, then check out. Guest evidence reaches an enabled Checkout with one ₹100 cover ticket in the cart.","parentJourneyFamilyId":null,"parentJourneyFamilyIds":[],"isFree":true,"captureStatus":"complete","screenCount":5,"previewCount":3,"lockedScreenCount":2,"previewScreens":["/api/v1/assets/product_asset_635e409858996509f5c181cb","/api/v1/assets/product_asset_2b2910f58d29ccc30320f37f","/api/v1/assets/product_asset_e011d85f1e6175a02bb16604"],"previewLabels":["Browse featured events","Event page with Book tickets","Choose date, time and ticket"],"routeSlug":"buy-event-tickets","canonicalPath":"/flows/district/buy-event-tickets","branches":[],"anchoredUtilities":[],"connections":[],"variants":[]},{"id":"journey_dining_guest_book_a_table_gate","slug":"book-a-restaurant-table-cf660c0","title":"Book a restaurant table","description":"The dining reservation goal only: configure booking preferences (party size, date, time), read the loaded availability slots and select one. Guest evidence stops at the phone/OTP sign-in sheet raised on slot selection — before the booking form and before any reservation confirmation. Discovery is now published separately as family_restaurant_discovery.","accentColor":"#e8452f","appSlug":"district","appName":"District","brandColor":"#e8452f","appId":"app_a774d69c53b3ad9d8ba6","capturedAt":"2026-09-14T11:32:49.519709+00:00","userGoalStatus":"authentication_gate","variant":{"account_state":"guest_logged_out","locale":"en-IN","scenario":"4 guests, next day, 12:30 PM slot","entry_mode":"dining_collection_listing","persona_ref":null},"goal":"Reserve a table at a restaurant for a chosen party size, date and time.","boundary":{"kind":"human_gate","rationale":"Tapping an available table slot raises the log-in / OTP bottom sheet (occ_4e1f59fbd67cce9a18e29813) before any booking form is shown, so the user goal is authentication-gated and never completed — no reservation confirmation exists anywhere in the evidence and completion_occurrence_id stays null. occ_a72e359bb17c519b4c1dcf35 is a deliberate second capture of that same gate. The two frames after the mandatory Back escape (occ_ba7570b8b8c15f10e298efa5, occ_96636735e6c5a7b8be8399df) are the availability-filtered listing again — retreat evidence only, never the endpoint. The restaurant-page 'Book a table' entry earlier in the same episode reaches the identical gate and is preserved in the episode trace as an entry variant rather than a duplicate journey."},"releaseId":"90eac7d5-51c3-4431-a8f0-21e2afa0883c","taxonomy":[{"name":"Reserving a table","role":"primary","termKey":"commerce_finance.booking_reserving.table","parentTermKey":"commerce_finance.booking_reserving"}],"primaryTaxonomy":{"name":"Reserving a table","role":"primary","termKey":"commerce_finance.booking_reserving.table","parentTermKey":"commerce_finance.booking_reserving"},"flowPatterns":[{"name":"Reserving a table","role":"primary","termKey":"commerce_finance.booking_reserving.table","parentTermKey":"commerce_finance.booking_reserving"}],"catalogRole":"primary","journeyFamilyId":"family_restaurant_table_booking","familyName":"Book a restaurant table","familyGoal":"Reserve a table at a restaurant for a chosen party size, date and time.","familySummary":"The dining reservation goal only: configure booking preferences (party size, date, time), read the loaded availability slots and select one. Guest evidence stops at the phone/OTP sign-in sheet raised on slot selection — before the booking form and before any reservation confirmation. Discovery is now published separately as family_restaurant_discovery.","parentJourneyFamilyId":null,"parentJourneyFamilyIds":[],"isFree":true,"captureStatus":"complete","screenCount":5,"previewCount":3,"lockedScreenCount":2,"previewScreens":["/api/v1/assets/product_asset_2aa251f0251589551b6fe41f","/api/v1/assets/product_asset_8c23e11dd38c548dd7c850f6","/api/v1/assets/product_asset_ca0009486ca40c2576db1d37"],"previewLabels":["Open date, time and guests","Booking preferences sheet","Search table availability"],"routeSlug":"book-a-restaurant-table","canonicalPath":"/flows/district/book-a-restaurant-table","branches":[],"anchoredUtilities":[],"connections":[],"variants":[]},{"id":"journey_dining_discover_restaurants","slug":"discover-restaurants-75e2eb0","title":"Discover restaurants","description":"The dining discovery goal, separate from reserving a table: enter Dining, browse the mood-based collections, open a collection listing of bookable restaurants and land on a restaurant page with menu, photos and booking entry. Guest evidence completes this goal end to end — no sign-in is required to discover.","accentColor":"#eda400","appSlug":"district","appName":"District","brandColor":"#e8452f","appId":"app_a774d69c53b3ad9d8ba6","capturedAt":"2026-09-14T11:32:49.519709+00:00","userGoalStatus":"completed","variant":{"account_state":"guest_logged_out","locale":"en-IN","scenario":"mood-tile discovery into one collection listing","entry_mode":"app_home_dining_tab","persona_ref":null},"goal":"Browse the dining vertical and reach a restaurant's page.","boundary":{"kind":"safe_product_boundary","rationale":"Discovery is a goal a logged-out guest can finish: no gate is met anywhere on this path. The restaurant page (occ_2cca10cffb01f2c553d01732) is the visible outcome of discovering a restaurant — the venue's own product surface, fully loaded, showing menu, photos, offers and a booking entry — so it is a safe product boundary and the cited completion frame. This journey deliberately stops BEFORE any booking CTA: everything from 'Book a table' onwards is the separate, gated journey_dining_guest_book_a_table_gate. No second capture of this page exists in the walk, so confirmation stays null rather than being invented."},"releaseId":"90eac7d5-51c3-4431-a8f0-21e2afa0883c","taxonomy":[{"name":"Browsing & discovering","role":"primary","termKey":"content.browsing_discovering","parentTermKey":"content"}],"primaryTaxonomy":{"name":"Browsing & discovering","role":"primary","termKey":"content.browsing_discovering","parentTermKey":"content"},"flowPatterns":[{"name":"Browsing","role":"primary","termKey":"content.browsing_discovering","parentTermKey":"content"}],"catalogRole":"primary","journeyFamilyId":"family_restaurant_discovery","familyName":"Discover restaurants","familyGoal":"Browse the dining vertical and reach a restaurant's page.","familySummary":"The dining discovery goal, separate from reserving a table: enter Dining, browse the mood-based collections, open a collection listing of bookable restaurants and land on a restaurant page with menu, photos and booking entry. Guest evidence completes this goal end to end — no sign-in is required to discover.","parentJourneyFamilyId":null,"parentJourneyFamilyIds":[],"isFree":false,"captureStatus":"complete","screenCount":4,"previewCount":3,"lockedScreenCount":1,"previewScreens":["/api/v1/assets/product_asset_06bc9c24c9bda42d192df425","/api/v1/assets/product_asset_75107289466754365eefc26b","/api/v1/assets/product_asset_d736e37e73d10f30cc303003"],"previewLabels":["Choose Dining on app home","Browse dining collections","Choose a restaurant"],"routeSlug":"discover-restaurants","canonicalPath":"/flows/district/discover-restaurants","branches":[],"anchoredUtilities":[],"connections":[],"variants":[]}],"utilities":[],"subflows":[],"unplacedSubflows":[],"animations":[]}}