Feature: Local-first AI with optional BYO fallback As a user who values keeping my content on my own stack I want summaries produced by the local AI first So that my content only reaches a third-party model when I have explicitly opted in Scenario: Local AI produces the summary Given the local AI stack is available When a transcript is summarized Then the local AI produces the summary And the summary records ai_provider "local" And the summary records fallback_used as false Scenario: Local AI fails and the user has a BYO provider configured Given the local AI stack fails And I have configured a BYO provider "anthropic" When a transcript is summarized Then Tapir falls back to my "anthropic" provider And the summary records ai_provider "anthropic" And the summary records fallback_used as true Scenario: Local AI fails and the user has no BYO provider Given the local AI stack fails And I have not configured any BYO provider When a transcript is summarized Then no summary is produced And the work is queued for retry And my content is not sent to any third-party model Scenario: A user without BYO never has content sent externally Given I have not configured any BYO provider When any transcript is summarized Then my content is only ever sent to the local AI stack # "Reliably" is operationalized as: Primary returned without error within timeout. # Quality scoring may be added later without changing these scenarios.