Introduction
AMO CertVault digitises the certificate management workflow for Aircraft Approved Maintenance Organisations. Upload a PDF certificate, and the AI engine automatically extracts part numbers, serial numbers, suppliers, dates, and certificate types — even from multi-item documents with dozens of line items, including kit/overhaul sub-components.- Quality Managers reviewing incoming spares documentation
- Store Personnel receiving and cataloguing parts
- Auditors verifying compliance trails
- Administrators managing user access and system configuration
Quick Start
Create Your Account
/auth and create an account with your email and password. You will receive a Visitor role by default.Await Admin Approval
Upload Your First Certificate
Review AI Extraction
Features
AI-Powered Extraction
Multi-Item Certificates
Kit Sub-Item Extraction
14.1, 14.2) to preserve parent-child relationships.Role-Based Access (RBAC)
Camera Scanning
Batch Upload
Certificate Cart and Bulk Print
Duplicate Detection
AI Chat Assistant
PDF Compression
Complete Audit Trail
Full-Text Search
tsvector-based search across certificates and items. Trigram similarity matching handles typos and partial matches. Debounced input for responsive UX.System Architecture
Certificate Processing
Extraction Pipeline
Extraction Algorithm
- AI Path (Primary)
- Regex Fallback
Kit Sub-Item Extraction
kit, set, overhaul, assembly, hardware kit, gasket set
Example Extraction:
| Line | Part Number | Description | Type |
|---|---|---|---|
| 14 | SL12034-SC | GASKET SET SINGLE CYLINDER | Kit Parent |
| 15 | SL66732 | GASKET | Sub-component |
| 16 | SL67193 | GASKET | Sub-component |
| 17 | SL71481 | RING, OIL SEAL | Sub-component |
- Kit parent rows — teal gradient background with
KITbadge pill - Sub-component rows — indented with teal connector line and junction dot
- Hover highlights the entire kit group
Certificate Type Mapping
Supported Certificate Types (37+ input patterns)
Supported Certificate Types (37+ input patterns)
| Input Pattern(s) | Normalised Type | Common Sources |
|---|---|---|
| EASA Form 1, JAA Form 1, TCCA Form One | easa-form-1 | European / Canadian MROs |
| FAA 8130-3, FAA Form 8130-3, Airworthiness Approval | 8130-3 | FAA-certified facilities |
| Certificate of Conformity, COC, C of C | coc | Manufacturers and distributors |
| Certificate of Release to Service, CRS | crs | Maintenance organisations |
| Test Report, Inspection Report | test-report | Testing laboratories |
| Shipping Document, Packing Slip | shipping | Logistics and supply chain |
| CAAC Form, ANAC Form, DGCA, Serviceable Tag | other | Other national authorities |
Cart and Bulk Operations
Add to Cart
Review Cart
Bulk Print PDFs
Duplicate Management
The Duplicates page identifies certificates that share the same part number across different uploads, enabling quick review and cleanup.Detection Algorithm
AI Chat Assistant
The AI Assistant provides streaming responses about aviation certificates and compliance, rendered with full Markdown formatting.cert-ai-chat edge function connecting to Gemini AI via the Lovable AI Gateway. No API key configuration is required — it works out of the box.Capabilities
Certificate Knowledge
Compliance Guidance
System Help
General Aviation
Response Formatting
The AI assistant renders responses with rich Markdown:- Headers (
##,###) with teal accent styling - Bold and italic text for emphasis
- Inline code and fenced code blocks with monospace font
- Tables with borders and header highlighting
- Ordered and unordered lists with proper nesting
- Clickable links to external references
User Roles and Permissions
Permission Matrix
- Permissions Grid
- Role Lifecycle
- Security Model
| Permission | Admin | Quality Manager | Store Personnel | Auditor | Visitor |
|---|---|---|---|---|---|
| View certificates | ✅ | ✅ | ✅ | ✅ | ❌ |
| Upload certificates | ✅ | ✅ | ✅ | ❌ | ❌ |
| Edit certificates | ✅ | ✅ | ❌ | ❌ | ❌ |
| Delete certificates | ✅ | ✅ | ❌ | ❌ | ❌ |
| Batch upload | ✅ | ✅ | ✅ | ❌ | ❌ |
| Camera scanning | ✅ | ✅ | ✅ | ❌ | ❌ |
| View audit logs | ✅ | ✅ | ❌ | ✅ | ❌ |
| Manage users | ✅ | ❌ | ❌ | ❌ | ❌ |
| Certificate cart | ✅ | ✅ | ✅ | ✅ | ❌ |
| Duplicate management | ✅ | ✅ | ✅ | ✅ | ❌ |
| AI Assistant | ✅ | ✅ | ✅ | ✅ | ❌ |
| System settings | ✅ | ❌ | ❌ | ❌ | ❌ |
User Management Dashboard (Admin)
Stats Overview
Interactive Permissions Matrix
User Table
Role Summary Cards
Data Model
search_vector columns enable PostgreSQL full-text search with automatic updates via triggers.API Reference
Edge Functions
extract-certificate — AI Certificate Extraction
extract-certificate — AI Certificate Extraction
POSTAuthentication: Bearer token (anon key)Extracts structured data from a PDF certificate using Gemini AI with regex fallback.Request Body
compress-certificate — PDF Compression
compress-certificate — PDF Compression
POSTAuthentication: Bearer token (anon key)Compresses a PDF certificate using structural optimisation with pdf-lib.Request Body
cert-ai-chat — Streaming AI Chat
cert-ai-chat — Streaming AI Chat
POSTAuthentication: Bearer token (anon key)Streaming AI chat for aviation certificate questions using Server-Sent Events (SSE).Request Body
ReadableStream with chunk-by-chunk parsing for real-time display.Application Routes
| Route | Page | Access Level | Description |
|---|---|---|---|
/ | Landing / Dashboard | Public / Authenticated | Marketing page (unauthenticated) or interactive dashboard (authenticated) |
/auth | Login and Sign Up | Public | Email/password authentication with form validation |
/pending | Pending Approval | Visitor | Displayed after sign-up while awaiting admin activation |
/certificates | Certificate List | Authenticated | Searchable, paginated list with status filters |
/certificates/:id | Certificate Detail | Authenticated | Full certificate view with items table and kit indicators |
/upload | Upload Certificate | Upload roles | Single PDF upload with AI extraction preview |
/batch-upload | Batch Upload | Upload roles | Multi-file upload with progress tracking |
/batch-history | Batch History | Authenticated | Historical batch upload records and item details |
/scan | Camera Scanner | Upload roles | Device camera capture with crop overlay |
/cart | Certificate Cart | Authenticated | Selected items for bulk print / CSV export |
/duplicates | Duplicate Management | Authenticated | Part-number-grouped duplicate review and cleanup |
/ai-assistant | AI Chat | Authenticated | Streaming AI assistant for certificate questions |
/audit-logs | Audit Logs | Admin / QM / Auditor | Paginated audit trail with action filtering |
/settings | User Settings | Authenticated | Profile and preference management |
/admin/users | User Management | Admin only | User activation, role assignment, permissions matrix |
/privacy-policy | Privacy Policy | Public | Data handling and privacy information |
Tech Stack
Frontend
State Management
Backend
AI and Processing
| Layer | Technology | Purpose |
|---|---|---|
| Framework | React 18, TypeScript | Component architecture, type safety |
| Build | Vite 5 | Fast HMR, optimised production builds |
| Styling | Tailwind CSS 3, shadcn/ui | Utility-first CSS, accessible components |
| Routing | React Router v6 | Client-side routing with protected routes |
| Server State | TanStack Query v5 | Data fetching, caching, mutations |
| Backend | Lovable Cloud (PostgreSQL, Auth, Storage) | Full-stack serverless platform |
| AI | Gemini 2.5 Flash | Certificate extraction, chat assistant |
| pdf-lib | Structural compression, byte parsing | |
| Charts | Recharts | Dashboard visualisations |
| Markdown | react-markdown + remark-gfm | AI chat response formatting |
| PWA | vite-plugin-pwa | Offline support, installability |
| Search | PostgreSQL tsvector + pg_trgm | Full-text and fuzzy search |
Progressive Web App (PWA)
AMO CertVault is a Progressive Web App — installable on mobile and desktop with offline caching and a native-like experience. Configuration:- Install Prompt: Automatic on supported browsers (Chrome, Edge, Safari)
- Icons: 192×192 and 512×512 PNG (including maskable)
- Apple Touch Icon: Configured for iOS home screen
- Theme Colour: Teal (
#1a9e8f) - Display: Standalone (no browser chrome)
- Orientation: Portrait-primary
- Service Worker: Auto-update strategy via Workbox
- Viewport:
width=device-width, initial-scale=1.0, viewport-fit=cover
SEO and Performance
Meta and Structured Data
Image Optimisation
loading="lazy" on non-critical images, explicit width/height to prevent CLS, alt text on all images, role="img" with aria-label on SVGs.Font Performance
font-display: swap to prevent FOIT.Core Web Vitals
Troubleshooting
AI extraction returns no data or low confidence
AI extraction returns no data or low confidence
- PDF is password-protected or image-only without embedded text
- Document is not a recognised aviation certificate type
- AI rate limits triggered fallback to regex extraction
- Verify the PDF opens normally in a PDF reader
- Check that it contains at least 2 aviation keywords (P/N, S/N, EASA, FAA, etc.)
- Try re-uploading — temporary rate limits resolve automatically
- For image-only PDFs, use the Camera Scanner which handles image processing
Duplicate detection shows unexpected results
Duplicate detection shows unexpected results
- Different serial numbers with the same part number are flagged as duplicates
- The same part from different certificates is flagged as a duplicate
- This is intentional for inventory reconciliation
User cannot access system after sign-up
User cannot access system after sign-up
- An Admin must navigate to User Management
- Locate the user in the table
- Change their role from
visitorto an operational role - Ensure the Active toggle is enabled
PDF compression flags an anomaly
PDF compression flags an anomaly
- May indicate the PDF contains very little actual content
- May indicate excessive metadata or duplicate objects
- The original PDF is always preserved alongside the compressed version
Batch upload shows errors for some files
Batch upload shows errors for some files
- Invalid PDF: Corrupted or non-PDF files are rejected
- Extraction failure: AI and regex both failed to extract meaningful data
- Duplicate detected: A certificate with the same part number already exists (skipped, not error)
Camera scanner not working
Camera scanner not working
- Allow camera access when prompted
- Ensure HTTPS connection (camera API requires secure context)
- On iOS, use Safari — other browsers may not support the camera API
Changelog
| Version | Date | Highlights |
|---|---|---|
| 2.6 | March 2026 | Enhanced Mintlify documentation, SEO optimisation, deployment fixes |
| 2.5 | March 2026 | Kit sub-item extraction, parent-child visual indicators, AI markdown rendering |
| 2.4 | March 2026 | Certificate cart, duplicate management page, bulk print and CSV export |
| 2.3 | March 2026 | AI chat assistant with streaming, batch upload history page |
| 2.2 | March 2026 | Dashboard redesign with Recharts, user management permissions matrix |
| 2.1 | March 2026 | Camera scanning, batch upload, PDF compression with anomaly detection |
| 2.0 | March 2026 | Multi-item certificate support, full-text search with tsvector + pg_trgm |
| 1.0 | February 2026 | Initial release — single-item extraction, RBAC, audit logging |
Additional Resources
EASA Part 21
FAA Order 8130.21
Source Code
Built by Brian KN ·