warn-act-notices / privacy.html
APProjects's picture
site refresh (48 changed)
4faf101 verified
Raw History Blame Contribute Delete
14.6 kB
<!doctype html><html lang="en"><head><meta charset="utf-8">
<!-- og:begin -->
<meta property="og:title" content="Privacy &amp; terms β€” WARN Feed">
<meta property="og:description" content="What WARN Feed collects at checkout (email and watch terms β€” no code, no password, no credential of any kind), where it is stored, how long it is kept, how to delete it, and the refund terms.">
<meta property="og:url" content="https://approjects-warn-act-notices.static.hf.space/privacy.html">
<meta property="og:image" content="https://approjects-warn-act-notices.static.hf.space/assets/og-card.png">
<meta name="twitter:card" content="summary_large_image">
<!-- og:end -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://cdn.jsdelivr.net; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self' https://app.gumroad.com; upgrade-insecure-requests">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Privacy &amp; terms β€” WARN Feed</title>
<meta name="description" content="What WARN Feed collects at checkout (email and watch terms β€” no code, no password, no credential of any kind), where it is stored, how long it is kept, how to delete it, and the refund terms.">
<link rel="canonical" href="https://approjects-warn-act-notices.static.hf.space/privacy.html">
<style>
:root{--accent:#b7410e;--ink:#1a1a1a;--line:#d0d7de;--ok:#1f7a3f}
body{font:16px/1.55 -apple-system,system-ui,sans-serif;max-width:760px;margin:2rem auto;padding:0 1rem;color:var(--ink)}
h1{font-size:1.6rem;margin-bottom:.2rem} h2{font-size:1.2rem;margin:2.4rem 0 .6rem}
a{color:#0757ba} .muted{color:#666;font-size:.9rem}
.brand{display:flex;align-items:center;gap:10px;margin:0 0 .6rem;font-weight:700;font-size:1rem;color:#444}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin:.8rem 0 1rem}
.warn{border-left:4px solid var(--accent);background:#fff7f2;padding:10px 14px;border-radius:6px}
table{border-collapse:collapse;width:100%;font-size:.92rem} td,th{padding:.4rem .6rem;border-bottom:1px solid #e5e5e5;text-align:left;vertical-align:top}
th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:#555}
.btn{display:inline-block;background:var(--accent);color:#fff;padding:12px 18px;border-radius:8px;text-decoration:none;font-weight:600;min-height:44px;box-sizing:border-box}
footer{margin:2.5rem 0;font-size:.85rem;color:#666}
@media (max-width:640px){body{margin:1rem auto} h1{font-size:1.35rem}}
</style></head><body>
<div class="brand"><svg width="26" height="26" viewBox="0 0 26 26" aria-hidden="true"><rect x="1" y="1" width="24" height="24" rx="5" fill="#b7410e"/><path d="M6 17l4-8 3 6 3-4 4 6" fill="none" stroke="#fff" stroke-width="2.2" stroke-linejoin="round"/></svg> <a href="index.html" style="color:inherit;text-decoration:none">WARN Feed</a></div>
<h1>Privacy &amp; terms</h1>
<p class="muted">Last reviewed 2026-09-24. Plain language, no legalese. If anything here stops being true of the product, the page is wrong and we fix the page.</p>
<h2>Who you are dealing with</h2>
<div class="card">
<p><b>WARN Feed</b> is published by <b>APProjects</b>, an individual seller operating through
<a href="https://approj.gumroad.com">Gumroad</a> (seller name <i>approj</i>). Every payment is taken by
<b>Gumroad, Inc.</b> as the merchant of record: your card details go to Gumroad, never to us, and your
receipt, invoice and any refund come from Gumroad. We do not publish a personal legal name or postal address
on this site; if your purchasing process requires a named counterparty and a signed agreement, this product is
not a fit and you should not buy it.</p>
<p><b>Contact:</b> reply to your Gumroad receipt email (it reaches us through Gumroad), or open an issue at
<a href="https://github.com/APVentureEngine/warn-act-notices/issues/new/choose">github.com/APVentureEngine/warn-act-notices/issues</a>. Both are read on
every daily refresh.</p>
</div>
<h2>What we collect, and why</h2>
<p>Reading the free dataset, the site, the feeds and the GitHub repository collects <b>nothing</b>: no account,
no cookies, no sign-in, no third-party analytics script. The only two places you can hand us anything are below.</p>
<table>
<tr><th>When</th><th>What</th><th>Why we need it</th><th>Where it lives</th></tr>
<tr><td>Buying WARN Watch (paid or free trial) on Gumroad</td>
<td>Your email; the employer terms and state codes you type. That is the whole checkout. <b>No credential of yours, ever</b> &mdash; no password, no code to generate, no API key, no webhook URL.</td>
<td>The email is Gumroad's receipt address and lets us answer a reply. Terms and states are
what we match against each day's notices. Your order id, hashed in your own browser (SHA-256), is how the receipt link finds your alert page, whose own address is a random token.</td>
<td>Gumroad's servers (the sale record), and a fulfilment file on the private server that runs the daily
refresh. Not in the public repository, not in the dataset, not on any public page.</td></tr>
<tr><td>Buying the historical archive on Gumroad</td>
<td>Your email; optionally a GitHub username.</td>
<td>Gumroad delivers the ZIP to the email. The GitHub username, if given, is used once to invite you to the
private mirror repository.</td>
<td>Gumroad's servers; the GitHub invitation.</td></tr>
<tr><td>The &ldquo;stay in touch&rdquo; box on the landing page</td>
<td>Your email.</td>
<td>So we can tell you when a new dataset or paid tier is published. (Data changes &mdash; a state added, a column
renamed &mdash; go out in the daily GitHub release instead, which needs no address.) It is Gumroad's follower
form, posted straight to Gumroad, and the list is shared across APProjects datasets; unsubscribe from any message.</td>
<td>Gumroad's servers only.</td></tr>
</table>
<h2 id="page-key">Nothing at checkout is a password β€” how you reach your alert page</h2>
<div class="warn">
<p><b>Checkout asks for your employer list and, optionally, states. There is no code to generate, no password to pick,
and nothing of yours to keep safe.</b> Until 24 September 2026 the checkout also required an &ldquo;access code&rdquo;
generated on our finder page; that box is gone, because the receipt link already identifies your order and Gumroad's own
library is the recovery route. (Orders placed before that date that carried a code: your old email + code lookup address
still exists and still forwards to your page.)</p>
</div>
<p>Your alert page itself is a public-but-unguessable static page: its address is a random 128-bit token assigned
when your order is fulfilled &mdash; it is not derived from your email, your order or your list, so nobody who knows
any of those can compute it. The &ldquo;Open my alert page&rdquo; link on your Gumroad download page carries your
order id; <a href="alerts/index.html">the finder</a> hashes it in your own browser
(<code>SHA-256("warnwatch-sale|" + order id)</code>, nothing is sent anywhere) and forwards to the page. Lost the
receipt? Sign in at <a href="https://app.gumroad.com/library" rel="noopener">app.gumroad.com/library</a> with the email
you bought with and the same button is there. The page contains your watched terms and the
matching public WARN records β€” never your email or your order id. Anyone you give the link to can read it; it is not
listed anywhere and search engines are told not to index it.</p>
<h2 id="webhooks">We do not take your webhook URL, and you should not give one to anybody</h2>
<p>A Slack, Discord or Teams incoming-webhook URL is a <b>live write credential</b>: anyone holding it can post into
that channel. Until 19 September 2026 our checkout had an optional box for one, and matches were posted to it. We
removed that box, and we no longer ask any customer for a credential of any kind &mdash; not at checkout, not
afterwards. Nothing was lost: every watch publishes its own private <b>RSS feed</b>. In Slack it is one command &mdash;
<code>/feed subscribe &lt;your feed address&gt;</code>. In Microsoft Teams, use the channel&#39;s bundled <b>Workflows</b>
app &rarr; <i>Post to a channel when an RSS feed is published</i> (Microsoft retired the old Teams RSS connector in
May 2026); classic desktop Outlook has <i>RSS Feeds &rarr; Add a new RSS feed</i>.
Matches appear in that channel the day we parse them, with the credential staying entirely on your side
where you can revoke it without telling us. If you bought before that date and gave us a webhook URL, reply to your
receipt and we delete it from the fulfilment record on the next daily refresh.</p>
<h2 id="retention">How long we keep it, and how to delete it</h2>
<ul>
<li>Watch details (terms, states β€” never a credential) are kept for the life of the watch β€” 30 days for the free
trial, 365 days for the paid year. When a watch ends we stop matching, but we keep
the entry and leave the alert page online (it says plainly that the watch has ended) so a renewal with the same email
lands at the same address. We do not delete it on our own; you ask, we delete.</li>
<li>Sale records on Gumroad are kept by Gumroad under
<a href="https://gumroad.com/privacy">Gumroad's privacy policy</a>; we cannot delete those for you, but you can
ask Gumroad directly.</li>
<li><b>To delete everything we hold, at any time:</b> reply to your receipt (or open a repo issue) and say
&ldquo;delete my watch&rdquo;. We remove your entry from the refresh server and unpublish your alert page at the next
daily rebuild, 12:15 UTC (within 24 hours), and confirm by reply.</li>
</ul>
<h2 id="traffic">What the site measures about visitors</h2>
<p>Each page loads one 1&times;1 image from the jsDelivr CDN. jsDelivr publishes an aggregate daily request count
for that file, which is how we know roughly how many times the site was opened. There is no cookie, no script,
no per-visitor record, and no data reaches us other than that public daily number. Gumroad's own checkout and
listing pages run Gumroad's analytics, which are Gumroad's, not ours.</p>
<h2 id="refunds">Refunds and what you are buying</h2>
<ul>
<li><b>WARN Watch ($49 / year, one payment, no auto-renew):</b> full refund within 14 days of purchase, no questions.
Alert pages are built at the daily 12:15 UTC rebuild; if yours is not live within 24 hours of buying, ask and we refund immediately.</li>
<li><b>The historical archive:</b> free since 2026-09-07 β€” every notice back to 1988 is in the public files, so
there is nothing to refund and no account to close.</li>
<li><b>Free files, feeds and the free trial:</b> free, no card, no obligation, and they stay free.</li>
</ul>
<h2 id="continuity">If the daily rebuild stops β€” the continuity guarantee</h2>
<p>You would be buying a year of daily rebuilds from an automated publisher on a free static host.
Being nervous about that is reasonable, so here is exactly what happens if the rebuild stops, and
which part of it a script enforces rather than a promise.</p>
<ul>
<li><b>Check it yourself, any time.</b> Every build stamps <a href="feed.xml">feed.xml</a> with a
<code>lastBuildDate</code>. That is the same stamp our guard reads β€” there is no dashboard in between.</li>
<li><b>Ten silent days and your money comes back on its own.</b> <code>continuity_guard.py</code> runs on
every build; if the published stamp is older than ten days it refunds every unexpired paid watch β€” on top
of the 14-day window above β€” without you asking. <a href="https://github.com/APVentureEngine/warn-act-notices">The
code is public</a>, so read it before you trust it.</li>
<li><b>The honest limit.</b> That guard runs inside the build, so it covers the likely failure (this machine
alive, the site gone stale) and not the total one. If you ever see a <code>lastBuildDate</code> more than ten
days old, reply to your Gumroad receipt: we refund on sight, no argument, whatever the 14-day window says.</li>
<li><b>You keep the data either way.</b> The archive is CC BY 4.0 on GitHub and Hugging Face, with a dated
release for every build day. If this site vanished tomorrow, the files you paid to have watched are still
yours, still free and still mirrored.</li>
</ul>
<h2 id="data-terms">Terms of use for the data</h2>
<ul>
<li>The dataset is a normalised copy of <b>public records</b> published by state labor departments under the federal
WARN Act. It is released under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>; the collection
code is Apache-2.0 (<a href="https://github.com/biglocalnews/warn-scraper">biglocalnews/warn-scraper</a>) plus our
normalisation layer, MIT.</li>
<li>It is <b>best-effort</b>. State portals change, lag, and correct themselves; we re-collect daily and keep a
public <a href="index.html">coverage table</a>, but a row can be late, duplicated, amended or wrong. Verify any
row you will act on against the linked state source.</li>
<li>Nothing here is legal, financial, employment or investment advice, and we are not affiliated with any state agency
or the U.S. Department of Labor.</li>
<li>The dataset is about employers, not employees: it never carries worker names. Some state portals put a
contact person's name inside the employer address field; we strip those where our rules have caught them. If you find
one we missed, <a href="https://github.com/APVentureEngine/warn-act-notices/issues/new/choose">tell us</a> and it is removed on the next run.</li>
</ul>
<p style="margin-top:2.5rem"><a class="btn" href="index.html">&larr; Back to WARN Feed</a></p>
<footer>Published by APProjects (Gumroad seller <i>approj</i>). Payments, receipts and invoices by Gumroad, Inc.
&middot; <a href="https://github.com/APVentureEngine/warn-act-notices">GitHub</a> &middot; <a href="https://github.com/APVentureEngine/warn-act-notices/issues/new/choose">contact</a>
&middot; <a href="watch.html">WARN Watch</a> &middot; <a href="privacy.html">Privacy &amp; terms</a><p class="beacon-note" style="font-size:.8rem;color:#777">Loads counted anonymously: one 1&times;1 CDN image, no cookies, no personal data (<a href="privacy.html">detail</a>).</p>
</footer>
<img src="https://cdn.jsdelivr.net/gh/APVentureEngine/warn-act-notices@main/assets/px.png" alt="" width="1" height="1" referrerpolicy="no-referrer" style="position:absolute;left:-9999px;top:0">
<script id="fl">if(top!==self)for(var a of document.links)if(a.origin!==location.origin){a.target="_blank";a.rel="noopener"}</script>
</body></html>