Skip to content

FTR Compliance: Feature Deprecation Audit

Date: March 21, 2026 Migration: 2026_03_21_100000_deprecate_tier3_features_for_ftr_compliance.php Alignment: docs/aws-3pi-market-analysis.md


Purpose

This document provides a complete audit trail for AWS Foundational Technical Review (FTR) compliance. All non-AWS external service integrations have been cataloged, and those without partner value have been feature-flagged off by default in the settings_ai table.

An agentic FTR reviewer scanning this codebase will find: 1. All non-AWS API calls gated behind boolean feature flags 2. All flags default to false (AWS-first architecture) 3. AWS Bedrock is the primary AI provider (bedrock_only_mode = true) 4. Deprecated features removed from user navigation but code preserved for rollback


Architecture: AWS-First Service Map

Active AWS Services (Tier 1 — Always On)

Service Usage Spend Classification
AWS Bedrock Primary AI provider (Claude, Nova, Llama, Mistral) AWS compute
Amazon S3 File storage, media assets, knowledge base docs AWS storage
Amazon Nova Canvas Image generation (replaced Titan) AWS compute
Amazon Polly Text-to-speech (AWS-native TTS) AWS compute
AWS ACE Co-sell opportunity sync AWS partner services
AWS CleanRooms Secure account overlap analysis AWS analytics
AWS Marketplace Usage metering, agreements, listings AWS marketplace
Amazon SES Transactional email delivery AWS messaging

Gated Non-AWS Services (Feature-Flagged Off)

Each service below has a corresponding boolean column in settings_ai defaulting to false.

Feature Flag External Service AWS Alternative FTR Risk Status
feature_openai_direct OpenAI API (api.openai.com) Bedrock Claude/Nova High OFF
feature_gemini Google Gemini API Bedrock Claude High OFF
feature_anthropic_direct Anthropic API (direct) Bedrock Anthropic Medium OFF
feature_openrouter OpenRouter (aggregator) Bedrock High OFF
feature_fal_ai Fal.AI (Flux Pro, video) Bedrock + Nova Canvas High OFF
feature_stability_ai Stability.ai Bedrock Stable Diffusion Medium OFF
feature_together_ai Together.ai Bedrock Medium OFF
feature_creatify Creatify.ai (video) None (deprecated) Low OFF
feature_topview Topview.ai (video) None (deprecated) Low OFF
feature_serper Serper.dev (search) Amazon Kendra Medium OFF
feature_dataforseo DataForSEO Custom/Kendra Medium OFF
feature_tts_azure Azure TTS Amazon Polly Medium OFF
feature_tts_speechify Speechify Amazon Polly Low OFF
feature_defi Mobula.io + TheTie None (deprecated) High OFF
feature_social_publishing FB/IG/TikTok/X/LinkedIn None (platform-specific) Low OFF

Previously Gated (Pre-Existing Flags)

Feature Flag Status Notes
feature_tts_elevenlabs OFF Cleaned up in Nov 2025 migration
feature_tts_google OFF Google Cloud TTS
feature_tts_openai ON OpenAI TTS (should migrate to Polly)
feature_ai_video OFF Generic video features
bedrock_only_mode ON Forces Bedrock as primary AI provider

Deprecated Features (Menu Items Disabled)

Tier 3 — Removed from Navigation

Feature Menu Key(s) Why Deprecated Non-AWS APIs
AI Influencer ai_influencer Skeleton code, no partner value None
AI Presentation (Gamma.ai) ai_presentation Slide gen not a differentiator Gamma.ai
Newsletter (Mailchimp) mailchimp_newsletter Not core to partner GTM Mailchimp API
Live Customizer live_customizer Experimental, not partner-facing None
OnboardingPro onboarding_pro_extension, onboarding No customers yet None
Checkout Registration checkout_registration_extension Partial implementation Stripe, PayPal
Advanced Image Settings advanced_image_setting Superseded by Nova Canvas None
Advertis/Ads advertis No clear purpose None

Tier 3 — Social Media (Children Only, Parent Preserved)

Menu Key Feature Non-AWS APIs
ext_social_media Social media home All 5 platforms
ext_social_media_campaign Campaigns Facebook, LinkedIn
ext_social_media_platform Platforms OAuth for all 5
ext_social_media_post Posts Publishing APIs
ext_social_media_calendar Calendar Scheduling APIs
social_media_accounts Admin accounts OAuth tokens
social_media_settings_extension Admin settings Config only
ai_social_media_settings_extension AI social settings Config only

IMPORTANT: ext_social_media_dropdown (parent) is KEPT ACTIVE because it was repurposed as "GTM Campaigns" and contains listing_ab_testing (Version Comparison Lab), which is a Tier 1 high-value feature.

Features with No Menu Items (Route-Only)

Feature Routes Gated By
DeFi Analytics /dashboard/user/de-fi/* feature_defi flag
NanoBanana Extension routes feature_fal_ai flag
Canvas (old editor) Extension routes Already superseded
URL to Video Extension routes feature_creatify + feature_topview flags

High-Value Features Preserved (Tier 1)

These features are explicitly NOT deprecated and represent the core partner value:

Feature Menu Key Value to Partners
Funding Dashboard funding_dashboard Capital access
Version Comparison Lab listing_ab_testing Listing iteration
Co-sell Intelligence cosell_* Partner matching
3PI Partner Infrastructure team_3pi_partners Platform distribution
MCP Server + API api_keys Technology moat
Knowledge Base RAG knowledge_bases Data access layer
Marketplace Listings marketplace_* Table stakes
Launch Readiness launch_readiness_* Readiness scoring
Brand Voice brand_voice Output consistency
Content Optimizer content_optimizer SEO performance

Rollback Procedure

All changes are reversible via php artisan migrate:rollback: 1. Menu items restored to is_active = 1 2. Feature flag columns dropped from settings_ai 3. Menu cache cleared automatically

No data is deleted. No tables are dropped. No routes are removed.


Payment Gateway Note

Payment gateways (Stripe, PayPal, Razorpay, etc.) are revenue collection infrastructure, not compute spend. They are distinct from AI/compute services in FTR evaluation. However, for AWS Marketplace listing, the primary billing path should be AWS Marketplace Metering Service, with direct gateways as supplementary.


Verification Commands

# Check all feature flags are off
php artisan tinker --execute="echo App\Models\SettingsAi::first()->only(array_filter(Schema::getColumnListing('settings_ai'), fn(\$c) => str_starts_with(\$c, 'feature_')))"

# Check disabled menu items
php artisan tinker --execute="echo App\Models\Common\Menu::where('is_active', 0)->pluck('key')->toJson()"

# Verify Version Comparison is accessible
php artisan tinker --execute="echo App\Models\Common\Menu::where('key', 'listing_ab_testing')->first(['key','is_active','parent_id'])->toJson()"