{
  "name": "Voqela website",
  "purpose": "Pre-release marketing site for Voqela, a private local dictation application for Apple silicon Macs. Its single conversion action is an early-access email list.",
  "canonicalOrigin": "https://voqela.com",
  "alternateDomain": "maclocalvoicetotext.com",
  "generated": "2026-08-04",
  "entity": {
    "product": "Voqela",
    "pronunciation": "voh-KELL-ah",
    "descriptor": "Private dictation for Mac",
    "maker": "Aaron Browne",
    "platform": "macOS 14 or newer, Apple silicon, English"
  },
  "routes": [
    {
      "path": "/",
      "purpose": "The product's full value in site-story order: speed and running entirely on the reader's own Mac, needing nothing from the network wherever they are, typing wherever they already type, the vocabulary that makes their own words stick, a reliability strip, data transparency, the records they keep and can hand to their own agent, the launch-gate list of claims still being earned, macOS detail, FAQ, and the early-access form. Written for any Mac user who dictates, not for one profession.",
      "schema": [
        "WebSite",
        "Organization",
        "SoftwareApplication",
        "FAQPage"
      ],
      "source": "src/pages/index.astro"
    },
    {
      "path": "/privacy/",
      "purpose": "Full data boundary, store inventory, permissions, network behaviour, and the complete claim ledger.",
      "schema": [
        "WebPage"
      ],
      "source": "src/pages/privacy.astro"
    },
    {
      "path": "/thanks/",
      "purpose": "Signup confirmation. Not indexable: the waitlist worker redirects a browser here after a successful submission, so it states a visitor's state rather than a document.",
      "schema": [
        "WebPage"
      ],
      "source": "src/pages/thanks.astro",
      "noindex": true
    }
  ],
  "endpoints": [
    {
      "path": "/claims.json",
      "purpose": "Every claim on the site with source and boundary.",
      "source": "src/pages/claims.json.ts"
    },
    {
      "path": "/qa-contract.json",
      "purpose": "The checks this site must pass.",
      "source": "src/pages/qa-contract.json.ts"
    },
    {
      "path": "/llms.txt",
      "purpose": "Short agent summary.",
      "source": "src/pages/llms.txt.ts"
    },
    {
      "path": "/llms-full.txt",
      "purpose": "Long agent context including the full ledger and FAQ.",
      "source": "src/pages/llms-full.txt.ts"
    },
    {
      "path": "/sitemap.xml",
      "purpose": "Indexable routes.",
      "source": "src/pages/sitemap.xml.ts"
    },
    {
      "path": "/robots.txt",
      "purpose": "Crawl policy and sitemap pointer.",
      "source": "src/pages/robots.txt.ts"
    }
  ],
  "waitlist": {
    "endpoint": "https://voqela-waitlist.aaron-462.workers.dev",
    "method": "POST",
    "fields": {
      "email": "required",
      "source": "optional; which form on the site submitted it",
      "company": "honeypot; a submission that fills it is discarded"
    },
    "responses": "A browser gets 303 to /thanks/; a client that asks for application/json gets JSON.",
    "stores": "The address, the time it arrived, and which form it came from. No IP address, no user agent, no referrer.",
    "rateLimit": "Five submissions per hour per caller, counted against a salted hash of the IP rather than the IP.",
    "implementation": "A Cloudflare Worker owned by this project, source in workers/waitlist in this repository. No third-party form service holds any address."
  },
  "claimPolicy": {
    "rule": "Every substantive claim traces to an entry in /claims.json, and the phrases listed there as forbidden are checked against the built output on every QA run.",
    "command": "npm run qa:claims",
    "authority": "The Voqela product repository's own claim ledger governs. This site mirrors only the subset it uses."
  },
  "productImagery": {
    "rule": "Every product image on this site is a stylised HTML and CSS recreation, labelled as an illustration.",
    "why": "The rendered application has not passed its attended visual acceptance, and no screenshot may contain real dictation content."
  },
  "openDecisions": [
    "Price, release date, and distribution channel are undecided and unpublished.",
    "Canonical domain between voqela.com and maclocalvoicetotext.com is undecided.",
    "Waitlist form endpoint is connected.",
    "Retention policy and a delete-all-local-data control are undecided in the product.",
    "No real application screenshots exist yet; all product imagery is illustration."
  ],
  "qa": {
    "command": "npm run qa:all",
    "scripts": [
      "npm run build",
      "npm run qa:claims",
      "npm run qa:routes",
      "npm run qa:seo",
      "npm run qa:perf",
      "npm run qa:browser",
      "npm run qa:launch"
    ]
  }
}