aboutsummaryrefslogtreecommitdiff
path: root/landing/layouts/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'landing/layouts/index.html')
-rw-r--r--landing/layouts/index.html283
1 files changed, 111 insertions, 172 deletions
diff --git a/landing/layouts/index.html b/landing/layouts/index.html
index 231ff61..a08109e 100644
--- a/landing/layouts/index.html
+++ b/landing/layouts/index.html
@@ -1,213 +1,152 @@
{{ define "main" }}
<section class="hero">
- <div class="container hero-inner">
- <span class="eyebrow">Clean data, on tap</span>
- <h1 class="hero-title">
- Structured data,<br />
- <span class="accent">served simply.</span>
+ <div class="container">
+ <h1 class="hero-headline">
+ Structured&nbsp;data,<br>
+ <em>served simply.</em>
</h1>
<p class="hero-sub">
Tidy Index delivers clean, well-organized datasets through a single API
designed for humans, machines, and LLM agents alike.
</p>
<div class="hero-cta">
- <a href="#contact" class="btn btn-primary">Request access</a>
- <a href="#how" class="btn btn-ghost">See how it works</a>
- </div>
-
- <div class="hero-visual" aria-hidden="true">
- <div class="code-card">
- <div class="code-card-head">
- <span class="dot dot-a"></span>
- <span class="dot dot-b"></span>
- <span class="dot dot-c"></span>
- <span class="code-card-title">GET&nbsp; /v1/datasets/cities</span>
- </div>
-<pre class="code-card-body"><code><span class="tk-p">{</span>
- <span class="tk-k">"id"</span>: <span class="tk-s">"cities"</span>,
- <span class="tk-k">"updated"</span>: <span class="tk-s">"2026-04-09T08:14:00Z"</span>,
- <span class="tk-k">"records"</span>: <span class="tk-p">[</span>
- <span class="tk-p">{</span> <span class="tk-k">"name"</span>: <span class="tk-s">"Lisbon"</span>, <span class="tk-k">"population"</span>: <span class="tk-n">548703</span> <span class="tk-p">}</span>,
- <span class="tk-p">{</span> <span class="tk-k">"name"</span>: <span class="tk-s">"Kyoto"</span>, <span class="tk-k">"population"</span>: <span class="tk-n">1463723</span> <span class="tk-p">}</span>,
- <span class="tk-p">{</span> <span class="tk-k">"name"</span>: <span class="tk-s">"Quito"</span>, <span class="tk-k">"population"</span>: <span class="tk-n">2011388</span> <span class="tk-p">}</span>
- <span class="tk-p">]</span>
-<span class="tk-p">}</span></code></pre>
- </div>
+ <a href="mailto:contact@tidyindex.com" class="btn btn-primary">
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
+ <circle cx="7.5" cy="15.5" r="5.5"/>
+ <path d="m11.5 11.5 9.5-9.5"/>
+ <path d="m17 5 3 3"/>
+ <path d="m14 8 3 3"/>
+ </svg>
+ Get an API Key
+ </a>
+ <a href="#demo" class="btn-link">See a record <span aria-hidden="true">&darr;</span></a>
</div>
- </div>
-</section>
-<section id="what" class="section">
- <div class="container narrow">
- <span class="eyebrow center">What is Tidy Index</span>
- <h2 class="section-title center">We&rsquo;ve already done the cleanup.</h2>
- <p class="section-lede center">
- Scraping. Reformatting. Reconciling. Re-scraping when the source changes
- shape. We do all of that &mdash; once, properly &mdash; so you don&rsquo;t
- have to do any of it.
+ <p class="cta-agents">
+ <span class="cta-agents-label">for agents</span>
+ <a href="{{ "llms.txt" | relURL }}"><code>GET /llms.txt</code> &rarr;</a>
+ <span class="cta-agents-note">a machine-readable invitation. No form, no salesperson.</span>
</p>
</div>
</section>
-<section id="formats" class="section section-soft">
+<section id="demo" class="section">
<div class="container">
- <span class="eyebrow center">Pick your shape</span>
- <h2 class="section-title center">One dataset. Every shape you need.</h2>
- <p class="section-lede center">
- Ask for JSON, get JSON. Ask for chunks, get chunks. Same data underneath &mdash;
- no reformatting, no glue code.
+ <p class="section-marker">§ 01 &nbsp;&middot;&nbsp; one dataset, three shapes</p>
+ <h2 class="section-headline">The same data, in whatever shape your job needs.</h2>
+ <p class="section-body">
+ Below is the <code>irs-990</code> dataset &mdash; the annual return
+ every U.S. nonprofit files with the IRS, normally distributed as a
+ sprawling PDF or wall of e-file XML. Tidy Index serves it three ways:
+ a single record for your API, a streaming bulk export for your data
+ team, or a token-efficient summary your agents can drop straight into
+ context.
</p>
- <div class="format-grid">
- <article class="format-card">
- <div class="format-icon" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
- <path d="M8 4 4 12l4 8"/>
- <path d="m16 4 4 8-4 8"/>
- </svg>
+ <div class="record">
+ <header class="record-head">
+ <span class="record-label">Dataset</span>
+ <code class="record-id">irs-990</code>
+ <span class="record-meta">1.5M filings &middot; updated daily</span>
+ </header>
+
+ <div class="record-row">
+ <div class="record-tag">
+ <span class="tag-name">record</span>
+ <span class="tag-mime">application/json</span>
+ <span class="tag-note">single filing, fully normalized</span>
</div>
- <h3>JSON</h3>
- <p>Stable schemas, stable IDs, ETags on every response. Drop it straight into your code.</p>
- </article>
+<pre class="record-body"><code><span class="tk-p">{</span>
+ <span class="tk-k">"ein"</span><span class="tk-p">:</span> <span class="tk-s">"20-0049703"</span><span class="tk-p">,</span>
+ <span class="tk-k">"name"</span><span class="tk-p">:</span> <span class="tk-s">"Wikimedia Foundation, Inc."</span><span class="tk-p">,</span>
+ <span class="tk-k">"fiscal_year"</span><span class="tk-p">:</span> <span class="tk-n">2023</span><span class="tk-p">,</span>
+ <span class="tk-k">"revenue_usd"</span><span class="tk-p">:</span> <span class="tk-n">180249000</span><span class="tk-p">,</span>
+ <span class="tk-k">"expenses_usd"</span><span class="tk-p">:</span> <span class="tk-n">169106000</span><span class="tk-p">,</span>
+ <span class="tk-k">"net_assets_usd"</span><span class="tk-p">:</span> <span class="tk-n">254971000</span><span class="tk-p">,</span>
+ <span class="tk-k">"source"</span><span class="tk-p">:</span> <span class="tk-s">"https://apps.irs.gov/app/eos/details/?ein=200049703"</span>
+<span class="tk-p">}</span></code></pre>
+ </div>
- <article class="format-card">
- <div class="format-icon" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
- <path d="M4 4h16v16H4z"/>
- <path d="M4 9h16"/>
- <path d="M9 4v16"/>
- </svg>
+ <div class="record-row">
+ <div class="record-tag">
+ <span class="tag-name">bulk</span>
+ <span class="tag-mime">application/x-ndjson</span>
+ <span class="tag-note">streaming, one record per line</span>
</div>
- <h3>XML &amp; CSV</h3>
- <p>For the pipelines that have been around longer than your team has. Strict, well-formed, no surprises.</p>
- </article>
+<pre class="record-body"><code><span class="tk-p">{</span><span class="tk-k">"ein"</span><span class="tk-p">:</span><span class="tk-s">"20-0049703"</span><span class="tk-p">,</span><span class="tk-k">"name"</span><span class="tk-p">:</span><span class="tk-s">"Wikimedia Foundation, Inc."</span><span class="tk-p">,</span><span class="tk-k">"revenue_usd"</span><span class="tk-p">:</span><span class="tk-n">180249000</span><span class="tk-p">}</span>
+<span class="tk-p">{</span><span class="tk-k">"ein"</span><span class="tk-p">:</span><span class="tk-s">"20-0097189"</span><span class="tk-p">,</span><span class="tk-k">"name"</span><span class="tk-p">:</span><span class="tk-s">"Mozilla Foundation"</span><span class="tk-p">,</span><span class="tk-k">"revenue_usd"</span><span class="tk-p">:</span><span class="tk-n">34019000</span><span class="tk-p">}</span>
+<span class="tk-p">{</span><span class="tk-k">"ein"</span><span class="tk-p">:</span><span class="tk-s">"26-1544963"</span><span class="tk-p">,</span><span class="tk-k">"name"</span><span class="tk-p">:</span><span class="tk-s">"Khan Academy, Inc."</span><span class="tk-p">,</span><span class="tk-k">"revenue_usd"</span><span class="tk-p">:</span><span class="tk-n">85436000</span><span class="tk-p">}</span>
+<span class="tk-c">&hellip;</span></code></pre>
+ </div>
- <article class="format-card">
- <div class="format-icon" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
- <circle cx="12" cy="12" r="8"/>
- <path d="M12 8v4l2 2"/>
- </svg>
+ <div class="record-row">
+ <div class="record-tag">
+ <span class="tag-name">summary</span>
+ <span class="tag-mime">text/plain</span>
+ <span class="tag-note">token-efficient, agent-ready</span>
</div>
- <h3>LLM chunks</h3>
- <p>Already chunked, already cited, already embedding-ready. Drop them into your retriever and stop fighting tokenizers.</p>
- </article>
+<pre class="record-body"><code>Wikimedia Foundation, Inc. (EIN 20-0049703) reported
+$180.25M in revenue against $169.11M in expenses on
+its 2023 Form 990, ending the year with $254.97M in
+net assets.
- <article class="format-card">
- <div class="format-icon" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
- <path d="M3 12h4l3-8 4 16 3-8h4"/>
- </svg>
- </div>
- <h3>Streaming</h3>
- <p>Webhooks and server-sent events the moment something changes. No polling, no stale caches.</p>
- </article>
+Source: https://apps.irs.gov/app/eos/details/?ein=200049703</code></pre>
+ </div>
</div>
</div>
</section>
-<section id="how" class="section">
+<section class="section section-soft">
<div class="container">
- <span class="eyebrow center">Who it&rsquo;s for</span>
- <h2 class="section-title center">Same data. Three kinds of readers.</h2>
- <p class="section-lede center">
- People, programs, and agents all want different things from the same
- dataset. Tidy Index gives each of them what they expect.
+ <p class="section-marker">§ 02 &nbsp;&middot;&nbsp; what it is</p>
+ <h2 class="section-headline">Open data and licensed data, kept tidy.</h2>
+ <p class="section-body">
+ Some of what we serve comes from the open web. The rest is licensed
+ from publishers, data vendors, and partners who&rsquo;ve trusted us with
+ their private feeds. All of it lives behind the same API, with the same
+ stable schemas, the same stable IDs, and the same freshness guarantees
+ &mdash; and one key gets you every record in every shape your tools
+ (or your agents) prefer.
</p>
-
- <div class="audience-grid">
- <div class="audience-card">
- <div class="audience-num">01</div>
- <h3>For humans</h3>
- <p>
- A real web UI. Skim a schema, preview a few rows, grab a snapshot,
- and copy a working curl command without leaving the page.
- </p>
- </div>
-
- <div class="audience-card audience-card-feature">
- <div class="audience-num">02</div>
- <h3>For computers</h3>
- <p>
- Boring REST, the way you like it. OpenAPI specs, semver, ETags,
- idempotent reads, and rate limits we&rsquo;ll actually tell you about.
- </p>
- </div>
-
- <div class="audience-card">
- <div class="audience-num">03</div>
- <h3>For LLM agents</h3>
- <p>
- Endpoints shaped like tool calls. Chunks shaped like context. Every
- response carries its own provenance, so the model never has to guess
- where the data came from.
- </p>
- </div>
- </div>
</div>
</section>
-<section class="section section-soft">
- <div class="container narrow">
- <span class="eyebrow center">Why Tidy Index</span>
- <h2 class="section-title center">Less wrangling. More building.</h2>
+<section class="section section-coverage">
+ <div class="container container-wide">
+ <p class="section-marker">§ 03 &nbsp;&middot;&nbsp; what we cover</p>
+ <h2 class="section-headline">The index, abridged.</h2>
+ <p class="section-body">
+ A small slice of what&rsquo;s already in the catalog.
+ </p>
- <ul class="value-list">
- <li>
- <span class="value-check" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
- <polyline points="20 6 9 17 4 12"/>
- </svg>
- </span>
- <div>
- <strong>Curated, not crawled.</strong>
- <p>A human looks at every dataset before it ships. We&rsquo;d rather have ten that are right than ten thousand that are almost right.</p>
- </div>
- </li>
- <li>
- <span class="value-check" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
- <polyline points="20 6 9 17 4 12"/>
- </svg>
- </span>
- <div>
- <strong>Schemas that don&rsquo;t move under you.</strong>
- <p>Versioned endpoints, deprecation windows, and a changelog you can subscribe to. If something&rsquo;s about to break, you&rsquo;ll be the first to know.</p>
- </div>
- </li>
- <li>
- <span class="value-check" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
- <polyline points="20 6 9 17 4 12"/>
- </svg>
- </span>
- <div>
- <strong>Every record has a receipt.</strong>
- <p>Each row links back to where it came from. Your auditors will love it. Your models will stop making things up.</p>
+ <div class="catalog">
+ {{ range $.Site.Data.catalog.categories }}
+ <div class="catalog-col">
+ <span class="catalog-cat">{{ .name }}</span>
+ <div class="catalog-window">
+ <ul class="catalog-list">
+ {{ range .items }}<li>{{ . }}</li>
+ {{ end }}{{ range .items }}<li aria-hidden="true">{{ . }}</li>
+ {{ end }}
+ </ul>
</div>
- </li>
- <li>
- <span class="value-check" aria-hidden="true">
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
- <polyline points="20 6 9 17 4 12"/>
- </svg>
- </span>
- <div>
- <strong>One key, every format.</strong>
- <p>JSON, XML, CSV, or LLM chunks. Flip a header &mdash; same data, different shape.</p>
- </div>
- </li>
- </ul>
+ </div>
+ {{ end }}
+ </div>
+
+ <p class="catalog-more"><strong>100+ datasets</strong> &mdash; and the next one we add is whichever one you ask for.</p>
</div>
</section>
-<section id="contact" class="section">
- <div class="container narrow">
- <div class="cta-card">
- <span class="cta-glow" aria-hidden="true"></span>
- <h2 class="cta-title">Ready when you are.</h2>
- <a href="mailto:hello@tidyindex.com" class="btn btn-primary btn-lg cta-btn">
+<section class="section section-cta">
+ <div class="container">
+ <div class="cta-block">
+ <div class="cta-text">
+ <p class="section-marker">§ 04 &nbsp;&middot;&nbsp; start</p>
+ <h2 class="section-headline">Ready when you are.</h2>
+ </div>
+ <a href="mailto:contact@tidyindex.com" class="btn btn-primary btn-lg">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="7.5" cy="15.5" r="5.5"/>
<path d="m11.5 11.5 9.5-9.5"/>