Upload a document. Get verified evidence.
BorderAudit's AI extracts every relevant field from your trade documents — invoices, Statements on Origin, supplier declarations — then cross-references against your customs data and validates against trade agreement requirements. In seconds, not hours.
Document extraction result
SUPPLIER INVOICE — INV-2025-0847
⚠ Classification alert: Declared HS code 6204.62.31 does not match supplier's product description “knitted cotton trousers” — expected heading 6103 or 6104.
What the AI extracts and verifies
Each document type triggers a different extraction and validation pipeline — matched to trade agreement requirements.
Supplier invoice extraction
AI reads your supplier invoices and extracts every field that matters for customs compliance — then cross-references each one against your declaration data.
Structured field extraction
Invoice number, date, value, currency, line items, supplier details, EORI numbers — extracted with layout-aware AI that handles real-world document variation.
Declaration cross-referencing
Extracted values compared against your HMRC customs records. Mismatches between invoice values and declared customs values are flagged immediately.
Fuzzy matching for real-world documents
Supplier names, addresses, and reference numbers are matched with intelligent tolerance — handling abbreviations, formatting differences, and OCR artefacts.
page.tsx
globals.css
import { cn } from "@/lib/utils"; import clsx from "clsx"; import { PropsWithChildren } from "react"; type NoteProps = PropsWithChildren & { title?: string; type?: "note" | "danger" | "warning" | "success"; className?: string; }; export default function Note({ children, title = "Note", type = "note", className, }: NoteProps ) { const noteClassNames = clsx({ "dark:bg-stone-950/25 bg-stone-50": type == "note", "dark:bg-red-950 bg-red-100 border-red-200 dark:border-red-900": type === "danger", "dark:bg-orange-950 bg-orange-100 border-orange-200 dark:border-orange-900": type === "warning", "dark:bg-green-950 bg-green-100 border-green-200 dark:border-green-900": type === "success", });
@import "tailwindcss"; @plugin "tailwindcss-animate"; @import "../styles/syntax.css" layer(utilities); @import "../styles/theme.css" layer(utilities); @custom-variant dark (&:where(.dark, .dark *)); @theme inline { --color-brand: var(--brand); --color-brand-foreground: var(--brand-foreground); --color-light: var(--light); --color-light-foreground: var(--light-foreground); --color-background: var(--background); --color-foreground: var(--foreground); --color-sidebar-ring: var(--sidebar-ring);