diff --git a/src/app/(dashboard)/[portSlug]/admin/berths/page.tsx b/src/app/(dashboard)/[portSlug]/admin/berths/page.tsx
index 5bd8c22d..8b164ffd 100644
--- a/src/app/(dashboard)/[portSlug]/admin/berths/page.tsx
+++ b/src/app/(dashboard)/[portSlug]/admin/berths/page.tsx
@@ -1,6 +1,6 @@
import Link from 'next/link';
import type { Route } from 'next';
-import { AlertCircle, Anchor, FileSearch } from 'lucide-react';
+import { AlertCircle, Anchor, FileSearch, BadgeDollarSign } from 'lucide-react';
import { PageHeader } from '@/components/shared/page-header';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
@@ -33,6 +33,13 @@ export default async function BerthsAdminIndex({
"Berths missing required fields after import / PDF parse. Surface what's missing per row and link straight to the edit sheet.",
icon: FileSearch,
},
+ {
+ href: `/${portSlug}/admin/berths/price-reconcile` as Route,
+ label: 'Price reconciliation',
+ description:
+ 'Parse the purchase price from each berth’s current spec sheet and review old→new per berth. Approve per row or in bulk; nothing is written until you approve.',
+ icon: BadgeDollarSign,
+ },
] as const;
return (
diff --git a/src/app/(dashboard)/[portSlug]/admin/berths/price-reconcile/page.tsx b/src/app/(dashboard)/[portSlug]/admin/berths/price-reconcile/page.tsx
new file mode 100644
index 00000000..7b1c5d0d
--- /dev/null
+++ b/src/app/(dashboard)/[portSlug]/admin/berths/price-reconcile/page.tsx
@@ -0,0 +1,15 @@
+import { PageHeader } from '@/components/shared/page-header';
+import { BerthPriceReconcileTable } from '@/components/berths/berth-price-reconcile-table';
+
+export default function BerthPriceReconcilePage() {
+ return (
+