12 KiB
Clarification Quiz Enhancement - Implementation Summary
Completed Backend Improvements ✅
1. Settings Configuration (includes/class-settings.php)
Added three new settings:
-
Enable Clarification Quiz (Checkbox)
- Default:
true - Allows users to completely enable/disable the quiz
- Default:
-
Confidence Threshold (Select dropdown)
- Options: 0.5 (Very Sensitive), 0.6 (Sensitive - Recommended), 0.7 (Balanced), 0.8 (Strict - Current), 0.9 (Very Strict)
- Default:
0.6(lowered from hardcoded 0.8) - Lower threshold = quiz appears more frequently
-
Required Context Categories (Multi-select)
- 7 categories: Target Outcome, Target Audience, Tone, Content Depth, Expertise Level, Content Type, POV
- Default: All categories selected
- Users can deselect categories they don't need
Files Modified:
class-settings.php:233- Sanitization for enable checkboxclass-settings.php:246-256- Sanitization for threshold and categoriesclass-settings.php:280-291- Extract settings from databaseclass-settings.php:537-633- Settings UI HTML
2. Enhanced System Prompt (includes/class-gutenberg-sidebar.php)
Updated the clarity check system prompt to:
- Evaluate 7 context categories instead of 3 (topic, audience, scope)
- Use configurable threshold from settings (no longer hardcoded 0.8)
- Generate only predefined options - explicitly forbids
open_textquestions - Include category labels in questions for better UX
- Calculate confidence by subtracting 15% per missing category
New Categories:
target_outcome- Education/Marketing/Sales/Entertainment/Brand Awarenesstarget_audience- Demographics, role, knowledge leveltone- Formal/Casual/Technical/Friendly/Professional/Conversationalcontent_depth- Quick Overview/Standard Guide/Detailed Analysis/Comprehensiveexpertise_level- Beginner/Intermediate/Advanced/Expertcontent_type- Tutorial/Opinion/Comparison/Listicle/Case Study/News Analysispov- First Person/Third Person/Expert Voice/Neutral
Files Modified:
class-gutenberg-sidebar.php:1186-1213- Settings integration inhandle_check_clarity()class-gutenberg-sidebar.php:1224-1268- New system promptclass-gutenberg-sidebar.php:1590-1673- Same updates in privatecheck_clarity_before_generation()
3. Fallback Helper Method
Created get_default_clarification_questions() method:
- Provides 7 predefined question templates with curated options
- Used when AI fails (API errors, JSON parse errors)
- Respects user's category selection from settings
- No more skipping the quiz on errors - always shows fallback questions
Question Templates Include:
- Target outcome: 5 options (Education, Marketing, Sales, Entertainment, Brand Awareness)
- Target audience: 5 options (General Public, Professionals, Customers, Users, Peers)
- Tone: 5 options (Professional, Friendly, Technical, Casual, Formal)
- Content depth: 4 options (Quick Overview, Standard Guide, Detailed Analysis, Comprehensive)
- Expertise level: 4 options (Beginner, Intermediate, Advanced, Expert)
- Content type: 6 options (Tutorial, Opinion, Comparison, Listicle, Case Study, News Analysis)
- POV: 4 options (Third Person, First Person, Expert Voice, Neutral)
Files Modified:
class-gutenberg-sidebar.php:1687-1808- New helper method
4. Improved Error Handling
Updated both clarity check methods to use fallback:
Before:
if ( is_wp_error( $response ) ) {
return array( 'is_clear' => true, 'confidence' => 1.0, 'questions' => array() );
}
After:
if ( is_wp_error( $response ) ) {
error_log( 'WP Agentic Writer: Clarity check API error - ' . $response->get_error_message() );
return $this->get_default_clarification_questions( $topic );
}
Benefits:
- Quiz still appears even when AI fails
- Logs errors for debugging
- Better user experience (doesn't silently skip context gathering)
Files Modified:
class-gutenberg-sidebar.php:1283-1311- Error handling inhandle_check_clarity()class-gutenberg-sidebar.php:1677-1693- Error handling incheck_clarity_before_generation()
5. Clarification Answers Integration
Added clarification context to plan generation:
- Extracts answers from request parameters
- Formats answers by category with labels
- Adds context section to AI prompt before generating outline
- Respects skipped answers (excludes them from context)
Context Format in Prompt:
=== CONTEXT FROM CLARIFICATION QUIZ ===
- Primary Goal: Education - Teach something new
- Target Audience: General public / Beginners
- Tone of Voice: Friendly & Conversational
- Content Depth: Standard guide (800-1500 words)
- Expertise Level: Beginner - No prior knowledge
- Content Type: Tutorial / How-to guide
- Point of View: Third person (objective, "it", "they")
=== END CONTEXT ===
Files Modified:
class-gutenberg-sidebar.php:344-365- Extract clarification answers inhandle_generate_plan()class-gutenberg-sidebar.php:470- Added parameter tostream_generate_plan()class-gutenberg-sidebar.php:496-530- Build and format clarification contextclass-gutenberg-sidebar.php:576- Inject context into AI prompt
What Changed & Why It Matters
Problem Solved: Quiz Was Too Rare
Root Causes Fixed:
- ✅ Lowered threshold from 0.8 to 0.6 (configurable)
- ✅ More categories to check (7 instead of 3)
- ✅ Better fallback (no longer skips on errors)
- ✅ Strict confidence calculation (15% deduction per missing category)
Problem Solved: Lack of Context
Categories Added:
- ✅ Target outcome (education/marketing/sales/etc)
- ✅ Tone of voice (formal/casual/technical)
- ✅ Content depth (overview/guide/analysis)
- ✅ Expertise level (beginner/intermediate/advanced)
- ✅ Content type (tutorial/opinion/how-to)
- ✅ Point of view (first/third person/expert)
Problem Solved: User-Friendly Options
Improvements:
- ✅ All questions use predefined options (no typing)
- ✅ Users can configure which categories matter
- ✅ Users can adjust sensitivity
- ✅ Users can disable quiz entirely if desired
Pending Work (Optional)
Frontend Enhancements (assets/js/sidebar.js)
These are optional improvements to the user interface:
-
Add category labels to question cards
- Show emoji icons for each category (🎯 Goal, 👥 Audience, etc.)
- Display category badges above questions
-
Enhanced progress display
- Show which categories are already clear
- Display "Already know: Goal, Audience, Tone"
- Better visual feedback on quiz progress
-
Skip button for each question
- Allow marking questions as "not applicable"
- Prevents users from getting stuck on irrelevant questions
Note: The current frontend will work without these changes. The quiz will just look the same as before, but with better questions and more frequent appearance.
Testing Recommendations
Manual Testing Steps:
-
Settings Page Test:
- Go to Settings > WP Agentic Writer
- Scroll to "Clarification Quiz" section (should be at the bottom)
- Verify enable/disable toggle works
- Change confidence threshold to different values
- Select/deselect categories in multi-select
- Save settings and verify persistence
-
Vague Topic Test:
- Enter very vague topic: "write about AI"
- Verify quiz appears with multiple questions
- All questions should have radio buttons (no text inputs)
- Complete quiz and verify plan reflects answers
-
Specific Topic Test:
- Enter detailed topic with all context
- Verify quiz doesn't appear (or only asks for truly missing info)
-
Threshold Test:
- Set threshold to 0.5 (Very Sensitive)
- Enter "SEO tips"
- Verify quiz appears
- Set threshold to 0.9 (Very Strict)
- Enter same topic
- Verify quiz doesn't appear
-
Category Filter Test:
- Uncheck some categories in settings
- Enter vague topic
- Verify quiz only asks for checked categories
-
Settings Disable Test:
- Uncheck "Enable Clarification Quiz"
- Enter vague topic
- Verify quiz never appears
-
API Failure Test:
- Use invalid API key
- Enter vague topic
- Verify fallback questions appear (not error or skip)
-
Plan Integration Test:
- Complete quiz with specific answers
- Generate plan
- Verify plan structure matches quiz answers (e.g., if you selected "Tutorial - How-to guide", the plan should be tutorial-style)
Configuration Examples
Example 1: Marketing Blog
Settings:
- Confidence Threshold: 0.6 (Sensitive)
- Required Categories: Target Outcome, Target Audience, Tone, Content Type
Result: Quiz will ask 4 focused questions about marketing goals and audience.
Example 2: Technical Documentation
Settings:
- Confidence Threshold: 0.5 (Very Sensitive)
- Required Categories: All categories
Result: Comprehensive quiz covering all 7 categories to ensure technical accuracy.
Example 3: Quick Blog Posts
Settings:
- Confidence Threshold: 0.8 (Strict)
- Required Categories: Target Audience, Tone
Result: Minimal quiz, only appears when very unclear. Fast workflow.
Database Migration
No database migration needed. All settings use WordPress options API with sensible defaults:
// New settings with defaults
$settings['enable_clarification_quiz'] = true;
$settings['clarity_confidence_threshold'] = '0.6';
$settings['required_context_categories'] = array(
'target_outcome',
'target_audience',
'tone',
'content_depth',
'expertise_level',
'content_type',
'pov',
);
Settings will be created automatically on first save.
Rollback Plan
If issues occur, revert in this order:
-
Revert settings changes in
class-settings.php- Lines 233, 246-256, 280-291, 537-633
-
Revert system prompt in
class-gutenberg-sidebar.php- Restore original 3-criteria check (topic, audience, scope)
- Restore hardcoded 0.8 threshold
-
Revert fallback method
- Remove
get_default_clarification_questions()method - Restore "assume clear" error handling
- Remove
-
Revert clarification integration
- Remove
$clarification_answersparameter - Remove context building code
- Remove
Success Metrics
✅ Settings UI - 3 new fields with proper sanitization ✅ Configurable threshold - Dynamic value from settings (0.6 default) ✅ 7 context categories - Expanded from 3 ✅ Predefined options only - No open_text questions ✅ Fallback questions - Works even when AI fails ✅ Plan integration - Clarification answers inform article structure ✅ Error logging - All errors logged for debugging ✅ Backward compatible - No breaking changes to existing functionality
Next Steps
The backend implementation is complete and functional. The clarification quiz will now:
- ✅ Appear more frequently (60% threshold vs 80%)
- ✅ Ask better questions with predefined options
- ✅ Gather comprehensive context (7 categories)
- ✅ Use fallback when AI fails
- ✅ Pass answers to plan generation for better articles
Optional frontend enhancements can be added later for improved UX, but are not required for the system to work.
Files Modified Summary
-
includes/class-settings.php
- Added 3 new settings fields
- Added sanitization rules
- Added settings UI section
-
includes/class-gutenberg-sidebar.php
- Updated system prompt in 2 methods
- Added fallback helper method (140 lines)
- Improved error handling
- Integrated clarification answers into plan generation
- Added settings integration
Total Lines Added: ~350 lines Total Lines Modified: ~100 lines
No new files created. All changes are backward compatible.