Demo Date: [Date - 1 week from now]
Duration: 30-45 minutes (adjust as needed)
Audience: [Target audience - engineering team, stakeholders, etc.]
The Problem:
- RHEL Lightspeed (CLA) produces incorrect answers to user questions
- 68 JIRA tickets logged with "cla-incorrect-answer" label
- Manual diagnosis and fixing is slow, inconsistent, and doesn't scale
- No systematic way to find patterns across similar failures
- Traditional extraction has 21% success rate (hallucination, no verification)
The Solution: HEAL
- Fully autonomous multi-agent system for RAG diagnosis and fixing
- Extracts quality test cases from JIRA tickets automatically
- Intelligently filters meta-tickets and jailbreak attempts (scope check)
- Discovers patterns across failures (10-15x efficiency gain)
- Fixes issues with evaluation-driven iteration
- Zero manual intervention from JIRA ticket to deployed fix
The Impact:
- 100% extraction success on valid RHEL tickets (42/42 extracted)
- 38% of tickets were meta-tickets (26/68), now auto-filtered
- Autonomous quality loop ensures production-ready answers
- Pattern-based fixing: address 10-15 tickets with one fix
- End-to-end automation: JIRA → verified Q&A → pattern fix → deployment
- Complete security: jailbreak attempts and prompt injection blocked
Show the problem visually:
-
JIRA Tickets - Display a JIRA board with 68 "cla-incorrect-answer" tickets
- Example tickets: RHEL version support, authentication issues, configuration questions
- Point out: "Each ticket represents a real user getting a wrong answer"
-
Traditional Approach Problems:
- Manual extraction: slow, inconsistent, requires SME time
- Guessing answers from LLM training data → hallucination risk
- No traceability to authoritative sources
- Each ticket fixed individually → doesn't scale
-
The Questions:
- How do we extract quality test cases from tickets automatically?
- How do we verify answers against actual documentation?
- How do we find patterns to fix multiple tickets at once?
- How do we ensure fixes don't break existing functionality?
Show multi-agent system diagram:
JIRA Tickets (68 total)
↓
[Scope Check: Filter meta-tickets, jailbreaks, non-RHEL]
↓
RHEL Tickets (42) ────────X────> Meta-tickets (26) FILTERED
↓
[Linux Expert + Solr Expert + Review Agent]
↓ ← Autonomous Quality Loop (up to 3 iterations)
↓
Quality-Verified Q&A Pairs
↓
[Pattern Discovery Agent]
↓
Pattern Groups (10-15 tickets per pattern)
↓
[Pattern Fix Agent]
↓
Evaluation-Driven Fixes
Key Agents:
-
Scope Check (NEW - Security & Efficiency)
- Detects meta-tickets about CLA behavior
- Blocks jailbreak attempts and prompt injection
- Filters non-RHEL questions (Windows, Ubuntu, etc.)
- Pre-flight validation before expensive LLM calls
- Result: 38% of tickets filtered (26/68)
-
Linux Expert Agent
- 15+ years RHEL expertise encoded
- Forms hypotheses about correct answers
- Synthesizes verified responses
- Uses feedback to refine answers
-
Solr Expert Agent
- Searches RHEL documentation (OKP)
- Verifies facts against authoritative sources
- Returns clean docs + source URLs
- Provides confidence scoring
-
Review Agent
- Quality checks against production guidelines
- Scores answers 0.0-1.0
- Identifies specific issues
- Provides suggested fixes directly (NEW)
-
Pattern Discovery Agent
- Analyzes tickets for common themes
- Groups similar failures
- Enables batch fixing
- Auto-filters OUT_OF_SCOPE tickets (NEW)
The Innovation: Autonomous Quality Loop
- Review Agent checks each answer
- If fails: provides feedback OR suggested fix
- If suggested fix available: use it directly (faster)
- Otherwise: Linux Expert refines using same docs + feedback
- Iterates up to 3 times until passing
- No human in the loop
- 100% success rate on valid RHEL tickets
Option A: Interactive Demo Script (Recommended)
# Quick demo mode (10 tickets, ~5-10 minutes)
./scripts/demo_heal_workflow.sh --quick
# Full demo mode (all 68 tickets, ~30-45 minutes - pre-record this)
./scripts/demo_heal_workflow.shThe demo script:
- Shows clear stage headers with progress tracking
- Pauses between stages for explanation and questions
- Displays results summary after each stage
- Creates visual workflow diagram at end
- Use
--quickfor live demo, pre-record full run
Option B: Manual Stage-by-Stage (if you prefer control)
Stage 1: Autonomous Extraction (10-15 minutes)
uv run python src/heal/bootstrap/extract_jira_tickets.py \
--jql "project = RSPEED AND labels = cla-incorrect-answer" \
--output config/extracted_tickets.yamlWalk through the logs:
-
Show JIRA fetch: "Fetched 68 tickets"
-
Show scope check filtering a jailbreak ticket:
[2/68] Processing RSPEED-2219 [Scope Check] Verifying RHEL scope... RSPEED-2219: Scope check: False - This is a meta-ticket testing CLA's jailbreak resistance RSPEED-2219: ⚠️ OUT OF SCOPE - This is a meta-ticket testing CLA's jailbreak resistance RSPEED-2219: Skipping extraction (not a RHEL question) -
Show a RHEL ticket processing successfully:
[3/68] Processing RSPEED-2833 [Scope Check] Verifying RHEL scope... RSPEED-2833: Scope check: True - RHEL technical question about subscription-manager [Linux Expert] Hypothesis formed: Query: What is the correct syntax for subscription-manager register --auto-attach? Hypothesis: The command requires... Verification queries: 5 [Solr Expert] Searching for verification... Found: 10 documents Confidence: HIGH [Linux Expert] Synthesizing answer (iteration 1/3)... Synthesis confidence: HIGH [Review Agent] Checking answer quality... Score: 0.85 Passes: True ✅ Passed quality review on iteration 1 💾 Saved to config/extracted_tickets.yaml (1 total tickets) -
Show a failing ticket that gets refined with suggested_fix:
[5/68] Processing RSPEED-1711 [Review Agent] Checking answer quality... Score: 0.20 Passes: False Issues: 7 ❌ Failed quality review: - Does NOT answer the question - provides no procedure, no commands - Violates 'NEVER say' rule - uses distancing phrases - Pure meta-commentary about what documentation contains - Missing all required elements: no prerequisites, no commands 🔄 Refining answer with feedback... [Linux Expert] Synthesizing answer (iteration 2/3)... Using reviewer's suggested fix ← NEW OPTIMIZATION [Review Agent] Checking answer quality... Score: 1.00 Passes: True ✅ Passed quality review on iteration 2Key point to emphasize: The Review Agent provided a complete suggested fix, avoiding the need to re-synthesize. This is 50% faster than full re-synthesis.
-
Show the final extraction summary:
================================================================================ EXTRACTION COMPLETE ================================================================================ Total tickets processed: 68 ✅ RHEL tickets (extracted): 42 (100% success) 🚫 Meta-tickets (OUT_OF_SCOPE): 26 (auto-filtered) Breakdown: • Jailbreak attempts: 8 • Meta-tickets about CLA behavior: 18 • Search intelligence logged: 436 queries, 1602 unique docs Output: config/extracted_tickets.yaml
Pause for questions, then continue to Stage 2.
Stage 2: Pattern Discovery (5 minutes)
uv run python src/heal/pattern_discovery/discover_ticket_patterns.py \
--input config/extracted_tickets.yaml \
--output-report config/patterns_report.json \
--output-tagged config/tickets_with_patterns.yamlKey points to narrate:
- "Pattern discovery analyzes the 42 RHEL tickets"
- "Automatically filters OUT_OF_SCOPE tickets (no manual cleaning needed)"
- "Groups similar failures to enable batch fixing"
- "Minimum 3 tickets per pattern (configurable)"
Show log output:
Loading tickets from config/extracted_tickets.yaml
Loaded 68 tickets
Filtered out 26 OUT_OF_SCOPE tickets (meta-tickets, non-RHEL)
Pattern discovery will use 42 RHEL tickets
Classifying 42 tickets in batches...
[Batch 1/2] Classifying 25 tickets...
[Batch 2/2] Classifying 17 tickets...
Discovering patterns from classifications...
Pattern discovery complete
Show discovered patterns:
{
"patterns": [
{
"pattern_id": "RPM_OSTREE_COMMANDS",
"name": "rpm-ostree Package Management",
"ticket_count": 8,
"tickets": ["RSPEED-1930", "RSPEED-1929", "RSPEED-1859", ...],
"common_theme": "rpm-ostree commands: install, rollback, status, deployment management"
},
{
"pattern_id": "SYSTEM_ROLES_DOCUMENTATION",
"name": "RHEL System Roles Documentation",
"ticket_count": 6,
"tickets": ["RSPEED-1812", "RSPEED-1811", ...],
"common_theme": "Finding docs for RHEL System Roles, version support, compatibility"
}
],
"ungrouped_tickets": ["RSPEED-XXXX", ...],
"total_tickets_analyzed": 42,
"total_patterns": 2
}Pause for questions, then continue to Stage 3.
Stage 3: Evaluation Format Conversion (2 minutes)
# Convert to evaluation format
uv run python src/heal/bootstrap/convert_bootstrap_to_eval_format.py \
--tickets config/extracted_tickets.yaml \
--patterns config/patterns_report.json \
--output-dir config/patterns/Show generated pattern file:
# config/patterns/AUTHENTICATION_SECURITY.yaml
metadata:
pattern_id: AUTHENTICATION_SECURITY
name: Authentication and Security Configuration
ticket_count: 15
conversations:
- conversation_group_id: RSPEED-2657
turns:
- turn_id: turn1
query: "How do I configure authentication headers in Apache httpd?"
expected_response: "To configure authentication..."
expected_urls: [...]Show the intelligent diagnosis:
# Run pattern fix POC
uv run python src/heal/runners/run_pattern_fix_poc.py \
--pattern AUTHENTICATION_SECURITYWalk through phases:
Phase 1: Baseline Assessment
Running baseline evaluation...
Ticket RSPEED-2657:
- url_f1: 0.45 (POOR - wrong docs retrieved)
- answer_correctness: 0.30 (POOR)
- context_recall: 0.50
❌ Problem: Retrieval failure (url_f1 < 0.7)
→ Routing to Solr optimization
Phase 2: Solr Optimization (Fast Loop)
Iteration 1: Testing boost query...
solr_query: "(apache AND httpd AND authentication)^2 OR (auth AND header)"
url_f1: 0.65 (improving but not there yet)
Iteration 2: Testing adjusted boost...
solr_query: "(apache authentication)^3 OR (httpd auth header)^2"
url_f1: 0.78 ✅ (above threshold!)
→ Moving to answer validation
Phase 3: Answer Validation
Running full evaluation with improved retrieval...
Ticket RSPEED-2657:
- url_f1: 0.78 ✅
- answer_correctness: 0.92 ✅
- context_recall: 0.85 ✅
All tickets passing!
Phase 4: CLA Regression Test
Running CLA regression suite (96 questions)...
✅ All 96 tests pass
No regressions detected
Show the PR:
- Changes to
config/system.yaml(Solr boost query) - Evaluation results showing improvement
- Automated commit message with metrics
Metrics to Highlight:
| Metric | Before HEAL | After HEAL | Improvement |
|---|---|---|---|
| Extraction Success Rate | 21% (manual/LLM-only) | 100% (42/42 RHEL tickets) | 4.8x |
| Time to Extract | 2-4 hours (manual SME) | 10-15 minutes (autonomous) | 10-20x faster |
| Answer Quality | Unverified (hallucinations) | Production-ready (score ≥ 0.7) | ✅ Validated |
| Source Traceability | None | Every answer has URLs | ✅ Auditable |
| Scope Detection | Manual triage | Automatic (26/68 filtered) | 38% noise reduction |
| Security | Vulnerable to jailbreaks | Auto-blocks prompt injection | ✅ Protected |
| Pattern Detection | Manual | Automatic clustering | 10-15 tickets per fix |
| Human Intervention | Required at every step | Zero (fully autonomous) | 100% automated |
Real Results from Demo Run:
-
Total Tickets Processed: 68
- ✅ RHEL tickets extracted: 42 (100% success)
- 🚫 Meta-tickets filtered: 26 (38%)
- Jailbreak attempts: 8
- CLA behavior evaluations: 18
- Zero manual intervention required
-
Quality Metrics:
- Average Review Agent score: 0.85 (target: ≥ 0.7)
- First-pass quality: ~70% pass on iteration 1
- Refinement success: ~25% pass after suggested_fix
- Remaining ~5%: pass after full re-synthesis
- Overall: 100% of RHEL tickets meet production quality
-
Patterns Discovered: (Example)
- RPM-OSTREE_COMMANDS: 8 tickets (install, rollback, status)
- SYSTEM_ROLES_DOCS: 6 tickets (documentation links, version support)
- Ungrouped: Single-issue tickets for individual fixing
The Business Value:
- Faster time to resolution (hours vs days/weeks)
- Consistent quality (autonomous review loop)
- Scalable approach (pattern-based fixing)
- Auditable trail (source URLs, evaluation metrics)
- Prevents regressions (CLA test suite)
Q: How do you ensure the extracted answers are correct? A: Three-layer verification:
- Solr Expert verifies against actual RHEL docs (not LLM training data)
- Review Agent scores against production guidelines (must score ≥ 0.7)
- Every answer includes source URLs for human auditing
Q: What if the autonomous loop fails? A: Multiple safety nets:
- Review Agent provides suggested_fix for common issues (~25% of failures)
- Refinement script attempts post-processing with stored URLs
- After 3 iterations, ticket is flagged for manual review
- In practice: 100% success rate on valid RHEL tickets (42/42 extracted)
Q: What about security - can malicious JIRA tickets attack the system? A: Built-in protection:
- Scope check runs before any LLM processing
- Detects jailbreak attempts, prompt injection, meta-tickets
- Filters them OUT_OF_SCOPE with empty responses
- Result: 8 jailbreak attempts blocked in demo run (0% success)
- No prompt injection reaches synthesis stage
Q: How long does this take in production? A: Actual timings from demo run (68 tickets):
- Extract 68 tickets: ~45-60 minutes (autonomous)
- Scope check: ~5 seconds per ticket (pre-flight)
- Valid RHEL tickets: ~1-2 minutes each
- Meta-tickets: ~30 seconds (scope check → skip)
- Pattern discovery: ~5-10 minutes (42 RHEL tickets)
- Conversion to eval format: ~30 seconds
- Total: ~1-1.5 hours vs 100+ hours manual (60-100x faster)
Q: Can this work for other products besides RHEL? A: Yes! The architecture is product-agnostic:
- Swap Linux Expert → Product Expert (same pattern)
- Swap Solr → Any documentation search backend
- Review Agent uses configurable guidelines
- Pattern discovery is domain-independent
Q: What about hallucination risk? A: Significantly reduced:
- Answers grounded in actual docs (not LLM training)
- Source URLs required for every answer
- Review Agent catches "based on documentation" distancing phrases
- Confidence scoring flags low-quality extractions
Q: How do you prevent regressions? A: Every pattern fix runs CLA regression suite (96 release-gating questions) before commit. Any failures block the fix.
Interactive Demo Script (Recommended Approach):
- Test the interactive demo script:
./scripts/demo_heal_workflow.sh --quick - Run full demo once for screenshots:
./scripts/demo_heal_workflow.sh(save output) - Verify pauses work correctly between stages
- Screenshot the final workflow diagram for slides
OR Manual Approach:
- Pre-run extraction on 10 tickets for quick demo
- Pre-record full 68-ticket extraction (show logs during demo)
- Pre-run pattern discovery to have results ready
- Pre-run one pattern fix end-to-end with metrics
General Setup:
- Set up terminal with large font (18-20pt), clean prompt
- Test screen sharing / projector setup
- Verify Solr is running:
curl http://localhost:8983/solr/portal/select?q=*:* - Check credentials:
GOOGLE_APPLICATION_CREDENTIALSset
- Slides (generated from this doc via NotebookLM)
- Use
scripts/demo_heal_workflow.shfor live walkthrough - Backup screenshots if live demo fails:
- Scope check filtering jailbreak
- Review Agent refinement with suggested_fix
- Pattern discovery output
- Final workflow diagram
- Sample YAML files (pretty-printed for readability)
- Metrics comparison table (updated with real results)
- Architecture diagrams (from README.md - updated with Scope Check)
- One-pager handout summarizing HEAL
- Run through demo solo (time it)
- Practice with colleague for feedback
- Prepare for Q&A scenarios
- Test all live commands work
- Start services (Solr, API endpoints)
- Verify credentials/auth working
- Open all terminal windows/tabs needed
- Load pre-run results in separate tabs
- Have backup plan if network fails
- Bring laptop charger
- Arrive 15 minutes early for setup
Show the actual code flow:
- Review Agent prompt (production guidelines)
- Scoring logic (0.0-1.0 scale)
- Suggested fix mechanism
- Feedback loop implementation
Show how Solr Expert learns from searches:
- Logs all queries + results
- Tracks successful vs failed searches
- Builds knowledge base for future optimization
- Database at
.claude/search_intelligence
Walk through the complete 3-stage flow:
- Stage 1: Extract & Review (autonomous quality loop + scope check)
- Stage 2: Pattern Discovery (LLM-based clustering + auto-filter OUT_OF_SCOPE)
- Stage 3: Conversion (lightspeed-evaluation format)
Pro tip: Use ./scripts/demo_heal_workflow.sh which shows all 3 stages with:
- Interactive pauses for explanation
- Progress tracking and timing
- Results summary after each stage
- Visual workflow diagram at end
- Quick mode (
--quick) for 10-ticket demos
The project includes a complete demo automation script at scripts/demo_heal_workflow.sh.
# Make executable (first time only)
chmod +x scripts/demo_heal_workflow.sh
# Quick demo mode (10 tickets, ~5-10 minutes)
./scripts/demo_heal_workflow.sh --quick
# Full demo mode (all tickets, ~45-60 minutes)
./scripts/demo_heal_workflow.sh✅ Stage-by-stage execution with clear headers
✅ Interactive pauses - press Enter to continue
✅ Progress tracking - shows tickets processed, time elapsed
✅ Results summary - metrics after each stage
✅ Visual diagram - ASCII workflow at end
✅ Color output - green for stages, yellow for results
Stage 0: Prerequisites Check
→ Verifies uv, venv, config files
Stage 1: Extract JIRA Tickets
→ Runs extraction with scope check
→ Shows: Total, RHEL, OUT_OF_SCOPE counts
→ Displays sample extracted ticket
[Press Enter to continue...]
Stage 2: Pattern Discovery
→ Analyzes RHEL tickets, filters OUT_OF_SCOPE
→ Shows: Patterns found, top patterns by count
[Press Enter to continue...]
Stage 3: Convert to Evaluation Format
→ Creates pattern YAML files
→ Shows: Files created, ticket counts per pattern
Summary: Visual workflow diagram with actual counts
Live presentation:
- Use
--quickmode (10 tickets, faster) - Pause at each "Press Enter" to explain
- Show the logs, then narrate what happened
Pre-recording:
- Run full mode once, record it
- Use recording during presentation
- Or run
--quicklive for interactivity
Backup plan:
- Screenshot each stage's output
- If live demo fails, show screenshots
- Share demo recording + slides
- Provide GitHub repo link (when public)
- Schedule follow-up technical deep dive sessions
- Share extracted patterns report
- Discuss integration with existing workflows
- Questions asked (track for future demos)
- Interest level (stakeholder feedback)
- Action items / next steps identified
- Follow-up meetings scheduled
Key Messages to Emphasize:
- Fully Autonomous - Zero human intervention from JIRA to fix
- Grounded in Reality - Answers verified against actual docs
- Production Ready - Quality loop ensures answers meet standards
- Scales Efficiently - Pattern-based fixing (10-15x gain)
- Auditable - Source URLs + evaluation metrics for every answer
What Makes HEAL Different:
- Not just another RAG system
- Not just prompt engineering
- Not manual test case creation
- It's an autonomous agent system that handles the entire workflow
The Vision:
Today: RHEL Lightspeed fixing Tomorrow: Any RAG application with documentation Future: Self-healing AI systems that diagnose and fix their own failures
| Section | Duration | Cumulative |
|---|---|---|
| Part 1: Challenge | 5 min | 5 min |
| Part 2: Architecture | 8 min | 13 min |
| Part 3: Bootstrap Demo | 15 min | 28 min |
| Part 4: Pattern Fix | 10 min | 38 min |
| Part 5: Results | 5 min | 43 min |
| Q&A Buffer | 7 min | 50 min |
Total: 43-50 minutes (adjust based on audience engagement)
Demo is successful if audience understands:
✅ The problem HEAL solves (RAG fixing at scale)
✅ How the autonomous multi-agent system works
✅ The value of the autonomous quality loop
✅ Pattern-based fixing efficiency gains
✅ Real metrics showing 96%+ success rate
✅ Path to production deployment
Demo is excellent if audience:
🌟 Asks questions about integrating with their workflows
🌟 Requests follow-up technical sessions
🌟 Discusses expanding to other use cases
🌟 Shows excitement about the autonomous approach