Skip to content

Deferred MVP Features

The Proof of Concept was strictly scoped to validate technical feasibility and the architectural pipeline (Input → Process → Output) within 35 files and ~3000 LOC.

To achieve this, several planned features were intentionally excluded. This document serves as the Deferral Matrix, mapping what was removed to when it will be introduced in the MVP phase.


The Deferral Matrix

FeatureWhy it was deferredMVP PR
Target GroupsMulti-tenant scoping and personalized content delivery are not required to prove the core data loop. The POC operates as a single-tenant system for the authenticated Slack user.MVP PR4
Notion SyncWhile the architecture supports it (orchestrators have natural hook points), actual bidirectional sync via NotionAPI requires robust retry logic and mapping services that bloat the POC file count.MVP PR4
Search FunctionalityKeyword or semantic search is an optimization over basic list retrieval.MVP PR4
Edit / Delete OptionsBasic "happy path" Create and List operations are sufficient to validate the Slack Block Kit UI and Doctrine relationships.MVP PR4
Slash Commands & ShortcutsThe POC relies exclusively on the App Home tab and Block Kit buttons. Global shortcuts (/yappa) introduce additional Bolt handler complexity.MVP PR4
Prompt Template EntitiesThe POC uses a hardcoded Dutch prompt in DigestAiSummaryGenerator. Database-backed PromptTemplate entities with target group context and Handlebars variables are an MVP feature.MVP PR5
Full AI Summary SystemThe POC generates per-item summaries at digest time only (ephemeral, not persisted). The MVP's AiSummaryOrchestrator generates persistent AiSummary entities on knowledge creation, with regeneration and history.MVP PR5
AI Content CleaningAiContentCleanerService for cleaning extracted HTML before storage is an MVP enhancement.MVP PR5
Backend Distribution LayerThe generic delivery system (DistributionService, SlackDeliveryChannel, SlackMessageTransport, email delivery) is heavy. The POC uses a simplistic approach where the Slack handler builds and sends the DM directly.MVP PR6
Scheduled Digest AutomationCron-based scheduling and background job processing (Symfony Messenger) were excluded. The POC only supports user-initiated, ad-hoc digests.MVP PR6
Digest Entity PersistenceThe POC returns a DigestGenerationResultDto directly to Slack without saving a Digest record to the database, eliminating the need for DigestPersistenceService.MVP PR6
SubscriptionsUser opt-in/opt-out preferences and delivery schedules add unnecessary relational complexity.MVP PR6

Architectural Impact

By deferring these features, the POC codebase remains highly focused:

  1. Smaller Entities: Category and Knowledge lack the complex ManyToMany relationships to TargetGroup, AiSummary, or Subscription entities.
  2. Fewer Handlers: The Slack Bolt app only registers app_home_opened, dynamic view submissions (addList, addKnowledge, digest), and message events (URL detection).
  3. Ephemeral AI Summaries: Summaries are generated at digest-time and included in the DM, but not persisted as AiSummary entities. No summary management UI.
  4. Hardcoded Prompt: A single Dutch prompt template is embedded in DigestAiSummaryGenerator. No PromptTemplate entity, no PromptBuilderService.
  5. No LLM Dependency for Steps 1–2: Only Step 3 requires an OpenAI API key (or mock mode).

What IS Included from the AI Stack

The following AI components are part of the POC and carry directly into the MVP:

POC ComponentMVP Extension
AiProviderInterfaceSame contract — no changes
SymfonyAiProviderSame implementation — add agents as needed
AiResponse / AiOptionsDto / AiMetadataDtoSame DTOs — no changes
DigestAiSummaryGenerator (hardcoded prompt)Replaced by PromptBuilderService + PromptTemplate entities
Mock mode ($mockMode = true)Used in CI/CD and local dev throughout MVP