13 KiB
13 KiB
Research Templates Improvement Plan
Date: 2025-01-29
Status: Planning & Implementation Guide
📊 Current State: Research Presets
What We Have
- AI-Generated Presets: Generated from research persona based on user's onboarding data
- Rule-Based Presets: Fallback presets when persona doesn't exist
- Quick Start Presets: Displayed in ResearchTest page sidebar
- Preset Structure: Includes name, keywords, industry, target audience, research mode, config, icon, gradient
Current Limitations
- No User-Created Templates: Users can't save their own research configurations
- No Template Management: No way to edit, delete, or organize templates
- No Template Sharing: Can't share templates with team members
- No Template Categories: All presets shown together, no organization
- No Template Analytics: Can't see which templates are used most
- Limited Customization: Presets are static, can't be modified after creation
- No Template Library: No community or pre-built templates
🎯 Proposed Improvements: Research Templates System
Phase 1: User-Created Templates (High Priority)
1.1 Save Research as Template
Feature: Allow users to save any research configuration as a reusable template
Implementation:
interface ResearchTemplate {
id: string;
name: string;
description?: string;
keywords: string;
industry: string;
target_audience: string;
research_mode: ResearchMode;
config: ResearchConfig;
icon?: string;
gradient?: string;
category?: string;
tags?: string[];
created_at: string;
updated_at: string;
usage_count: number;
is_favorite: boolean;
is_public: boolean; // For future sharing
}
UI Components:
- "Save as Template" button in IntentConfirmationPanel (after research completes)
- Template name input dialog
- Template description (optional)
- Category/tag selection
Backend:
- New endpoint:
POST /api/research/templates/save - Store templates in database (new
research_templatestable) - Associate with user_id
1.2 Template Library UI
Feature: Display user's saved templates alongside AI-generated presets
UI Components:
- Template cards with name, description, usage count
- "Use Template" button
- "Edit Template" button
- "Delete Template" button
- "Favorite" toggle
- Search/filter templates
Layout:
┌─────────────────────────────────────┐
│ Quick Start Templates │
├─────────────────────────────────────┤
│ [AI Preset 1] [AI Preset 2] ... │
│ │
│ My Templates (5) │
│ [Template 1] [Template 2] ... │
│ │
│ + Create New Template │
└─────────────────────────────────────┘
1.3 Template Management
Feature: Edit, delete, duplicate, and organize templates
Actions:
- Edit: Modify template name, keywords, config
- Delete: Remove template with confirmation
- Duplicate: Create copy of template
- Favorite: Mark frequently used templates
- Category: Organize into categories (e.g., "Marketing", "Technical", "Competitive Analysis")
Phase 2: Enhanced Template Features (Medium Priority)
2.1 Template Categories & Tags
Feature: Organize templates with categories and tags
Categories:
- Content Marketing
- Competitive Analysis
- Industry Trends
- Technical Research
- Product Research
- Custom categories
Tags:
- Multiple tags per template
- Filter by tags
- Tag suggestions based on keywords
2.2 Template Analytics
Feature: Track template usage and effectiveness
Metrics:
- Usage count (how many times used)
- Last used date
- Success rate (research completion)
- Average research time
- Most popular templates
UI:
- Show usage stats on template cards
- "Most Used" section
- "Recently Used" section
2.3 Smart Template Suggestions
Feature: AI suggests templates based on user behavior
Logic:
- Suggest templates based on:
- Similar keywords used before
- Same industry/audience
- Time of day/week patterns
- Recent research topics
UI:
- "Suggested for You" section
- "Based on your recent research" badge
Phase 3: Advanced Template Features (Low Priority)
3.1 Template Sharing
Feature: Share templates with team members or community
Implementation:
- Public/private toggle
- Share link generation
- Team workspace templates
- Template marketplace (future)
3.2 Template Variables
Feature: Templates with placeholders that users can fill
Example:
{
name: "Competitive Analysis: {company}",
keywords: "Research {company} marketing strategies and product positioning",
// User fills in {company} when using template
}
UI:
- Variable input dialog when using template
- Pre-fill common variables from user data
3.3 Template Workflows
Feature: Chain multiple templates together
Use Case:
- Run "Industry Trends" template
- Then run "Competitive Analysis" template
- Then run "Content Ideas" template
UI:
- "Create Workflow" button
- Drag-and-drop template ordering
- Save workflow as single template
🏗️ Implementation Plan
Step 1: Database Schema
CREATE TABLE research_templates (
id VARCHAR(100) PRIMARY KEY,
user_id VARCHAR(100) NOT NULL,
name VARCHAR(200) NOT NULL,
description TEXT,
keywords TEXT NOT NULL,
industry VARCHAR(100),
target_audience VARCHAR(200),
research_mode VARCHAR(20),
config JSON NOT NULL,
icon VARCHAR(10),
gradient VARCHAR(200),
category VARCHAR(100),
tags JSON,
usage_count INT DEFAULT 0,
is_favorite BOOLEAN DEFAULT FALSE,
is_public BOOLEAN DEFAULT FALSE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
last_used_at DATETIME,
INDEX idx_user_id (user_id),
INDEX idx_category (category),
INDEX idx_created_at (created_at)
);
Step 2: Backend API Endpoints
# backend/api/research/router.py
@router.post("/templates/save")
async def save_research_template(
request: SaveTemplateRequest,
current_user: Dict = Depends(get_current_user)
):
"""Save current research configuration as template"""
pass
@router.get("/templates")
async def get_user_templates(
current_user: Dict = Depends(get_current_user),
category: Optional[str] = None,
favorite_only: bool = False
):
"""Get user's saved templates"""
pass
@router.put("/templates/{template_id}")
async def update_template(
template_id: str,
request: UpdateTemplateRequest,
current_user: Dict = Depends(get_current_user)
):
"""Update existing template"""
pass
@router.delete("/templates/{template_id}")
async def delete_template(
template_id: str,
current_user: Dict = Depends(get_current_user)
):
"""Delete template"""
pass
@router.post("/templates/{template_id}/use")
async def use_template(
template_id: str,
current_user: Dict = Depends(get_current_user)
):
"""Use template and increment usage count"""
pass
Step 3: Frontend Components
3.1 TemplateCard Component
interface TemplateCardProps {
template: ResearchTemplate;
onUse: (template: ResearchTemplate) => void;
onEdit: (template: ResearchTemplate) => void;
onDelete: (templateId: string) => void;
onToggleFavorite: (templateId: string) => void;
}
3.2 TemplateLibrary Component
interface TemplateLibraryProps {
aiPresets: ResearchPreset[];
userTemplates: ResearchTemplate[];
onUseTemplate: (template: ResearchTemplate | ResearchPreset) => void;
onCreateTemplate: () => void;
}
3.3 SaveTemplateDialog Component
interface SaveTemplateDialogProps {
open: boolean;
onClose: () => void;
onSave: (template: Partial<ResearchTemplate>) => void;
initialData: {
keywords: string;
industry: string;
target_audience: string;
research_mode: ResearchMode;
config: ResearchConfig;
};
}
Step 4: Integration Points
4.1 IntentConfirmationPanel
- Add "Save as Template" button after research configuration is confirmed
- Show template icon if current config matches a saved template
4.2 ResearchTest Page
- Replace "Quick Start Presets" with "Template Library"
- Show AI presets + user templates
- Add "Create Template" button
4.3 ResearchWizard
- Accept template as initial data
- Pre-fill all fields from template
- Track template usage
📋 Implementation Checklist
Phase 1: Core Template System
- Create database schema for
research_templates - Create Pydantic models for templates
- Implement backend API endpoints (save, get, update, delete, use)
- Create frontend TypeScript interfaces
- Build TemplateCard component
- Build TemplateLibrary component
- Build SaveTemplateDialog component
- Integrate "Save as Template" in IntentConfirmationPanel
- Update ResearchTest page to show templates
- Add template usage tracking
Phase 2: Enhanced Features
- Add category system
- Add tag system
- Implement template search/filter
- Add template analytics (usage count, last used)
- Add favorite functionality
- Add template sorting (most used, recently used, alphabetical)
Phase 3: Advanced Features
- Template sharing (public/private)
- Template variables/placeholders
- Template workflows
- Template marketplace (future)
🎨 UI/UX Design Considerations
Template Card Design
┌─────────────────────────────────┐
│ 📊 Competitive Analysis ⭐ │
│ │
│ Research top competitors in... │
│ │
│ Marketing • B2B SaaS │
│ │
│ Used 12 times • Last: 2d ago │
│ │
│ [Use] [Edit] [Delete] │
└─────────────────────────────────┘
Template Library Layout
┌─────────────────────────────────────────┐
│ Template Library │
├─────────────────────────────────────────┤
│ [Search templates...] │
│ │
│ Categories: [All] [Marketing] [Tech] │
│ │
│ ┌─ AI-Generated Presets ───────────┐ │
│ │ [Preset 1] [Preset 2] [Preset 3] │ │
│ └───────────────────────────────────┘ │
│ │
│ ┌─ My Templates (5) ────────────────┐ │
│ │ [Template 1] [Template 2] ... │ │
│ └───────────────────────────────────┘ │
│ │
│ [+ Create New Template] │
└─────────────────────────────────────────┘
🔄 Migration from Presets to Templates
Backward Compatibility
- Keep AI-generated presets as "read-only templates"
- Show presets in same UI as templates
- Allow users to "Save Preset as Template" to customize
Data Migration
- No migration needed (presets are generated on-demand)
- Templates are new feature, doesn't affect existing presets
📊 Success Metrics
Adoption Metrics
- % of users who create at least one template
- Average templates per user
- Template usage rate (templates used / total research operations)
Engagement Metrics
- Most used templates
- Template reuse rate
- Time saved (estimated based on template usage)
Quality Metrics
- Research completion rate with templates vs without
- User satisfaction with templates
- Template effectiveness (research quality)
🚀 Quick Win: Minimal Viable Template System
MVP Features (Can implement in 2-3 days)
- Save Template: Button in IntentConfirmationPanel
- Template List: Show user templates in ResearchTest sidebar
- Use Template: Click template to pre-fill research wizard
- Delete Template: Remove template with confirmation
MVP Database
- Simple table with: id, user_id, name, keywords, industry, target_audience, research_mode, config, created_at
MVP UI
- Simple template cards in sidebar
- "Save as Template" button
- Basic template list
✅ Next Steps
- Review & Approve: Get feedback on template system design
- Start with MVP: Implement minimal viable template system
- Iterate: Add features based on user feedback
- Scale: Add advanced features (sharing, workflows, etc.)
Status: Ready for Implementation