{
  "checked_at_utc": "2026-10-20T03:16:48.138997+00:00",
  "geography": "Mission District and Mission Dolores, San Francisco",
  "sources_reviewed": 20,
  "counting_note": "Each publisher or platform counted once. Mission Local RSS, JSON, articles and ICS are one source. Organized sources can overlap in the same underlying activity.",
  "method": "Repeated direct public HTTP and parsed response inspection for known open sources; current primary docs for credentialed platforms; prior social audit retained as evidence. No logins, outreach, authentication bypass or new check-ins.",
  "scores_are_not_accuracy_metrics": true,
  "composite_score": null,
  "rubric": {
    "repeatable_access": {
      "0": "No dependable supported aggregation route established.",
      "1": "Documented but not tested, mixed failures, or research-only/manual route.",
      "2": "Usable public HTML or feed capability with remaining collector work.",
      "3": "Public structured response parsed in repeated checks."
    },
    "mission_relevance": {
      "0": "No local applicability established.",
      "1": "City/platform relevance plausible; Mission yield unmeasured.",
      "2": "SF-wide or mixed geography with some Mission evidence or filtering.",
      "3": "Mission-specific publisher, venue or observed source."
    },
    "informal_or_recurrence_signal": {
      "0": "No activity signal, context/proxy only.",
      "1": "Indirect or plausible but local informal yield untested.",
      "2": "Mixed community/formal activities or observed groups with unclear joinability.",
      "3": "Explicit casual/drop-in/recurring participation or firsthand habitual reports."
    },
    "capture_freshness": {
      "0": "No suitable local capture evidence, or announcements/proxies only.",
      "1": "Historical/occasional observations with unvalidated capture time.",
      "2": "Repeatable local recent observations with useful capture metadata, still unvalidated.",
      "3": "Local near-real-time capture timestamps independently validated."
    }
  },
  "interpretation": "A zero capture-freshness score is not a claim that a scheduled source is stale. It means the source does not demonstrate when human activity was captured. No source earned 2 or 3 in this dimension.",
  "launch_shortlist": [
    "mission-local",
    "ruths-table",
    "sf-chess-club",
    "precita-eyes",
    "paseo-artistico",
    "mission-loteria",
    "foodwise-mcm",
    "partiful"
  ],
  "next_route_checks": [
    "luma",
    "sf-recpark-mission",
    "red-poppy-mapp"
  ],
  "context_only": [
    "bay-wheels",
    "sf-mobile-food"
  ],
  "yield_experiments": [
    "bluesky",
    "youtube"
  ],
  "not_launch_dependencies": [
    "x",
    "reddit",
    "flickr",
    "instagram",
    "snap-map"
  ],
  "raw_probe_file": "source-probes.json",
  "sources": [
    {
      "id": "mission-local",
      "name": "Mission Local",
      "url": "https://missionlocal.org/",
      "collection_route": "Events JSON, RSS, ICS and articles. Treat these as one publisher.",
      "access_status": "tested_structured",
      "signal_classes": [
        "announced",
        "habitual_report",
        "historical_observation"
      ],
      "scores": {
        "repeatable_access": 3,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 1
      },
      "score_reasons": {
        "repeatable_access": "Events JSON fetched again; prior RSS and ICS tests also parsed successfully.",
        "mission_relevance": "Mission neighborhood publisher with local venues.",
        "informal_or_recurrence_signal": "Mixture of performances, civic events, classes and occasional small community activities.",
        "capture_freshness": "Photo reports can show past activity; source publication does not establish capture time."
      },
      "verification": {
        "endpoint": "https://missionlocal.org/wp-json/tribe/events/v1/events?per_page=3&start_date=2026-10-19",
        "parsed": true,
        "returned": 3,
        "total_reported": 140,
        "caveat": "140 is publisher inventory, not filtered Mission informal activities.",
        "prior_evidence": "../mission-observed-social-2026-10-19/audit.json",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Geographic filter, event deduplication, source attribution, compare modifications and cancellations."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "ruths-table",
      "name": "Ruth's Table",
      "url": "https://www.ruthstable.org/schedule",
      "collection_route": "Public Squarespace JSON and per-event ICS.",
      "access_status": "tested_structured",
      "signal_classes": [
        "announced",
        "recurring_schedule"
      ],
      "scores": {
        "repeatable_access": 3,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "JSON parsed in this and prior pass; individual ICS already verified.",
        "mission_relevance": "Named Mission venue and adjacent Bethany Center rooms.",
        "informal_or_recurrence_signal": "Explicit free drop-in art, poetry and participatory music recurrence.",
        "capture_freshness": "Schedules do not establish attendance."
      },
      "verification": {
        "endpoint": "https://www.ruthstable.org/schedule?format=json",
        "upcoming_records": 45,
        "prior_evidence": "../mission-activity-sample-2026-10-19/organizer-candidates.json",
        "conflicts_observed": [
          "Chair Yoga header and ICS list Oct22 while description cancels it.",
          "Sound in the Round has conflicting end times and entrance addresses."
        ],
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Read descriptions as well as structured fields; suppress cancellation conflicts; exclude virtual sessions."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "sf-chess-club",
      "name": "SF Chess Club",
      "url": "https://sfchess.club/",
      "collection_route": "Public organizer HTML links to Partiful; use organizer event pages for sessions.",
      "access_status": "tested_html",
      "signal_classes": [
        "announced",
        "recurring_group"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Public HTML fetched and inspected; homepage is a small directory, not a session feed.",
        "mission_relevance": "Prior Dolores Park invitations found but club also meets elsewhere.",
        "informal_or_recurrence_signal": "Explicit casual chess, friends and all skill levels.",
        "capture_freshness": "Invitation is not observed game attendance."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "homepage_text": "Come play some chess, make friends, and learn new moves! All skill levels are welcome.",
        "prior_evidence": "../mission-activity-sample-2026-10-19/informal-candidates.json",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Follow exact event links, keep only Mission sessions, distinguish ongoing group from particular park session."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "precita-eyes",
      "name": "Precita Eyes Muralists",
      "url": "https://www.precitaeyes.org/events.html",
      "collection_route": "Public event and program HTML, linked flyer images and newsletters.",
      "access_status": "tested_html",
      "signal_classes": [
        "announced",
        "recurring_program",
        "historical_recap"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 1
      },
      "score_reasons": {
        "repeatable_access": "Public event HTML fetched; no stable machine feed verified.",
        "mission_relevance": "Mission mural organization with local street and studio use.",
        "informal_or_recurrence_signal": "Friday Night Socials and workshops provide leads, alongside festivals and tours.",
        "capture_freshness": "Some recaps are historical; capture time generally unstated."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "observed_sections": [
          "Friday Night Socials",
          "Urban Youth Arts Festival",
          "Newsletters"
        ],
        "caveat": "Homepage mixes old and new programs; no future session count claimed.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Date extraction and stale content filtering; OCR flyers when needed; age and joinability checks."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "paseo-artistico",
      "name": "Paseo Artistico / Accion Latina",
      "url": "https://www.paseoartistico.org/",
      "collection_route": "Public program HTML and linked flyers.",
      "access_status": "tested_html",
      "signal_classes": [
        "announced",
        "recurring_program"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Public HTML fetched and readable; prior advertised RSS had no items.",
        "mission_relevance": "Calle24 Mission cultural district and Harrison/24th street venues.",
        "informal_or_recurrence_signal": "Quarterly arts network and street programs, though many are organized festivals.",
        "capture_freshness": "Program announcements do not confirm activity now."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "latest_visible_program": "October 10, 2026 anniversary block party,11 am-6 pm, Harrison between 23rd and 24th",
        "caveat": "Latest visible program is past as of review.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Do not synthesize weekly recurrence from quarterly program; obtain next dated program when published."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "mission-loteria",
      "name": "Mission Loteria",
      "url": "https://mission-loteria.com/events",
      "collection_route": "Public events HTML with structured event metadata.",
      "access_status": "tested_html",
      "signal_classes": [
        "announced",
        "recurring_group"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Events HTML fetched, prior structured detail inspected.",
        "mission_relevance": "Mission-branded publisher includes out-of-neighborhood locations such as928 Geneva.",
        "informal_or_recurrence_signal": "Game nights, scavenger hunts and small community activities.",
        "capture_freshness": "These are planned sessions."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "visible_inventory_label": 25,
        "caveat": "Inventory count is publisher label, not 25 verified Mission activities.",
        "prior_evidence": "../mission-activity-sample-2026-10-19/organizer-mission-loteria-structured-raw.json",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Geocode every venue; respect listing/summary conflicts; neighborhood filter."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "foodwise-mcm",
      "name": "Foodwise Mission Community Market",
      "url": "https://foodwise.org/markets/mission-community-market/music/",
      "collection_route": "Public market and musician schedule HTML.",
      "access_status": "tested_html",
      "signal_classes": [
        "announced",
        "recurring_schedule"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "HTML fetched and inspected today; earlier direct fetch returned403, so monitor access.",
        "mission_relevance": "Explicit Mission Community Market.",
        "informal_or_recurrence_signal": "Recurring weekly public music and market use.",
        "capture_freshness": "Scheduled performance, not attendance."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "recurrence_text": "Thursdays, market open 3-7 pm",
        "schedule_label": "2026 Live Music Schedule",
        "caveat": "Schedule says subject to change.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Season boundaries, performer-specific times and exceptions; no crowd inference."
      ],
      "mvp_decision": "collect_first",
      "publisher_or_platform_count": 1
    },
    {
      "id": "red-poppy-mapp",
      "name": "Red Poppy Art House / MAPP",
      "url": "https://redpoppyarthouse.org/event/october-3rd-mapp/",
      "collection_route": "Public event pages and distributed program flyers; automated route unresolved.",
      "access_status": "browser_readable_direct_blocked",
      "signal_classes": [
        "announced",
        "recurring_program"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Direct GET 406; web reader exposes meaningful program HTML. Repeatable collector not verified.",
        "mission_relevance": "MAPP maps Mission gardens, garages, corners and art spaces.",
        "informal_or_recurrence_signal": "Strong informal multi-space arts activity signal.",
        "capture_freshness": "Announcement does not establish actual attendance."
      },
      "verification": {
        "http_status_direct": 406,
        "web_reader_body_inspected": true,
        "caveat": "October 3 program is past; next dated program needed for upcoming card.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Acquire stable supported feed or permitted page route; normalize changing venues."
      ],
      "mvp_decision": "manual_discovery_until_route_resolved",
      "publisher_or_platform_count": 1
    },
    {
      "id": "partiful",
      "name": "Partiful public SF discovery",
      "url": "https://partiful.com/explore/sf",
      "collection_route": "Public discovery and individual event HTML. No official neighborhood discovery API verified.",
      "access_status": "tested_html",
      "signal_classes": [
        "announced",
        "public_invitation"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Discovery HTML fetched and meaningful; prior individual event payloads parsed.",
        "mission_relevance": "SF feed includes verified Mission sessions but also regional events.",
        "informal_or_recurrence_signal": "Social games, swaps and park meetups can be strongly relevant.",
        "capture_freshness": "Interested and RSVP counts are not people present."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "prior_evidence": "../mission-activity-sample-2026-10-19/informal-partiful-data.json",
        "caveat": "Do not treat private or approval-gated details as public.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "HTML changes, venue visibility, official reuse terms and rate limits; dedup organizer reposts."
      ],
      "mvp_decision": "collect_selected_public_pages",
      "publisher_or_platform_count": 1
    },
    {
      "id": "luma",
      "name": "Luma SF and organizer calendars",
      "url": "https://luma.com/sf",
      "collection_route": "Public discovery HTML; official city and organizer iCal subscriptions documented.",
      "access_status": "tested_html_feed_not_acquired",
      "signal_classes": [
        "announced",
        "recurring_group"
      ],
      "scores": {
        "repeatable_access": 2,
        "mission_relevance": 1,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "SF HTML fetched; official feed capability verified but actual subscription feed not acquired.",
        "mission_relevance": "SF-wide feed observed, no Mission yield measured in this pass.",
        "informal_or_recurrence_signal": "Creative and community meetups mixed with much technology and professional content.",
        "capture_freshness": "Scheduled event only."
      },
      "verification": {
        "http_status": 200,
        "body_inspected": true,
        "official_docs": "https://help.luma.com/p/ical-syncing",
        "feed_status": "Documented, URL not fetched or parsed.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Acquire city or selected organizer subscription URL, parse ICS, geographic filter, monitor cancellations."
      ],
      "mvp_decision": "acquire_feed_next",
      "publisher_or_platform_count": 1
    },
    {
      "id": "sf-recpark-mission",
      "name": "SF Recreation and Parks Mission Recreation Center",
      "url": "https://www.sfrecpark.org/Facilities/Facility/Details/Mission-Rec-Center-100",
      "collection_route": "Official facility HTML and seasonal catalog/PDF; direct collection discrepancy unresolved.",
      "access_status": "browser_readable_direct_failed",
      "signal_classes": [
        "announced",
        "recurring_schedule"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Both original and search-discovered alternate direct URLs returned 404 empty; web reader exposes Fall 2026 content.",
        "mission_relevance": "2450 Harrison Mission facility.",
        "informal_or_recurrence_signal": "Drop-in pickleball, basketball, table tennis and racquetball with season dates.",
        "capture_freshness": "Facility schedule establishes opportunity, not players."
      },
      "verification": {
        "http_status_direct": 404,
        "web_reader_body_inspected": true,
        "season": "Fall 2026",
        "sample": "Tuesday pickleball 11 am-1 pm, Sep 1-Dec 29",
        "alternate_url": "https://sfrecpark.org/facilities/facility/details/Mission-Recreation-Center-100",
        "caveat": "Search-discovered alternate content includes Summer schedule; use current season and avoid cached stale duplicate.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Resolve direct collector or official catalog route; retain effective season and program exceptions."
      ],
      "mvp_decision": "manual_verified_schedule_until_route_resolved",
      "publisher_or_platform_count": 1
    },
    {
      "id": "bay-wheels",
      "name": "Bay Wheels GBFS",
      "url": "https://lyftbikes.com/system-data",
      "collection_route": "Official public GBFS station status plus station information.",
      "access_status": "tested_structured",
      "signal_classes": [
        "availability_proxy"
      ],
      "scores": {
        "repeatable_access": 3,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 0,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "JSON parsed again, 647 regional stations, TTL 60 seconds.",
        "mission_relevance": "Mission stations can be selected using station information.",
        "informal_or_recurrence_signal": "Bike and dock state provides no particular social activity.",
        "capture_freshness": "Fresh bike state is not human capture-time evidence."
      },
      "verification": {
        "endpoint": "https://gbfs.lyft.com/gbfs/2.3/bay/en/station_status.json",
        "station_records": 647,
        "ttl_seconds": 60,
        "last_updated_unix": 1792466108,
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Join station coordinates; account for rebalancing; never label bike delta as a crowd."
      ],
      "mvp_decision": "optional_context_only",
      "publisher_or_platform_count": 1
    },
    {
      "id": "sf-mobile-food",
      "name": "SF mobile food facility schedules",
      "url": "https://dev.socrata.com/foundry/data.sfgov.org/jjew-r69b",
      "collection_route": "Socrata JSON and permit joins.",
      "access_status": "tested_structured",
      "signal_classes": [
        "announced_vendor_schedule"
      ],
      "scores": {
        "repeatable_access": 3,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 1,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "JSON parsed again; public endpoint redirected to data.sf.gov.",
        "mission_relevance": "SF-wide with address and coordinate filters.",
        "informal_or_recurrence_signal": "Food vendors may support discovery but do not prove a gathering.",
        "capture_freshness": "Scheduled days and hours, not live vendor GPS."
      },
      "verification": {
        "endpoint": "https://data.sfgov.org/resource/jjew-r69b.json?$limit=3",
        "rows_returned": 3,
        "prior_full_check_rows": 1966,
        "prior_row_update": "2026-09-11",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Filter valid permits, dates and local schedules; do not mark vendor on site without observation."
      ],
      "mvp_decision": "optional_context_only",
      "publisher_or_platform_count": 1
    },
    {
      "id": "bluesky",
      "name": "Bluesky public posts / AT Protocol",
      "url": "https://github.com/bluesky-social/jetstream",
      "collection_route": "Documented AT Protocol archive/streaming; public search trial failed.",
      "access_status": "documented_stream_not_tested_search_failed",
      "signal_classes": [
        "potential_observation",
        "potential_habitual_report",
        "announced"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 1,
        "informal_or_recurrence_signal": 1,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Official Jetstream documentation verified; no stream consumed; search HTTP 403.",
        "mission_relevance": "No local yield measured.",
        "informal_or_recurrence_signal": "Text and images could contain informal activity, unproven Mission yield.",
        "capture_freshness": "No suitable local capture evidence obtained."
      },
      "verification": {
        "official_docs": "https://github.com/bluesky-social/jetstream",
        "search_probe_status": 403,
        "caveat": "Do not equate available network stream with enough Mission posts.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Implement documented stream client or supported search, seed local accounts/place aliases, measure useful yield."
      ],
      "mvp_decision": "small_yield_experiment",
      "publisher_or_platform_count": 1
    },
    {
      "id": "x",
      "name": "X posts",
      "url": "https://docs.x.com/x-api/posts/search/introduction",
      "collection_route": "Official recent search, full archive and filtered stream with approved developer access.",
      "access_status": "documented_api_not_tested",
      "signal_classes": [
        "potential_observation",
        "potential_habitual_report",
        "announced"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 1,
        "informal_or_recurrence_signal": 1,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Documentation reviewed, no credentials or API request.",
        "mission_relevance": "Potential place/account queries; no Mission yield measured.",
        "informal_or_recurrence_signal": "Possible spontaneous and habitual reports; density untested.",
        "capture_freshness": "Post creation timestamp cannot by itself establish when media was captured."
      },
      "verification": {
        "official_docs": "https://docs.x.com/x-api/posts/search/introduction",
        "documented_recent_window_days": 7,
        "credentialed_test": false,
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Approved developer app, current access/payment, query tuning and local yield measurement."
      ],
      "mvp_decision": "defer_until_credentials_and_yield_test",
      "publisher_or_platform_count": 1
    },
    {
      "id": "reddit",
      "name": "Reddit local communities",
      "url": "https://redditinc.com/policies/data-api-terms",
      "collection_route": "Approved API and commercial agreement; research public pages/JSON gave limited samples.",
      "access_status": "research_sample_only_commercial_access_unresolved",
      "signal_classes": [
        "habitual_report",
        "announced",
        "potential_observation"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 3,
        "capture_freshness": 1
      },
      "score_reasons": {
        "repeatable_access": "Prior public research JSON worked through web reader, direct requests 403; no approved production access.",
        "mission_relevance": "Verified Dolores Park comment plus SF and Mission communities.",
        "informal_or_recurrence_signal": "Habitual descriptions, pickup inquiries and organizer invitations.",
        "capture_freshness": "October 3 comment describes weekend courts, not a dated session."
      },
      "verification": {
        "official_docs": "https://redditinc.com/policies/data-api-terms",
        "sample": "https://www.reddit.com/r/bayarea/comments/1wwgrio/comment/pdkgeow/",
        "prior_evidence": "../mission-observed-social-2026-10-19/reddit-candidates.json",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Approved commercial access, handle deleted content, exact session/date resolution and author-claim labeling."
      ],
      "mvp_decision": "conditional_research_not_launch_dependency",
      "publisher_or_platform_count": 1
    },
    {
      "id": "flickr",
      "name": "Flickr public photographs",
      "url": "https://www.flickr.com/services/api/flickr.photos.search.html",
      "collection_route": "Official geo/date photo search and permitted EXIF; public pages used for prior sample.",
      "access_status": "documented_api_not_tested_public_sample_reviewed",
      "signal_classes": [
        "historical_observation"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 2,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 1
      },
      "score_reasons": {
        "repeatable_access": "Official API route reviewed, no key-based request; prior public photos read.",
        "mission_relevance": "Dolores Park photo sample visually verified.",
        "informal_or_recurrence_signal": "Picnics visible, no recent dated pickup or chess discovered.",
        "capture_freshness": "Prior recently uploaded photos included year-old captures; camera timezone unverified."
      },
      "verification": {
        "official_docs": "https://www.flickr.com/services/api/flickr.photos.search.html",
        "prior_evidence": "../mission-observed-social-2026-10-19/other-candidates.json",
        "sample": "https://www.flickr.com/photos/dnevill/55511843307/",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "API key and permitted use, photo licenses, distinguish taken/upload dates and unknown capture flags."
      ],
      "mvp_decision": "retrospective_enrichment_only",
      "publisher_or_platform_count": 1
    },
    {
      "id": "youtube",
      "name": "YouTube public videos and livestreams",
      "url": "https://developers.google.com/youtube/data/reference/rest/v3/search/list",
      "collection_route": "Official search API and channel upload playlists; accessible media analysis subject to availability.",
      "access_status": "documented_api_not_tested",
      "signal_classes": [
        "potential_observation",
        "historical_observation",
        "announced"
      ],
      "scores": {
        "repeatable_access": 1,
        "mission_relevance": 1,
        "informal_or_recurrence_signal": 1,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Official search filters verified; no API-key request or local sample.",
        "mission_relevance": "Mission keyword/geography filters possible, local yield not measured.",
        "informal_or_recurrence_signal": "Videos may show informal activity but pickup signal untested.",
        "capture_freshness": "Published time differs from recorded time; live filter is available but no local stream verified."
      },
      "verification": {
        "official_docs": "https://developers.google.com/youtube/data/reference/rest/v3/search/list",
        "credentialed_test": false,
        "documented_filters": [
          "q",
          "publishedAfter",
          "location+locationRadius",
          "eventType"
        ],
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "API key/quota, seed channels, geography metadata sparsity, distinguish broadcast time and recording time."
      ],
      "mvp_decision": "small_yield_experiment",
      "publisher_or_platform_count": 1
    },
    {
      "id": "instagram",
      "name": "Instagram selected public organizer and park accounts",
      "url": "https://www.instagram.com/doloresparksf/",
      "collection_route": "Selected public post inspection worked; aggregatable neighborhood feed not established.",
      "access_status": "manual_public_sample_only",
      "signal_classes": [
        "historical_observation",
        "announced"
      ],
      "scores": {
        "repeatable_access": 0,
        "mission_relevance": 3,
        "informal_or_recurrence_signal": 2,
        "capture_freshness": 1
      },
      "score_reasons": {
        "repeatable_access": "No dependable approved arbitrary-neighborhood collection route verified.",
        "mission_relevance": "Two recent Dolores Park picnic photos visually verified.",
        "informal_or_recurrence_signal": "Photos show groups, while joinability and precise activity uncertain.",
        "capture_freshness": "Caption claims imply 37 minutes and 5 h 20 m upload delay; neither verified capture time."
      },
      "verification": {
        "prior_evidence": "../mission-observed-social-2026-10-19/instagram-candidates.json",
        "exif_evidence": "../mission-snap-map-2026-10-19/audit.json",
        "sample": "https://www.instagram.com/doloresparksf/p/DeaoG_INPQw/",
        "caveat": "Two tested publicly served JPEGs have no capture EXIF or GPS.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Supported organizer connection or platform permission; no general neighborhood scraper assumed."
      ],
      "mvp_decision": "partnership_or_manual_enrichment",
      "publisher_or_platform_count": 1
    },
    {
      "id": "snap-map",
      "name": "Snap Map",
      "url": "https://map.snapchat.com/",
      "collection_route": "Mobile map only; no documented aggregatable local feed verified.",
      "access_status": "web_map_unavailable_feed_unverified",
      "signal_classes": [
        "potential_observation"
      ],
      "scores": {
        "repeatable_access": 0,
        "mission_relevance": 1,
        "informal_or_recurrence_signal": 1,
        "capture_freshness": 0
      },
      "score_reasons": {
        "repeatable_access": "Public URL redirects to Snapchat homepage; support confirms mobile-only map.",
        "mission_relevance": "No Dolores Park or Mission items obtained.",
        "informal_or_recurrence_signal": "Possible informal imagery, no local sample verified.",
        "capture_freshness": "No local timestamps or media EXIF inspected."
      },
      "verification": {
        "http_status": 200,
        "final_url": "https://www.snapchat.com/",
        "official_docs": "https://help.snapchat.com/hc/en-us/articles/39147521362964-Where-do-I-find-Snap-Map-on-a-web-browser",
        "prior_evidence": "../mission-snap-map-2026-10-19/audit.json",
        "caveat": "HTTP 200 is homepage access, not successful map access.",
        "checked_local_date": "2026-10-19"
      },
      "dependencies": [
        "Supported mobile or provider collection route, permitted reuse, local sample, capture and location validation."
      ],
      "mvp_decision": "exclude_from_mvp_dependency",
      "publisher_or_platform_count": 1
    }
  ],
  "browser_rechecks": [
    {
      "source": "SF Recreation and Parks: Mission Recreation Center",
      "url": "https://www.sfrecpark.org/Facilities/Facility/Details/Mission-Rec-Center-100",
      "checked_local_date": "2026-10-19",
      "result": "Official facility page loaded in CUA browser, with current fall schedule and Tuesday pickleball 11am to1pm through December29, course49656. Direct HTTP collector remains unavailable."
    }
  ]
}
