#!/usr/bin/env python3 """ Clean Market Cap Validation CLI Validates market cap claims from pitch deck slides using RAG search. Reports are automatically organized in the processed/ directory. """ import sys import os import argparse from modules.document_validator import ( validate_document_claims, validate_all_processed_documents ) def main(): parser = argparse.ArgumentParser( description="Validate market cap claims from pitch deck slides using RAG search" ) parser.add_argument( '--file', '-f', help='Path to JSON file containing slide data' ) parser.add_argument( '--document', '-d', help='Document name for organized reporting' ) parser.add_argument( '--all', action='store_true', help='Validate all documents in processed/ folder' ) parser.add_argument( '--no-save', action='store_true', help='Do not save validation report to file' ) parser.add_argument( '--api-key', help='OpenRouter API key (or set OPENROUTER_API_KEY environment variable)' ) args = parser.parse_args() # Get API key api_key = args.api_key or os.getenv('OPENROUTER_API_KEY') if not api_key: print("āŒ Error: OpenRouter API key required") print(" Set OPENROUTER_API_KEY environment variable or use --api-key") sys.exit(1) try: print("šŸ” Market Cap Validation with RAG Search") print("=========================================") if args.all: print("šŸ“ Validating all documents in processed/ folder") results = validate_all_processed_documents(api_key=api_key) print(f"\nāœ… Validation Complete!") print(f"šŸ“Š Processed {len(results)} documents:") for doc_name, doc_results in results.items(): if 'error' in doc_results: print(f" āŒ {doc_name}: {doc_results['error']}") else: summary = doc_results['summary'] print(f" āœ… {doc_name}: {summary['total_claims']} claims, {summary['accuracy_rate']:.1f}% accurate") if doc_results['report_filename']: print(f" šŸ“„ Report: {doc_results['report_filename']}") elif args.file: document_name = args.document or "Unknown-Document" print(f"šŸ“ Validating from file: {args.file}") import json with open(args.file, 'r', encoding='utf-8') as f: slide_data = json.load(f) results = validate_document_claims( document_name, slide_data, api_key=api_key, save_report=not args.no_save ) # Display results summary = results['summary'] print(f"\nāœ… Validation Complete!") print(f"šŸ“Š Results Summary:") print(f" - Total Claims Found: {summary['total_claims']}") print(f" - Accurate Claims: {summary['accurate_claims']}") print(f" - Inaccurate Claims: {summary['inaccurate_claims']}") print(f" - Accuracy Rate: {summary['accuracy_rate']:.1f}%") if results['report_filename']: print(f"šŸ“„ Detailed report saved to: {results['report_filename']}") else: print("šŸ“ Validating all documents in processed/ folder (default)") results = validate_all_processed_documents(api_key=api_key) print(f"\nāœ… Validation Complete!") print(f"šŸ“Š Processed {len(results)} documents:") for doc_name, doc_results in results.items(): if 'error' in doc_results: print(f" āŒ {doc_name}: {doc_results['error']}") else: summary = doc_results['summary'] print(f" āœ… {doc_name}: {summary['total_claims']} claims, {summary['accuracy_rate']:.1f}% accurate") if doc_results['report_filename']: print(f" šŸ“„ Report: {doc_results['report_filename']}") except Exception as e: print(f"āŒ Error: {e}") sys.exit(1) if __name__ == "__main__": main()