Platform Capabilities
Full Feature Overview
Ocriva is organized around the five stages of the Document Automation Transformer (DAT) pipeline: Ingest, Extract, Transform, Automate, and Integrate. This page documents every major capability, organized by the stage it belongs to.
Stage 1: Ingest
The Ingest stage handles document receipt — accepting files from wherever they originate and preparing them for processing.
Single File Upload
- Drag-and-drop interface in the web application
- Click-to-browse file selection
- Immediate upload confirmation with file preview
- Supported formats: PDF, JPG, PNG, WebP, BMP
Batch Upload
- Upload up to 50 files in a single submission
- Drag-and-drop multiple files simultaneously
- Per-file status tracking during batch upload
- Automatic queueing for batch processing
- Combined export on batch completion
IMPORTANT
Batch upload is limited to 50 files per submission. For volumes exceeding 50 files, submit multiple batches. Each document is billed individually — a batch of 50 consumes 50 credits.
API Upload
- REST API endpoint for programmatic document submission
- Supports multipart/form-data for file uploads
- Returns processing ID for status tracking
- Authenticated via JWT or API token
- Full OpenAPI/Swagger documentation available
Webhook-Triggered Ingestion
- Accept documents from upstream systems via webhook events
- Event-driven processing pipelines
- Configurable per project
LINE Integration
- Mobile document capture via LINE messaging
- Users photograph documents on mobile devices and submit via LINE
- Documents are routed to the configured Ocriva project automatically
- Results can be returned to the LINE conversation
Stage 2: Extract
The Extract stage is where AI processes the document and identifies the data you need.
AI Providers
Ocriva connects to six AI providers. Each template specifies which provider and model to use.
| Provider | Model | Characteristics |
|---|---|---|
| OpenAI | GPT-4o | Best general accuracy, strong instruction following |
| OpenAI | GPT-4o-mini | Faster, lower cost, suitable for high-volume simpler documents |
| Google Gemini | Gemini 2.0 Flash | High-speed processing, strong at structured extraction |
| Google Gemini | Gemini 2.5 Pro | Top-tier accuracy, long document support |
| Anthropic | Claude Sonnet | Nuanced understanding, long-form documents, contracts |
| Anthropic | Claude Haiku | Fast and cost-efficient for routine extraction |
| DeepSeek | DeepSeek V3 | Cost-efficient general extraction |
| DeepSeek | DeepSeek R1 | Reasoning-enhanced for complex documents |
| Qwen | Qwen VL | Visual-language model with strong Asian script support |
| Kimi | Moonshot Vision | Long context document understanding |
TIP
Choose your AI provider based on the trade-off between accuracy and cost. GPT-4o offers the highest accuracy, while GPT-4o-mini and Gemini Flash provide excellent value for routine documents.
TIP
For cost-sensitive, high-volume workloads use GPT-4o-mini or Gemini Flash. For accuracy-critical documents (medical, legal, financial) use GPT-4o, Gemini 2.5 Pro, or Claude Sonnet. Benchmark both on your actual documents before committing to a model.
Multi-Language Support
- Thai and English in the same document, handled in a single extraction pass
- No separate language configuration required
- Character recognition for Thai script, including common handwriting variants
- Mixed-language documents (e.g., Thai invoices with English product codes) extracted accurately
Extraction Modes
Structured Extraction (JSON Schema)
Define a JSON schema in the template. Ocriva instructs the AI to return data that conforms to the schema. Output is always valid, typed JSON.
Example schema:
{
"invoice_number": "string",
"vendor_name": "string",
"total_amount": "number",
"due_date": "date",
"line_items": [
{
"description": "string",
"quantity": "number",
"unit_price": "number"
}
]
}Free Text Extraction
Provide a prompt describing what to extract. The AI returns a text response. Useful for summaries, contract analysis, or any extraction that does not map to a fixed schema.
Templates
Templates are reusable extraction configurations. Once created, a template processes every document of the same type in the same way.
Each template defines:
- Template Name — for identification
- AI Provider and Model — which AI to use
- Extraction Mode — structured JSON schema or free text
- Prompt / Instructions — what to extract and how to handle edge cases
- Output Format — the downstream format for results
- Project Assignment — which project the template belongs to
Preset Templates
Ocriva includes 19 preset templates for common document types:
| Category | Templates |
|---|---|
| Finance | Invoice, Tax Invoice, Receipt, Purchase Order, Expense Report |
| Identity | Thai ID Card, Passport, Driver's License |
| Legal | Contract Summary, Non-Disclosure Agreement |
| HR | Resume/CV, Employment Certificate, Payslip |
| Logistics | Shipping Label, Bill of Lading, Customs Declaration |
| Medical | Medical Certificate, Prescription, Lab Report |
| Education | Transcript, Certificate of Completion |
Custom Templates
Create custom templates for document types not covered by presets:
- Define any field schema for any document type
- Write custom AI instructions tailored to your specific documents
- Configure normalization rules (date formats, number formats, name ordering)
- Test extraction on sample documents before deploying
- Iterate and improve based on extraction history
Data Files (RAG)
Attach reference documents to a template to improve extraction accuracy:
- Upload company-specific glossaries, numbering conventions, or codebooks
- The AI uses these reference documents as context during extraction
- Useful for internal document types with organization-specific conventions
- Files are scoped per template, not shared across templates
Stage 3: Transform
The Transform stage converts extracted data into the format your downstream systems expect.
Output Formats
| Format | Description | Best For |
|---|---|---|
| JSON | Structured key-value output with full nesting support | API integrations, databases, programmatic processing |
| CSV | Tabular flat file with configurable column ordering | Spreadsheets, data pipelines, analytics imports |
| Formatted report with extracted fields | Human review, archiving, audit trails | |
| DOCX | Editable Word document | Workflow review, annotation, editing |
| XML | Structured markup with element hierarchy | Legacy enterprise systems, EDI integrations |
| HTML | Web-formatted result | Web display, email embedding |
| Text | Plain text output | Simple pipelines, logging, debugging |
CSV Configuration
- Configure column ordering for CSV exports
- Map extracted field names to custom column headers
- Choose delimiter (comma, semicolon, tab)
- Batch CSV combines rows from multiple documents into a single file
Image Generation Mode
- Generate a visual representation of extracted data overlaid on the source document
- Useful for review workflows where annotated documents need to be stored alongside records
- Output as image or PDF
Batch Export
- Process 50 documents in a batch and export all results as a single file
- Combined JSON array, combined CSV, or individual file per document
- Configurable at the template level
Stage 4: Automate
The Automate stage handles volume, scheduling, and reliability — turning document processing into operational infrastructure.
Batch Processing
- Submit up to 50 documents in a single batch
- Real-time progress tracking: each document shows pending, in_progress, completed, or failed status
- Parallel processing — multiple documents processed simultaneously
- Batch-level status summary: total count, completed count, failed count
- WebSocket-powered live UI updates — no page refresh required
Processing Queue
- All documents enter a managed queue on submission
- Queue processes in order with configurable concurrency
- Automatic retry on transient failures
- Failed documents are flagged with error details for review
- Queue status visible in the web interface and via API
Processing History
- Every document processed through Ocriva has a permanent history record
- Record includes: source document, applied template, AI model used, status, timestamps, result data
- Filter and search history by project, template, status, date range
- Re-process any historical document with the same or updated template
- Export history records for audit or reporting
Credit System
- Processing each document consumes credits based on document complexity and AI model used
- Credits are purchased in advance via Stripe
- Real-time credit balance displayed in the web interface
- Low-balance alerts configurable per organization
- Detailed credit usage history by project, template, and AI provider
- Credit consumption is auditable: each processing record shows credits consumed
WARNING
If your credit balance reaches zero, document processing will stop until credits are purchased. Configure low-balance alerts in organization settings to avoid unexpected processing interruptions.
Organization → Project → Template Hierarchy
Organization (billing entity, team management)
└── Project (logical grouping for a use case or department)
├── Templates (extraction configurations)
├── Processing History
├── Webhooks
└── API Tokens- Multiple organizations per account (for agencies or multi-entity companies)
- Multiple projects per organization (finance, HR, logistics, etc.)
- Multiple templates per project (invoice extractor, receipt scanner, etc.)
- Billing and credits managed at the organization level
Status Tracking
Every document processing record has one of four statuses:
| Status | Meaning |
|---|---|
pending | Document received, waiting in queue |
in_progress | AI is currently processing the document |
completed | Extraction successful, result available |
failed | Processing failed, error details available |
WARNING
Credits are deducted for each document processed. Monitor your credit balance in the dashboard and set up alerts before credits run out.
Stage 5: Integrate
The Integrate stage delivers results to the systems that need them, automatically.
REST API
- Full CRUD API for all Ocriva resources
- Endpoints for: organizations, projects, templates, uploads, processing history, analytics
- Authentication via JWT (session-based) or API tokens (service-to-service)
- Paginated list endpoints with filtering and sorting
- OpenAPI 3.0 specification available at
/api/docs - Swagger UI for interactive API exploration
API Tokens
- Generate API tokens per project for external integrations
- Tokens are scoped to a specific project
- Multiple tokens per project (one per integration)
- Tokens can be revoked without affecting other integrations
Webhooks
Configure webhook endpoints to receive event notifications when processing events occur.
Supported Events:
| Event | Triggered When |
|---|---|
document.uploaded | A document is received and queued |
document.processed | A document is completed or failed |
batch.completed | All documents in a batch have been processed |
Webhook Payload Structure:
{
"event": "document.processed",
"timestamp": "2026-03-31T10:15:00Z",
"organizationId": "org_xyz",
"projectId": "proj_abc",
"processingId": "proc_123",
"status": "completed",
"result": {
"fields": { ... },
"format": "json"
}
}- Webhooks include a signature header for payload verification
- Failed webhook deliveries are retried with exponential backoff
- Delivery history and status visible per webhook
WebSocket Real-Time Notifications
- Connect via Socket.IO for real-time processing events
- Processing status updates pushed to connected clients as they happen
- Batch progress events streamed live
- Credit balance updates pushed in real time
- No polling required — the UI stays current automatically
LINE Integration
- Connect Ocriva to a LINE Official Account
- Users send document photos directly via LINE
- Documents are processed per the project's default template
- Results returned to the LINE conversation (configurable)
- Useful for mobile-first workflows: field staff, delivery personnel, branch operations
Notifications
- In-app notifications for processing completions, errors, and credit alerts
- Email notifications for batch completions and low-credit warnings
- LINE push notifications for connected accounts
- Notification preferences configurable per user
OpenAPI / Swagger Documentation
- Interactive API documentation at
/api/docs - Full request/response schemas for all endpoints
- Authentication integrated into the Swagger UI
- Download OpenAPI spec for code generation or API client tools
Security & Access Control
- JWT authentication — session-based auth for web application users
- API token authentication — token-based auth for programmatic integrations
- Organization-level data isolation — organizations cannot access each other's data
- Project-level scoping — API tokens are scoped to individual projects
- httpOnly cookies — session tokens stored in httpOnly cookies, not accessible to JavaScript
- Input validation — all API inputs validated with class-validator (NestJS)
- Webhook signature verification — payloads signed with HMAC for authenticity verification
IMPORTANT
API tokens are scoped to a single project. Generate separate tokens for each external system you integrate with. If a token is compromised, you can revoke it without disrupting other integrations.
