What this site collects,
and where it goes.
Written from the code that runs the site, in plain English. Every form, every measuring layer, every company that handles the data, and the one switch that turns the measuring off.
Version
2026-09-08
Operator
Project Lavos LLC, Louisville, KY
Contact
matthewdscott7@gmail.com
The switch
Footer, every page
- 01
The forms
There are two. The brief form sits on the homepage, /audit and /build. The step form is /start. Both send what you type to this site's own database first, then one alert email to me. The email and the row hold the same thing.
What the brief form takes: your name, your email, a URL, notes, and on /audit the tier you picked. What the step form takes: the URL, what the business does, the area it serves, the current marketing effort, a spend band, your name, your email, an optional phone number, notes, and up to six files of 4 MB each within thirty minutes of sending. Images are re-encoded on the server before they are stored, which strips the camera metadata block, including any GPS fix a phone left in the photo. PDFs are stored as sent.
Each submission also carries the session id and the first-touch record described in the next section, so a lead can be joined to the visit and the ad click that produced it. Two silent checks run on every submission: a hidden field that people never see (anything typed into it discards the submission) and a floor on how fast the form was completed.
The two Fail Closed forms on the provenance page take a name, an email, a company and a line about the surfaces involved; the install request lands in the same leads table and alert email as the brief form, and the library licence goes to card payment, described below.
- Where it goes: the leads table in a Neon Postgres database I own, then an alert email delivered by Resend to the address at the foot of this page, with Reply-To set to you.
- What is not collected: nothing you did not type. No IP address is written to the row.
- 02
The journey beacon
This site keeps its own record of visits, in its own database, so that a visit can be read back as a sequence: arrived, read this, clicked that, left. It is the first-party half of measurement and it runs unless you switch it off.
- A session id, generated in your browser and kept in session storage for the length of the tab.
- First-touch attribution: the utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, gbraid and wbraid values on the first URL you arrived on, kept in local storage and never overwritten.
- Page views, with how long each page was visible; clicks on links and buttons as their labels and internal targets (an email or phone link is recorded as the scheme alone, never the address); sections reached; and named funnel steps as counts and yes/no flags.
- The referring page, and a city-level location (country, region, city) read from the hosting platform's edge headers. The IP address itself is not stored.
- Never: anything typed into a form, an email address, a URL you entered, or a payment id. Keys that look like personal data are dropped on the server as a backstop.
- 03
The free scan
The scan on /audit and in the first step of /start fetches the URL you paste and runs structural checks against it. The URL is used for that fetch and is not stored by the scan. Your IP address is counted in the memory of the running function for a limit of twenty-five runs in twenty-four hours; it is not written anywhere. The findings are shown to you and are not kept. If you then send the step form, the URL becomes part of your lead.
- 04
The tags
Five third-party measurement tags are wired into the site. Each loads only when its id has been set at build time, and each is off for you when the footer switch says off or your browser sends Global Privacy Control. On the version date none of the five ids was set, so none of them loaded for anyone. They are described here so this page does not have to change on the day one is switched on.
- Google Analytics 4 and Google Ads (gtag.js). Every consent signal is declared denied before the tag exists and is only updated to granted from the switch. When on: page views, the same funnel events as the beacon, and ad conversion signals. Google sets its own cookies.
- PostHog. Product analytics, funnels, and session replay. Every form field is masked in replays, so nothing you type reaches PostHog, and the site never identifies a person to it; everything stays as anonymous events.
- Microsoft Clarity. Session recordings, heatmaps, and rage-click detection. Clarity's consent API is called from the same switch.
- Meta pixel and Conversions API. The browser pixel receives a fixed table of money-path events (a brief sent, a checkout started, an audit bought) and nothing else; the server half sends the same events with your IP address and browser identifier and the _fbp and _fbc cookies if your browser has them. No email, phone number or name is sent to Meta, hashed or otherwise.
- 05
Hosting and platform analytics
The site is served by Vercel. Like any host, Vercel sees every request, including your IP address and browser identifier, to serve it, and keeps its own platform logs under its own terms. Vercel Web Analytics and Speed Insights run on the site as cookie-less aggregates (page counts, referrers, Core Web Vitals) and read the same switch as everything else.
The fonts are loaded from Google Fonts (fonts.googleapis.com and fonts.gstatic.com), so Google receives that request as it would for any site using its font service. This does not depend on the switch.
- 06
Payments
Nothing is sold by card on this site. Every engagement is quoted by email and paid by invoice; no card number, bank detail or payment processor account is collected or stored here.
- 07
Bot defence
Automated clients that identify themselves as such by user agent are answered with a slow error page rather than the site. One link in the footer is hidden from people and from screen readers and leads nowhere a person would go; a client that follows it is recorded as a bot event under a user-agent label and a hash of the user agent plus a coarse network prefix, held in the memory of that edge instance for twenty-four hours. The IP address is never written to the database. A signed, non-identifying cookie may be set on such a client so the mark survives across instances. Search engines and the AI crawlers listed in robots.txt are exempt.
- 08
What lives in your browser
Four keys, none of them a tracking cookie: lavos_consent (the choice you made on the footer switch), lavos_attr (the first-touch record), lavos_journey_sid (the session id, cleared when the tab closes), and va-disable (an older exclude-my-visits switch that still works). When a tag is on, it sets its own cookies under its own name.
- 09
The switch
The footer of every page carries a control that reads Analytics: on or Analytics: off. It is a real button, reachable by keyboard. The site measures a visitor who has not chosen; flipping the control to off stops the beacon, the platform analytics, and every tag for that browser, mid-visit, without a reload, and the choice is kept until you change it. A browser that sends Global Privacy Control is treated as off without touching the control. An explicit choice on the control outranks that signal either way. The forms are not measurement; they work with the switch off.
- 10
Retention and deletion
Everything above is kept until a deletion is asked for. There is no automated deletion, so none is claimed here. To ask, write to the address at the foot of this page from the email you used on a form, or name the session or the date and page of the visit if you never sent one, and I remove the lead row, any uploaded files, and the journey rows for that session. Copies held by the processors below (an alert email at Resend, a payment record at Stripe) are governed by their own terms; a request here is passed on to them where their tools allow it.
- 11
Who handles it
| Company | What it does for this site |
|---|---|
| Vercel | hosting, edge headers, platform analytics |
| Neon | the Postgres database: leads, uploads, journey events |
| Resend | the alert email to me; the audit delivery email |
| fonts on every page; Analytics and Ads when their ids are set | |
| PostHog | product analytics and session replay, when its key is set |
| Microsoft Clarity | session recordings and heatmaps, when its id is set |
| Meta | the pixel and the Conversions API, when the pixel id is set |
Version 2026-09-08. This page describes the code as it stood on that date and changes when the code does. Questions and deletion requests go to matthewdscott7@gmail.com. The site’s terms and accessibility statement sit beside it.