Files
ALwrity/docs/ALwrity Researcher/RESEARCH_TEMPLATES_IMPROVEMENT_PLAN.md

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

  1. No User-Created Templates: Users can't save their own research configurations
  2. No Template Management: No way to edit, delete, or organize templates
  3. No Template Sharing: Can't share templates with team members
  4. No Template Categories: All presets shown together, no organization
  5. No Template Analytics: Can't see which templates are used most
  6. Limited Customization: Presets are static, can't be modified after creation
  7. 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_templates table)
  • 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:

  1. Run "Industry Trends" template
  2. Then run "Competitive Analysis" template
  3. 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)

  1. Save Template: Button in IntentConfirmationPanel
  2. Template List: Show user templates in ResearchTest sidebar
  3. Use Template: Click template to pre-fill research wizard
  4. 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

  1. Review & Approve: Get feedback on template system design
  2. Start with MVP: Implement minimal viable template system
  3. Iterate: Add features based on user feedback
  4. Scale: Add advanced features (sharing, workflows, etc.)

Status: Ready for Implementation