AI Inventory Manager

{{ authError }}

Quick Upload

{{ fileObj.file.name }}

{{ fileObj.error }}

Uploading... {{ uploadProgress.current }} / {{ uploadProgress.total }}
Processing images with AI... Please wait.
{{ uploadError }}

Invoices

Date:
Filters: {{ invoiceSearch }} {{ dateFilterLabel }} {{ filteredInvoices.length }} result{{ filteredInvoices.length !== 1 ? 's' : '' }}
{{ selectedInvoiceIds.size }} selected {{ formatCurrency(selectedTotal) }}

Processing ({{ processingInvoices.length }})

  • {{ inv.vendor_name || 'Processing...' }}

    {{ inv.invoice_number || 'Analyzing...' }}

    Processing

Potential Duplicates ({{ duplicateInvoices.length }})

  • !

    {{ inv.vendor_name || 'Unknown' }}

    {{ inv.invoice_number }}

    {{ formatCurrency(inv.total_amount) }} ⚠️ DUPLICATE

{{ vendorOrAll }}

  • {{ inv.invoice_number || 'No Invoice #' }}

    {{ inv.vendor_name || 'Unknown Vendor' }}

    {{ formatDate(inv.purchase_date) }}

    {{ formatCurrency(inv.total_amount) }}

    ⚠️ Total Mismatch {{ inv.is_paid ? 'Paid' : 'Unpaid' }}
    • {{ item.description }} - {{ formatCurrency(item.total_price) }}
    • +{{ inv.items.length - 3 }} more items...

No invoices found. Upload one to get started!

Purchase History

Grouped by item across invoices

Loading purchase history...

{{ group.description }}

{{ group.category }} • {{ group.items.length }} purchase{{ group.items.length !== 1 ? 's' : '' }}

{{ formatCurrency(group.totalSpent) }}

×{{ group.totalQuantity }}

{{ item.vendor_name || 'Unknown Vendor' }}

{{ formatDate(item.purchase_date) }}

{{ formatCurrency(item.total_price) }}

×{{ item.quantity }}

No items match your search.

No purchase history yet. Upload invoices to see items here!

{{ groupedPurchasedItems.length }} unique item{{ groupedPurchasedItems.length !== 1 ? 's' : '' }} • {{ purchasedItems.length }} total purchase{{ purchasedItems.length !== 1 ? 's' : '' }} Total: {{ formatCurrency(groupedPurchasedItems.reduce((sum, g) => sum + g.totalSpent, 0)) }}

Inventory

Filters: {{ inventorySearchMain }} {{ inventoryCategoryFilter }}

{{ category }} ({{ group.length }})

+{{ item.images.length - 1 }}

{{ item.name }}

{{ item.category }}

Qty: {{ item.quantity }}
{{ item.condition }} {{ item.status }}

No inventory items match your filters.

No inventory items found. Upload one to get started!

Reports & Analytics

Loading analytics data...

Total Invoices

{{ userStats.total_invoices || 0 }}

Total Spending

{{ formatCurrency(userStats.total_spent || 0) }}

Inventory Items

{{ userStats.inventory_items || 0 }}

Last 30 Days

{{ formatCurrency(userStats.last_30_days_spent || 0) }}

Spending Over Time

No spending data available

Spending by Category

No category data available

Top Vendors

By total spending

{{ index + 1 }}

{{ vendor.vendor_name || 'Unknown Vendor' }}

{{ vendor.invoice_count || 0 }} invoice{{ (vendor.invoice_count || 0) !== 1 ? 's' : '' }}

{{ formatCurrency(vendor.total_spent || 0) }}

avg {{ formatCurrency(vendor.average_invoice || 0) }}

No vendor data available

Category Breakdown

Spending and item count

{{ cat.category || 'Uncategorized' }} {{ formatCurrency(cat.total_spent || 0) }}
{{ cat.item_count || 0 }} items {{ ((cat.total_spent / (categoryTotalSpending || 1)) * 100).toFixed(1) }}%

No category data available

Inventory Summary

{{ inventoryAnalytics.total_items || 0 }}

Total Items

{{ formatCurrency(inventoryAnalytics.total_value || 0) }}

Total Value

{{ inventoryAnalytics.active_items || 0 }}

Active Items

{{ inventoryAnalytics.category_count || 0 }}

Categories

{{ documentUploadToastMessage }}

Upload Documents

Max 20 files, 10MB each

{{ fileObj.file.name }}

{{ fileObj.error }}

Uploading... {{ documentUploadProgress.current }} / {{ documentUploadProgress.total }}
{{ documentUploadError }}

Documents

Date:
Filters: {{ documentSearchQuery }} {{ documentCategoryFilter }} {{ documentDateFilterLabel }} {{ filteredDocuments.length }} result{{ filteredDocuments.length !== 1 ? 's' : '' }}

Loading documents...

Recent Uploads

{{ doc.title || (doc.status === 'pending' ? 'Processing...' : 'Untitled Document') }}

{{ doc.description || '' }}

{{ doc.category }} Processing {{ formatDate(doc.created_at) }}

{{ category }} ({{ group.length }})

{{ doc.title || (doc.status === 'pending' ? 'Processing...' : 'Untitled Document') }}

{{ doc.description || '' }}

{{ doc.category }} Processing {{ formatDate(doc.created_at) }}

No documents match your filters.

No documents found. Upload one to get started!

Total Users
{{ adminStats.total_users }}
Pending Approval
{{ adminStats.pending_users }}
Admin Users
{{ adminStats.admin_users }}
Activity (24h)
{{ adminStats.recent_activity_count }}
Name Status Role Created Actions
{{ user.name }}
{{ user.status }} Admin User {{ formatDate(user.created_at) }} (You)
No users found.
Time User Action Resource Details
{{ formatDate(log.created_at) }}
{{ log.user_name || 'Unknown' }}
{{ log.action }} {{ log.resource_type || '-' }} {{ log.details ? JSON.stringify(log.details).substring(0, 50) + '...' : '-' }}
No activity logs found.

Registration Settings

Registration Mode
Control how new users can register

{{ registrationMode === 'open' ? 'Open Registration' : registrationMode === 'semi-closed' ? 'Semi-Closed Registration' : 'Closed Registration' }}

{{ registrationMode === 'open' ? 'Anyone can register and immediately use the system.' : registrationMode === 'semi-closed' ? 'New users must be approved by an admin before they can log in.' : 'No new registrations are allowed. Only existing users can log in.' }}

Processing Settings

OCR Method
Text extraction method for invoices

{{ ocrMethod === 'document_ai' ? 'Document AI' : ocrMethod === 'cloud_vision' ? 'Cloud Vision' : 'No OCR' }}

{{ ocrMethod === 'document_ai' ? 'Premium quality text extraction using Google Document AI. Best for complex invoices.' : ocrMethod === 'cloud_vision' ? 'Standard text extraction using Google Cloud Vision. Good for most invoices.' : 'Skip OCR and send invoice image directly to AI for analysis. Fastest but may be less accurate.' }}

Analysis Method
Data extraction engine for invoice analysis

{{ analysisMethod === 'openai' ? 'OpenAI GPT-4 Vision' : 'Document AI Extractor' }}

{{ analysisMethod === 'openai' ? 'Uses OpenAI GPT-4 Vision with OCR text for intelligent data extraction. Flexible and handles various invoice formats.' : 'Uses a custom-trained Google Document AI processor. Optimized for specific invoice layouts.' }}

User Profile

{{ currentUser.name ? currentUser.name.charAt(0).toUpperCase() : '?' }}

{{ currentUser.name }}

{{ currentUser.status || 'active' }} Admin

Account Created

{{ formatDate(currentUser.created_at) }}

User ID

{{ currentUser.id }}

Loading profile...

Account Actions

Change Password

Update your account password

Coming Soon

Preferences

Default Date Filter

Initial date range when viewing invoices

Default Invoice Grouping

How invoices are organized by default

App Information

Version

AI Inventory Manager

{{ appVersion }}

API Connection

{{ apiStatusMessage }}

{{ apiConnectionStatus === 'connected' ? 'Connected' : apiConnectionStatus === 'checking' ? 'Checking...' : 'Disconnected' }}

Help & Support

Get help or report an issue

Scroll to zoom ({{ (zoomLevel * 100).toFixed(0) }}%) | Double-click to toggle | Drag to pan