← back to Govarbitrage
src/app/privacy/page.tsx
130 lines
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Privacy Policy",
description:
"How GovArbitrage handles data across the website and the iOS app.",
};
const UPDATED = "August 6, 2026";
export default function PrivacyPolicyPage() {
return (
<main className="mx-auto max-w-3xl px-6 py-16 text-neutral-200">
<h1 className="text-3xl font-bold tracking-tight text-white">Privacy Policy</h1>
<p className="mt-2 text-sm text-neutral-400">Last updated: {UPDATED}</p>
<p className="mt-8 leading-relaxed">
GovArbitrage aggregates public government auction listings and helps you find
underpriced opportunities. This policy explains what data we handle across two
surfaces — the <strong>website</strong> at auctions.agentabrams.com and the{" "}
<strong>GovArbitrage iOS app</strong> — and how we handle it.
</p>
<Section title="What the iOS app collects">
<p>
The GovArbitrage iOS app does <strong>not</strong> track you and contains{" "}
<strong>no advertising</strong>. It links no analytics or advertising SDKs. By
default it stores only the API server address and an optional access credential you
enter in Settings; these are held encrypted on your device (via the system keychain)
and are sent only to the server you configure.
</p>
<p className="mt-4">
<strong>Optional Sign in with Apple.</strong> The app works fully without an account.
If you choose to sign in with Apple, we create a lightweight account and store your
Apple user identifier and — only if you share them — your name and email address.
These are used <strong>solely to authenticate you and link your account</strong>; they
are never used for tracking or advertising and are never sold. You can sign out at any
time in Settings, and you can request deletion of your account and its data by
contacting us (see below).
</p>
</Section>
<Section title="What the website collects">
<ul className="list-disc space-y-2 pl-5">
<li>
<strong>Account information.</strong> If you create an account or subscribe, we
store the email address and account details needed to provide the service.
</li>
<li>
<strong>Payment information.</strong> Paid subscriptions are processed by our
payment provider (Stripe). We do not store your full card number; Stripe handles
payment data under its own privacy policy.
</li>
<li>
<strong>Usage and log data.</strong> Like most websites, our servers record
standard technical information (IP address, browser type, pages requested, and
timestamps) to operate, secure, and improve the service.
</li>
<li>
<strong>Cookies.</strong> We use strictly necessary cookies to keep you signed in
and maintain your session. We do not sell your data.
</li>
</ul>
</Section>
<Section title="Auction data">
<p>
The auction listings shown in GovArbitrage are sourced from public government
auction records and agency portals. That information is public and is not personal
data about you.
</p>
</Section>
<Section title="How we use data">
<p>
We use the information above only to provide, secure, maintain, and improve the
service, to process subscriptions, and to communicate with you about your account.
We do not sell personal information, and we do not use your data for third-party
advertising.
</p>
</Section>
<Section title="Data retention & your choices">
<p>
We retain account data for as long as your account is active. You may request access
to, correction of, or deletion of your account data at any time by contacting us at
the address below; we will delete your account and associated personal data on
request, subject to any legal retention obligations.
</p>
</Section>
<Section title="Children">
<p>
GovArbitrage is not directed to children under 13, and we do not knowingly collect
personal information from them.
</p>
</Section>
<Section title="Changes to this policy">
<p>
We may update this policy from time to time. Material changes will be reflected by
the “Last updated” date above.
</p>
</Section>
<Section title="Contact">
<p>
Questions about this policy or your data? Contact us at{" "}
<a
className="text-blue-400 underline"
href="mailto:privacy@auctions.agentabrams.com"
>
privacy@auctions.agentabrams.com
</a>
.
</p>
</Section>
</main>
);
}
function Section({ title, children }: { title: string; children: React.ReactNode }) {
return (
<section className="mt-10">
<h2 className="text-xl font-semibold text-white">{title}</h2>
<div className="mt-3 leading-relaxed text-neutral-300">{children}</div>
</section>
);
}