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 40 files and ~3000 LOC.

This document tracks which features were deferred from the POC and their current implementation status in the full system.


Implementation Status

Implemented in MVP

These features were deferred from the POC but have since been fully implemented:

FeaturePOC Reason for DeferralImplementation
Target GroupsMulti-tenant scoping not required to prove the core data loopJSON arrays on Category and Knowledge entities, synced from Notion "Default Target Groups" multi-select
Notion SyncBidirectional sync requires robust retry logic and mapping servicesFull bidirectional sync for Knowledge, Categories, Digests, and Subscriptions via NotionSyncService with 4 Notion repositories
Search FunctionalityOptimization over basic list retrievalApp Home browse and category filtering
Digest Entity PersistencePOC returned DTO directly to Slack without database recordFull Digest entity with persistence, statistics, knowledge highlights snapshot, and ManyToMany knowledge links
SubscriptionsUser opt-in/out adds unnecessary relational complexitySubscription entity with subscribe/unsubscribe, soft-delete (deactivate/reactivate), unique constraint on (userId, categoryId)
Backend Distribution LayerGeneric delivery system too heavy for POCSlackDigestDeliveryService + SlackMessageTransport with per-user delivery tracking in DigestDelivery entities
Scheduled Digest AutomationCron-based scheduling excluded from POCDigestSchedulerService with frequency-based scheduling (weekly/biweekly/monthly/quarterly), day/time configuration per category
AI Summary SystemPOC generated ephemeral summaries at digest time onlyAI highlights stored in Knowledge.highlight field, lazy-generated during digest creation, KnowledgeHighlightGenerator with fallback

Partially Implemented

FeatureWhat's ImplementedWhat's Still Missing
AI SummariesSingle 2-3 sentence Dutch summary per knowledge item, generated during digestPer-role/multi-audience summaries, summary editing UI, regeneration UI, history/versioning
Notion SyncBidirectional sync for all entity typesWebhook-based real-time sync (currently uses on-demand API calls)

Not Yet Implemented

These features remain deferred:

FeatureDescriptionNotes
Prompt Template EntitiesDatabase-backed prompt management with versioning and UICurrently uses a hardcoded constant (DigestConstants::HIGHLIGHT_SUMMARY_PROMPT)
Edit / Delete UIUI for modifying or removing knowledge items and categoriesBackend supports it, but no Slack UI for these operations
Advanced SearchFull-text search, filtering by tags/date/category, result rankingOnly basic keyword search exists
AI Content CleaningService for cleaning extracted HTML before AI processingRaw content is used directly
URL Validation ServiceComprehensive URL reachability checking with validation statesBasic URL validation exists in ContentExtractionService
PDF/RSS/YouTube ProcessingContent extraction from non-HTML sourcesOnly HTML content extraction is implemented

Architectural Impact of POC Decisions

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

  1. Smaller Entities: Category and Knowledge lacked the complex relationships to Subscription, Digest, and DigestDelivery that the MVP added.
  2. Fewer Handlers: The Slack Bolt app only registered app_home_opened, basic view submissions, and message shortcuts.
  3. Ephemeral AI Summaries: Summaries were generated at digest-time and included in the DM, but not persisted in the database. The MVP stores them in Knowledge.highlight.
  4. Hardcoded Prompt: A single Dutch prompt template is embedded in DigestConstants. The MVP continues using this approach — no PromptTemplate entity was created.
  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 — supports OpenAI and OpenRouter
OpenAIServiceSame implementation with OpenRouter support added
AiResponseDto / AiOptionsDto / AiMetadataDtoSame DTOs — no changes
KnowledgeHighlightGenerator (hardcoded prompt)Still uses hardcoded prompt constant
Mock mode ($mockMode = true)Used in E2E tests and local development