| 590 | // --- CLI --- |
| 591 | |
| 592 | function printUsage() { |
| 593 | console.log(` |
| 594 | Batch Processor - AI Document Analysis Pipeline |
| 595 | |
| 596 | Processes documents through tiered AI analysis with budget enforcement |
| 597 | and priority-based queue management. |
| 598 | |
| 599 | USAGE: |
| 600 | npx tsx scripts/pipeline/batch-processor.ts [options] |
| 601 | |
| 602 | OPTIONS: |
| 603 | --batch-size N Documents per batch (default: ${DEFAULT_BATCH_SIZE}) |
| 604 | --monthly-cap N Monthly budget cap in cents (default: ${DEFAULT_MONTHLY_CAP_CENTS} = ${formatCents(DEFAULT_MONTHLY_CAP_CENTS)}) |
| 605 | --tier 0|1 Force a specific tier (default: auto) |
| 606 | --dry-run Show what would be processed without doing it |
| 607 | --data-sets 9,1,5 Only process specific data sets |
| 608 | --limit N Max documents to process in this run |
| 609 | --model ID AI model: deepseek-chat (default) or gpt-4o-mini |
| 610 | --status Show queue status and budget, then exit |
| 611 | |
| 612 | TIERS: |
| 613 | 0 FREE Rule-based classification (person matching, doc type inference) |
| 614 | 1 PAID Full AI analysis (model selected via --model flag) |
| 615 | |
| 616 | PRIORITY QUEUE (highest first): |
| 617 | DS9 (100) Private emails, DOJ NPA documents |
| 618 | DS1 (80) FBI files, flight logs, contact books |
| 619 | DS5 (60) Grand jury transcripts, SDNY investigation |
| 620 | DS2 (40) FBI 302 interview reports |
| 621 | DS3 (35) Victim statements, witness interviews |
| 622 | DS4 (30) FBI Form 302 summaries |
| 623 | DS6 (25) Search warrants, property inventories |
| 624 | DS7 (20) Financial records |
| 625 | DS8 (15) Surveillance footage, MCC records |
| 626 | DS11 (10) Financial ledgers, additional manifests |
| 627 | DS12 (5) Supplemental late productions |
| 628 | DS10 (1) Visual/forensic media |
| 629 | |
| 630 | EXAMPLES: |
| 631 | # Dry run to see what would be processed |
| 632 | npx tsx scripts/pipeline/batch-processor.ts --dry-run |
| 633 | |
| 634 | # Process high-priority data sets with $2 budget |
| 635 | npx tsx scripts/pipeline/batch-processor.ts --data-sets 9,1,5 --monthly-cap 200 |
| 636 | |
| 637 | # Free tier only (no API costs) |
| 638 | npx tsx scripts/pipeline/batch-processor.ts --tier 0 |
| 639 | |
| 640 | # Process 50 documents max |
| 641 | npx tsx scripts/pipeline/batch-processor.ts --limit 50 |
| 642 | |
| 643 | # Check current status |
| 644 | npx tsx scripts/pipeline/batch-processor.ts --status |
| 645 | `); |
| 646 | } |
| 647 | |
| 648 | async function showStatus(): Promise<void> { |
| 649 | console.log("\n=== Batch Processor Status ===\n"); |