How we handle your data
Written plainly, describing exactly what FairVet does today — not a generic template.
Effective July 27, 2026
Version 1.0
If you create an account
We store your email address, and anything you choose to add: your pets' names, species, breed, age, and ZIP code, and the estimates you upload. This information is tied to your account, visible to you in your dashboard, and not part of the shared, de-identified pricing data described below.
Decoding without an account
Without signing up, you can run up to three checks a day, counted per IP address and shared between bill checks and insurance-payout checks. When you do, we don't create an account or store your name. Instead, a secure, httpOnly cookie in your browser acts as a private key: it holds a token for each of your ten most recent bill checks, and only a browser holding a check's token can view its result. We record the IP address of each check to enforce that daily limit. It isn't tied to any identity or profile.
If you then create an account or sign in from that browser, every check it holds is attached to your account and behaves like any bill you'd uploaded while signed in. If you don't, they stay reachable only from that browser, until 30 days after your latest check.
When you upload an estimate
The photo or PDF you upload is sent to Google's Gemini API to read and extract the line items — that's how we turn a scanned estimate into a structured breakdown. We also store the file, the clinic name as you typed or it appears on the document, and the ZIP code you provide, attached to your account.
Your choice: sharing data to improve regional pricing
Sharing is what a free check does by default, and the upload screen says so in plain words rather than as a pre-ticked box:
"Your bill's prices and the clinic's name are shared anonymously to build real local vet prices. Your name, address, phone and pet's name are never included."
Alongside it is a clearly visible Keep this bill private control, off by default. Turn it on and that bill is never added to our regional pricing data and never counts toward the clinic's published figures — and you still get FairVet's read on your own bill either way. You can also change your mind afterwards from your result page, in either direction. Stopping sharing takes the bill out of every figure we work out from shared bills and deletes the amount you confirmed paying, if you did; the clinic's Fair Price Score follows at its next nightly update. It cannot retract the line-item prices already added to our regional pricing data: those are deliberately stored with no link back to your estimate, so there is nothing left to find and remove. We would rather say that plainly than imply an undo we cannot perform.
A shared bill is used in two distinct ways, and they differ in whether the clinic is named. Our Methodology page sets both out in full.
The regional pricing pool is fully de-identified. Before anything joins it we strip your name, your pet's name, the clinic's name, your exact address, and your account identity entirely. What's left, and all that ever travels into that pool, is: a rough region (roughly the first three digits of your ZIP code, never your full ZIP), the standardized name of the procedure, the dollar amount, a category describing how typical that line item is, and coarse buckets for species and a banded weight range. Your insurance carrier is recorded only when it is one we already list by name — anything you type into the "other" box stays on your own record. There is no way to trace a data point in this pool back to your account, your estimate, or your clinic; it has no clinic field at all.
Your clinic's public figures do name the clinic. A shared bill that matches a clinic counts toward that clinic's published per-procedure medians, its Fair Price Score, its position in our directory, and its award eligibility — always in aggregate, and never before at least five separate shared bills stand behind a published figure. A bill you keep private counts toward none of those.
Our automated de-identification and redaction tools are designed to remove personal identifying information before anything is displayed publicly, but we do not guarantee they are complete or error-free. In rare cases, due to unusual document formats, handwriting, or other factors, residual personal information could remain visible in a publicly displayed benchmark data point, share card, or redacted document. If you believe something publicly displayed on FairVet contains your personal information, contact privacy@fairvethq.com and we will remove or re-redact it promptly.
Matching your bill to a clinic
We try to match every bill we decode to a specific clinic's listing, using the clinic name and region. What that match is allowed to feed depends on your sharing choice. A shared bill counts — only ever in aggregate — toward that clinic's public Fair Price Score and its estimate-match rate (how often final bills land near the estimate). A bill you keep private counts toward neither; the match is kept for your own records only. Either way we never publish an individual bill, an amount tied to a person, or any link between a reviewer and their estimate — only the combined, clinic-level figures. Confirming that a review comes from someone who genuinely holds a bill from that clinic uses the match on its own, whatever your sharing choice, because that check concerns you and never becomes a public figure.
Your choice: sharing an insurance payout
The reimbursement checker asks the same question the bill check does, about a different thing, and the answer works the same way. Sharing is what a free payout check does by default, and the upload screen says so in plain words rather than as a pre-ticked box:
"Your payout is shared anonymously to show what insurers actually reimburse. Your name, address, phone and pet's name are never included."
Alongside it is a clearly visible Keep this payout private control, off by default. What a shared payout adds is two numbers, the amount claimed and the amount your insurer actually paid, together with the insurer's name when it is one we already list. Those feed the figures we publish about what an insurer really reimburses, as opposed to the percentage a policy states. They are only ever shown combined with other payouts, and never with your name, your pet, your clinic, or the document itself, which we do not keep.
You can change your mind afterwards from your result page, in either direction, and here that undoes the whole thing. This is the one place our answer differs from the bill check above. A shared bill's line-item prices go into a regional pool with no link back to the bill, so they cannot be retracted, and we say so plainly rather than imply an undo we cannot perform. A payout has no such pool. We work out every insurer figure from the payouts themselves each time a page is built, so switching one back to private removes it from all of them, with nothing left behind. The only lag is that a page already built can keep showing the previous number until it refreshes, which takes up to an hour.
Keeping a payout private costs nothing and is never a penalty: you still get the full breakdown of your own reimbursement, and the appeal letter if one is warranted.
Medication pricing data
If your estimate includes a medication we don't already recognize in our price database, and you have not kept that bill private, we record just the medication's name as written and the price you were charged, so we can research and add it to our public medication price comparisons. This is governed by the same choice as the pricing data above — keep a bill private and neither its pricing data nor any unmatched medication data from it is collected. Either way, it never includes your name, your pet, your clinic, or anything that identifies your account.
Reviews you write
You can review a clinic only after you have a decoded bill matched to it, so every review is tied to a verified visit. Reviews are public: the star rating, the structured chips you pick (wait time, and whether the final cost came in lower, as estimated, or higher), your optional written comment, and any public response the clinic writes back. The underlying bill itself — its line items, the amount, your identity, and the estimate it came from — is never shown publicly.
Payments
If you subscribe to a paid plan, payment is processed by Stripe. FairVet does not receive or store your full card number.
Service providers
A few trusted companies help run FairVet, and we share only what each needs to do its job:
- Stripe — processes payments.
- Google Gemini — reads and extracts the line items from an estimate you upload.
- Resend — sends transactional email, such as account and follow-up messages.
- Supabase — hosts our database and handles account sign-in.
- Vercel — hosts the website.
Cookies
FairVet uses cookies only to make the product work. We don't use analytics, advertising or ad-tracking cookies. These are all of them:
- Sign-in (Supabase, named sb-…-auth-token) — keeps you signed in. Lasts up to 400 days and is removed when you log out. Unlike the cookies below, it isn't httpOnly: the sign-in library reads it from the page itself, which it needs for uploads from your browser.
- fv_anon_token — lets this browser open your ten most recent bill checks made without an account (see above). Lasts 30 days after your latest check, and is removed when you sign in and those checks move to your account.
- fv_anon_eob_token — the same for an insurance-payout check made without an account. Lasts 30 days, removed when you sign in.
- fv_quote_token — lets this browser see the quote requests it sent without an account. Lasts 30 days.
- fv_price_contrib_token — set when you add a price without an account, to link that submission to this browser. Nothing reads it back today. Lasts 30 days.
- fv_ref — remembers a referral code from a shared link you arrived through, so a check you then run can be credited to it. Lasts 30 days.
- fv_post_auth_next — remembers which page to return you to after you sign in or confirm your email. Lasts one hour and is cleared once used.
- fv_sign_in_email — remembers the address a sign-in code was just sent to, so the next step can fill it in without putting it in the page address. Lasts one hour.
Every FairVet cookie above except the sign-in cookie is httpOnly, meaning scripts on the page can't read it. Separately, if you share FairVet from the referral panel, your browser keeps a random share code in its local storage (fv_ref_code). It isn't a cookie and is never sent to us except inside the share link itself.
If a clinic disputes something we publish
A clinic can contest a review or a figure we attribute to it through our dispute form. What we keep is what the form asks for: the clinic, the type of dispute, the description, an evidence link if one is given, and an email address. The email is required for a dispute about pricing, a client relationship or a mixed-up clinic, because those are claims about the clinic itself and we need to know the person making them works there. For the other two types it is optional.
If you file a dispute without signing in, we also record your IP address, in a separate table that holds nothing else, to limit how many disputes one connection can file in a day. It is not attached to the dispute itself, it is not shown to anyone, and it is used for nothing but that limit, exactly as with the IP address we record for a check made without an account. If you are signed in, the dispute is linked to your account instead, and no IP is recorded.
Disputes are never published. The details, the email address and our decision are seen only by the FairVet staff reviewing them and, if you filed while signed in, by you. We do not pass the email address to the person who wrote a review. If you file without signing in and leave the email blank, we have no way to reach you about the outcome.
Other data we collect
A few small, de-identified signals help us run and improve the site — none of them tied to your identity:
- Counts of profile views and "call clinic" clicks on a clinic's public page, so clinics can see interest. These record what happened, never who did it.
- When you follow an outbound affiliate link (for example, an insurer's "Get a quote"), we log that the click happened, with no personal data attached.
- The share card image generated when you share a result contains only aggregate figures — never a clinic name, your pet, or anything identifying you.
- Our hosting provider passes along an approximate region for your request, which we use only to localize the homepage (for example, showing nearby clinics). We don't store it with your account.
We do not sell your personal information
We don't sell your personal information, and we don't share it with advertisers. The aggregate, de-identified pricing data described above is the only data we make broadly available, and by design it can't be traced back to you.
Accessing, correcting, or deleting your data
To ask what data we have about your account, correct it, or request deletion, email us at privacy@fairvethq.com.
We keep the estimates and files you upload until you delete them or close your account.
Changes to this page
If how we handle data changes in a meaningful way, we'll update this page and change the way our upload consent is presented to reflect it.