Skip to content
SupportGeniusPublic

About

supportgeni.us: the SupportGenius landing page. Static HTML, no build step, Cloudflare Pages.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SupportGenius. Support that answers. When it can't, it routes the issue to the right people. In design, nothing is built yet.

Product: not built Pages: 1 Stack: vanilla JS Build step: none Dependencies: zero Deploy: Cloudflare Pages Agent readable: yes

supportgeni.us · a Factory Zero venture


The site

This repository is the marketing site for SupportGenius: one page, one stylesheet and one script, served by Cloudflare Pages. There is no framework, no bundler, no build step and no runtime dependency. It was designed in Claude Design (SupportGenius.dc.html) and ported to static HTML by hand, the same way as colonizer.dev and findsyou.work.

Two things are being described, and the site is careful about which is which. The split is the same one the organisation profile makes:

What it is Status
The site This repository: supportgeni.us, one page on Cloudflare Pages, MIT. Shipping
SupportGenius The product: the agent, its surfaces and integrations, the escalation pipeline, the Rust core, and the waitlist. Planned

Support that answers. When it can't, it routes the issue to the right people, where they already work.

The rule this site is built around

Nothing is built. There is no agent, no widget, no SDK, no phone line, no API, no MCP server and no integration. Every capability carries one of two labels, and the label sets the tense of the sentence around it.

  • Shipping: built, deployed, usable now. Present tense is allowed only here. Today that is this page, and nothing else.
  • Planned: named, unbuilt. Conditional tense, and a planned chip wherever it appears on the page.

A banner at the top of the page says so in the first sentence a visitor reads, and llms.txt repeats it for machine readers, so an answer engine cannot describe a planned feature as available.

The conversations, issue numbers, judge scores, SLA table and on-call phone view are illustrations with sample data, and each is labelled as such where it appears.

The page

Anchor Section Job
/ Hero The claim, the planned embed snippet, the planned surfaces
#demo Illustration One widget, three scenes on a 32 s loop: answered from docs, escalated to engineering, passed to sales
#how How it would work Three steps: sources, surface, destinations
#features Features Fourteen planned capabilities, each with a chip
#pipeline Escalations Drafting model, judge model, router, lifecycle; the judge's three outcomes; an example SLA policy
#human Human in the loop Six steps from customer to correction, beside the on-call phone view
#integrations Integrations Sixteen planned destinations and surfaces
#pricing Pricing The tiers being planned, without prices
#waitlist Waitlist Posts to the waitlist Worker at api.supportgeni.us with a Turnstile token; a mail address without JavaScript

Plus 404.html, llms.txt, sitemap.xml, robots.txt, site.webmanifest and .well-known/security.txt.

Layout

.
├── index.html                 the page
├── 404.html
├── assets/
│   ├── supportgenius.css      the whole design system, tokens at the top
│   ├── supportgenius.js       demo stage scale, reduced motion for its SVG, the waitlist
│   ├── favicon.svg            the mark, still
│   ├── og.png                 Open Graph card (1200×630)
│   ├── apple-touch-icon.png  icon-512.png
│   ├── org-avatar.png         GitHub organisation avatar, uploaded by hand; not deployed
│   └── readme-banner.png      the banner above, also the org profile's; not deployed
├── llms.txt                   the structured summary for machine readers
├── robots.txt                 AI crawlers welcomed by name
├── _headers  _redirects       Cloudflare Pages
├── COPY.md                    every claim on the page, with its source
└── tools/
    ├── check.py               structure + house-rule checks; deploy.sh runs it
    ├── render-og.sh           renders every PNG above with headless Chrome, from *-render.html
    ├── build-dist.sh          assembles dist/ from an allowlist, stamps cache hashes
    └── deploy.sh              deploys origin/main from a clean worktree

Local preview

No build step, but the page uses root-relative paths, so serve it rather than opening it as file://:

python3 -m http.server 8000     # then http://localhost:8000/
python3 tools/check.py          # before every commit

_headers (including the Content-Security-Policy) only applies on Cloudflare Pages. A local server does not send it, so check a change that loads anything new on a Pages preview too.

Images

tools/render-og.sh renders og.png, readme-banner.png, org-avatar.png and the two app icons from tools/og-render.html, tools/banner-render.html, tools/avatar-render.html and assets/favicon.svg, with headless Chrome. The same shape as colonizer.dev. The images carry the "in design" chip, and no third-party logos, because an image travels without the page's trademark line.

readme-banner.png is also the banner of the organisation profile in SupportGenius/.github: copy it there when it changes. GitHub has no API for organisation avatars, so org-avatar.png is uploaded by hand at github.com/organizations/SupportGenius/settings/profile.

The demo stage

The hero illustration is a fixed 1120×520 canvas, positioned in canvas pixels so the SVG paths and the HTML cards line up, then scaled to the column width by supportgenius.js (the --s custom property). Without JavaScript the CSS breakpoints approximate the same scale.

Everything runs on one 32 s loop (--loop), and every keyframe percentage is the design canvas's own. The destination cards light up one after another through --d, a fraction of the loop.

Under prefers-reduced-motion the whole scene freezes on one readable frame (42% of the loop: the iOS conversation, escalated, with the issue filed) rather than collapsing to its invisible end state. CSS cannot reach SMIL, so the script pauses the SVG packets on the same frame.

The waitlist

The form is open. It posts { email, product: "supportgenius", captchaToken } to https://api.supportgeni.us/v1/waitlist, a Cloudflare Worker running the Cratefield harness waitlist module with its own D1 database (SupportGenius/waitlist-backend). captchaToken is a Cloudflare Turnstile token from the managed widget (sitekey 0x4AAAAAAFRBObOIEtlONvJt, action: "waitlist"), rendered explicitly by assets/supportgenius.js. The Worker binds the token to the apex hostname supportgeni.us, so www must redirect to the apex (a Cloudflare Redirect Rule on the zone).

The Worker sends a double opt-in confirmation link through Owlpost, from no-reply@send.supportgeni.us, so the form's success copy says to check the inbox (data-double-opt-in="true"). Answers: 202 joined (also for an address already on the list), 400 with problem type …/captcha-failed for the human check, 400 for a bad address, 429 too many tries. With JavaScript off the form stays hidden and the page offers hello@supportgeni.us instead.

The CSP in _headers allows https://api.supportgeni.us (connect-src) and https://challenges.cloudflare.com (script-src, frame-src). Deploy the Worker before the site, or joins fail until it answers.

Deploy

Cloudflare Pages, project supportgenius, on the Factory0 account, which also holds the supportgeni.us zone:

tools/deploy.sh --dry-run    # what would ship
tools/deploy.sh              # ship origin/main

deploy.sh never deploys the working copy. It checks origin/main out into a temporary worktree, runs tools/check.py, builds dist/, and deploys that with the commit hash recorded on the Pages deployment. Merge first, then deploy.

Use a login or API token for the Factory0 account. Another account's wrangler login fails with Authentication error [code: 10000].

House rules for edits

  1. Invent nothing. No metrics, customer logos, testimonials, uptime figures, response times, user counts or benchmarks. The design canvas said the core gives "sub-millisecond routing, low memory"; that is not on the page.
  2. Present tense is earned. Only what is deployed and usable is described as working. Today that is this page.
  3. No price for anything planned. The canvas had $49 and $249 tiers, an annual discount and "99 voice minutes"; none of them are on the page. tools/check.py fails on anything that looks like a price.
  4. Nothing says Available. The canvas marked integrations Available, Beta or Planned. All of them are planned, and the check fails on the other two.
  5. The demo says it is a demo. The stage carries an illustration chip and a caption. Keep both.
  6. No dead controls. The canvas had a Copy button for a snippet that does not work, a disabled "Live demo" button and footer links that went nowhere. The snippet carries a planned chip instead, the bubble links to the waitlist, and the footer lists only links that resolve.
  7. Logos only where the brand allows it. A planned integration is not a true "integrates with". Salesforce, Slack and Apple get line icons until their terms are met; tools/check.py holds the allowlist. See COPY.md.
  8. No dark patterns. No fake urgency, no pre-checked boxes, and nothing gated behind an email.

Claims are tracked in COPY.md.

Working on an issue

The backlog is written for a Colonizer colony, or any agent, to take one issue at a time. Start at the pinned tracking issue, #13, which gives the order and the rules. In short: touch only the files the issue lists, run python3 tools/check.py before every commit, open a PR with Closes #N, and never deploy. A person merges, then runs tools/deploy.sh. Labels: colony-ready (take it), needs-decision (ask the one question it names), human-step / human-only (needs account access), blocked.

Accessibility and motion

Motion is decoration. The hero illustration is aria-hidden and described in prose for screen readers. Under reduced motion every animation stops. Nothing is hidden until JavaScript runs. The canvas's #6b7382 label colour failed WCAG AA at the sizes it was used; it is #7b8394 here (5.1:1 on the page background).

Licence

The code in this repository is MIT. The SupportGenius name and mark are not.


No cookies · no analytics · Built by Factory Zero

About

supportgeni.us: the SupportGenius landing page. Static HTML, no build step, Cloudflare Pages.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages