diff --git a/AGENT2_ACTION_PLAN.md b/AGENT2_ACTION_PLAN.md new file mode 100644 index 0000000..7af5e9c --- /dev/null +++ b/AGENT2_ACTION_PLAN.md @@ -0,0 +1,365 @@ +# Agent 2 - 4-Hour Countdown Action Plan + +**Mission:** Get NaviDocs demo-ready for Riviera Plaisance presentation +**Deadline:** ~4 hours from now +**Agent:** Agent 2 - Current Functionality Tester + +--- + +## 🎯 THE GOAL +Demonstrate **working search functionality** with real document data to show sticky engagement potential. + +--- + +## ⚡ CRITICAL BLOCKER: Meilisearch Down + +**Status:** Service running on StackCP only, not localhost +**Impact:** Search feature broken (demo killer) +**Fix Time:** 5 minutes + +### IMMEDIATE ACTION (START NOW) + +```bash +# Option 1: Start Meilisearch locally (RECOMMENDED) +cd /tmp +meilisearch --http-addr 127.0.0.1:7700 \ + --master-key "5T66jrwQ8F8cOk4dUlFY0Vp59fMnCsIfi4O6JZl9wzU=" & + +# Verify it started +sleep 2 +curl http://localhost:7700/health +# Should return: {"status":"available"} +``` + +**Expected Output:** +```json +{"status":"available"} +``` + +**Time:** 5 minutes (including startup delay) + +--- + +## 📋 TIMELINE: What to Do When + +### PHASE 1: Setup (Next 10 min) +**Goal:** Get Meilisearch running + verify server connectivity + +``` +T+0:00 → Start Meilisearch (above command) +T+0:02 → Verify health endpoint +T+0:05 → CONFIRM: curl http://localhost:7700/health returns {"status":"available"} +T+0:10 → Meilisearch ready for indexing +``` + +**Checklist:** +- [ ] Meilisearch started +- [ ] Health endpoint responds +- [ ] API server still running on :8001 + +--- + +### PHASE 2: Test Data Creation (Next 20 min) +**Goal:** Create realistic test documents so demo has something to search + +**Problem:** No test data exists currently +- No sample PDFs +- No sample images +- No test entities in database + +**Action 1: Create Test Directory** +```bash +mkdir -p /home/setup/navidocs/test-data/documents +mkdir -p /home/setup/navidocs/test-data/receipts +``` + +**Action 2: Create Sample Test Files** + +**Option A: Quick Workaround (5 min)** +- Use any PDF you can find locally +- Or create a simple text document and convert to PDF +- Focus on having SOME data to search + +**Option B: Proper Sample Documents (15 min)** +- Download real boat manual samples from YachtWorld +- Create "Prestige 40 User Manual" (PDF) +- Create "Engine Maintenance Log" (text → PDF) +- Create 2-3 maintenance receipt images (JPG/PNG) + +**Sample Files Needed for Demo:** +1. `prestige-40-owners-manual.pdf` - Main document +2. `engine-maintenance-log.pdf` - Searchable document +3. `receipt-engine-service-2025.jpg` - OCR test image + +**Time:** 15-20 minutes total + +--- + +### PHASE 3: Index Test Data (Next 15 min) +**Goal:** Populate Meilisearch index so search has real results + +**Step 1: Create Test Entities in Database** +```javascript +// Add to /home/setup/navidocs/test-data/seed-entities.js + +const db = require('better-sqlite3')('./server/db/navidocs.db'); + +const orgId = 'org-demo-001'; +const boatId = 'boat-prestige-40'; + +// Create organization +db.prepare(` + INSERT INTO organizations (id, name, type, created_at) + VALUES (?, ?, ?, datetime('now')) +`).run(orgId, 'Riviera Plaisance Demo', 'boat-dealer', Date.now() / 1000); + +// Create boat entity +db.prepare(` + INSERT INTO entities (id, organization_id, name, entity_type, make, model, year) + VALUES (?, ?, ?, ?, ?, ?, ?) +`).run(boatId, orgId, 'Demo Prestige 40', 'boat', 'Jeanneau', 'Prestige 40', 2023); + +console.log('Test entities created'); +``` + +**Step 2: Upload Documents** +Use the `/api/upload` endpoint: +```bash +curl -X POST http://localhost:8001/api/upload \ + -F "document=@/home/setup/navidocs/test-data/documents/prestige-40-owners-manual.pdf" \ + -F "documentType=manual" \ + -F "entityId=boat-prestige-40" +``` + +**Step 3: Trigger Indexing** +Documents automatically index through BullMQ queue: +- Redis triggers processing +- OCR extracts text +- Meilisearch indexes pages + +**Expected Result:** +- Documents appear in search results +- Search for "engine" returns relevant pages +- OCR confidence visible in results + +**Time:** 10-15 minutes + +--- + +### PHASE 4: Verify Search Works (Next 10 min) +**Goal:** Confirm end-to-end search pipeline functional + +**Test 1: Health Checks** +```bash +# API health +curl http://localhost:8001/health + +# Meilisearch health +curl http://localhost:7700/health + +# Check Meilisearch index +curl http://localhost:7700/indexes +``` + +**Test 2: Search Query** +```bash +curl "http://localhost:8001/api/search?q=engine&limit=5" +``` + +**Expected Response:** +```json +{ + "results": [ + { + "id": "page_doc-001_p1", + "title": "Engine Maintenance - Prestige 40", + "text": "Engine model: Volvo Penta D6...", + "pageNumber": 1, + "ocrConfidence": 0.95 + } + ], + "totalResults": 3, + "processingTime": "42ms" +} +``` + +**Test 3: Filter by Entity** +```bash +curl "http://localhost:8001/api/search?q=propeller&entityId=boat-prestige-40" +``` + +**Time:** 5-10 minutes + +--- + +### PHASE 5: Create Demo Script (Next 15 min) +**Goal:** Have a polished demo sequence ready + +**Script: demo-search-walkthrough.sh** +```bash +#!/bin/bash + +echo "=== NaviDocs Search Demo ===" +echo "" +echo "1. Searching for 'engine maintenance'..." +curl -s "http://localhost:8001/api/search?q=engine+maintenance&limit=3" | jq . + +echo "" +echo "2. Searching for 'propeller' in Prestige 40..." +curl -s "http://localhost:8001/api/search?q=propeller&entityId=boat-prestige-40" | jq . + +echo "" +echo "3. Document statistics..." +curl -s "http://localhost:8001/api/stats" | jq . + +echo "" +echo "=== Demo Complete ===" +``` + +**Create file:** +```bash +cat > /home/setup/navidocs/demo-search-walkthrough.sh << 'EOF' +# ... content above ... +EOF +chmod +x /home/setup/navidocs/demo-search-walkthrough.sh +``` + +**Time:** 10 minutes + +--- + +## 📊 TIMELINE SUMMARY + +``` +T+0:00 → Start Meilisearch (5 min) +T+0:05 → Create test data (20 min) +T+0:25 → Index documents (15 min) +T+0:40 → Verify search (10 min) +T+0:50 → Create demo script (15 min) +T+1:05 → DEMO READY ✅ + +Remaining buffer: ~2 hours 55 minutes +``` + +--- + +## 🚨 CONTINGENCY PLAN + +**If Meilisearch still fails:** +1. Show API architecture without live search +2. Demo database schema and document structure +3. Show OCR pipeline code +4. Explain search integration (diagram) +5. Promise to deploy next week + +**If test data creation takes too long:** +1. Use pre-existing data from database +2. Skip OCR testing (too time-consuming) +3. Focus on search feature only + +**If upload endpoint fails:** +1. Directly insert test documents into database +2. Skip upload demo, focus on search/retrieval +3. Explain the full pipeline conceptually + +--- + +## 📝 Success Criteria for Demo + +✅ **MUST HAVE:** +1. Meilisearch running and responding to health check +2. At least 3 searchable documents in index +3. Search query returns relevant results (e.g., "engine" finds engine pages) +4. OCR confidence scores visible in results + +✅ **NICE TO HAVE:** +1. Document upload working end-to-end +2. Filter by entity working (entity-specific search) +3. Multiple document types (manual, receipt, spec) +4. Clean terminal output (no error logs) + +❌ **CAN SKIP:** +1. Full OCR processing (takes 5+ min per document) +2. Advanced search syntax (filters, facets) +3. Multi-user authentication demo +4. StackCP remote deployment verification + +--- + +## 🔧 Troubleshooting Quick Reference + +### Problem: Meilisearch won't start +```bash +# Check if port 7700 in use +lsof -i :7700 + +# Kill old process +pkill meilisearch + +# Start fresh +meilisearch --http-addr 127.0.0.1:7700 +``` + +### Problem: Search returns no results +```bash +# Check if index exists +curl http://localhost:7700/indexes + +# Check if documents indexed +curl http://localhost:7700/indexes/navidocs-pages/stats + +# Manually reindex +node /home/setup/navidocs/server/scripts/reindex-all.js +``` + +### Problem: API not responding +```bash +# Restart server +pkill -f "node.*navidocs.*index.js" +cd /home/setup/navidocs/server && npm start + +# Check port +lsof -i :8001 +``` + +--- + +## 📞 Quick Reference Commands + +**Verify Meilisearch:** +```bash +curl http://localhost:7700/health +``` + +**Test Search API:** +```bash +curl "http://localhost:8001/api/search?q=test" +``` + +**Check Database:** +```bash +sqlite3 /home/setup/navidocs/server/db/navidocs.db "SELECT COUNT(*) FROM documents;" +``` + +**View Recent Errors:** +```bash +tail -50 /tmp/navidocs-server.log +``` + +--- + +## ✅ Final Checklist (Before Demo) + +- [ ] Meilisearch running (`curl http://localhost:7700/health`) +- [ ] API server running (`curl http://localhost:8001/health`) +- [ ] Test documents indexed (at least 3) +- [ ] Search query works (`curl "http://localhost:8001/api/search?q=engine"`) +- [ ] Demo script ready and tested +- [ ] Terminal clean (no error logs visible) +- [ ] Time check: Showtime in ~X hours + +--- + +**Agent 2 Report Generated:** 2025-11-13 +**Time Budget:** ~1 hour to prepare + ~3 hours buffer before showtime +**Next Agent:** Agent 3 (UX/Sales Pitch) - Read this report to understand what's working/not working