{
  "position": "Olto turns an experiment into a record a stranger can recompute.",
  "generatedAt": "2026-09-27T02:51:11.825Z",
  "generatedFrom": "src/lib/marketing/facts.ts",
  "factsAsOf": {
    "platform": "August 2026",
    "audience": "August 2026"
  },
  "summary": {
    "position": "Olto turns an experiment into a record a stranger can recompute.",
    "what": "Olto Discovery is a web application for designing, running and publishing experiments. You describe a research goal, it drafts a structured protocol, you edit that protocol as a step graph, run it as a guided session, log findings and evidence against it, analyse the results, and publish a citable record.",
    "record": "The record is the point. A published protocol gets a content-addressed fingerprint, a deterministic completeness grade and a citable permalink, so a reader who was not there can re-derive the identity and the score from the text itself.",
    "scope": "Around it sit a laboratory notebook, inventory and reagent tracking, literature search and import, statistics, a standards library, a regulated-laboratory workspace, an engineering and metrology workspace, a classroom edition, and a precision-medicine surface.",
    "operator": "Velora Biotech LLC operates Olto Discovery."
  },
  "surfaces": [
    {
      "path": "/",
      "name": "Home",
      "purpose": "What Olto does, and the argument for it.",
      "open": true
    },
    {
      "path": "/try",
      "name": "Try",
      "purpose": "Generate a real 12-section protocol from your own sentence, with no account and no card.",
      "open": true
    },
    {
      "path": "/fingerprint",
      "name": "Fingerprint",
      "purpose": "Paste two differently worded methods and watch them resolve to one content-addressed identity in your browser.",
      "open": true
    },
    {
      "path": "/fingerprint/spec",
      "name": "Fingerprint specification",
      "purpose": "The canonical form, the normalization rules and the hash, written out so the identity can be re-derived without Olto.",
      "open": true
    },
    {
      "path": "/engines",
      "name": "Engine Registry",
      "purpose": "The 15 sealed engines with their citations, versions and hashes, re-run and re-hashed when the page loads.",
      "open": true
    },
    {
      "path": "/docs/rigor-score",
      "name": "Rigor Score specification",
      "purpose": "The signals, the detection rules, the arithmetic and a worked example you can recompute by hand.",
      "open": true
    },
    {
      "path": "/library",
      "name": "Open library",
      "purpose": "Published protocols. Each one has a Reproducibility Passport: a citable record carrying its fingerprint, its completeness grade, its manifest and its citation string.",
      "open": true
    },
    {
      "path": "/library/stats",
      "name": "Library statistics",
      "purpose": "How the deterministic scorer behaves across the published protocols.",
      "open": true
    },
    {
      "path": "/pricing",
      "name": "Pricing",
      "purpose": "Every price, every allowance and the unit each is counted in.",
      "open": true
    },
    {
      "path": "/verity",
      "name": "Verity",
      "purpose": "The precision-medicine surface. Research-use-only, non-diagnostic. Requires molecular-pathologist review before release.",
      "open": true
    },
    {
      "path": "/labs",
      "name": "Regulated labs",
      "purpose": "The laboratory workspace: hash-chained audit trail, electronic signatures, separation of duties, quality control, and the procurement gaps stated on the page.",
      "open": true
    },
    {
      "path": "/engineering",
      "name": "Engineering",
      "purpose": "Uncertainty budgets, tolerance stack-ups, statistical process control, gage studies and a sealed verification record.",
      "open": true
    },
    {
      "path": "/education",
      "name": "Education",
      "purpose": "The inquiry-science workspace that works alongside a learning management system.",
      "open": true
    },
    {
      "path": "/trust",
      "name": "Trust center",
      "purpose": "Security, privacy, compliance and accessibility in one index.",
      "open": true
    },
    {
      "path": "/trust/limits",
      "name": "What Olto is not",
      "purpose": "The negative register, rendered from the same constants this file reads.",
      "open": true
    },
    {
      "path": "/security",
      "name": "Security",
      "purpose": "Tenant isolation, authentication, encryption in transit and at rest, and what is not covered.",
      "open": true
    },
    {
      "path": "/compliance",
      "name": "Compliance",
      "purpose": "The regulatory posture, including the audits and agreements that are not in place.",
      "open": true
    },
    {
      "path": "/subprocessors",
      "name": "Subprocessors",
      "purpose": "Every third party that processes data, and what each one does.",
      "open": true
    },
    {
      "path": "/status",
      "name": "Status",
      "purpose": "Live service checks. Olto publishes no uptime percentage, and says why.",
      "open": true
    },
    {
      "path": "/docs",
      "name": "Documentation",
      "purpose": "How each part of the product works.",
      "open": true
    },
    {
      "path": "/updates",
      "name": "Product updates",
      "purpose": "What shipped, with dates, and what is planned.",
      "open": true
    },
    {
      "path": "/about",
      "name": "About",
      "purpose": "Who builds Olto, stated plainly.",
      "open": true
    },
    {
      "path": "/download",
      "name": "Desktop build",
      "purpose": "The desktop application, and the fact that it is not signed.",
      "open": true
    },
    {
      "path": "/contact",
      "name": "Contact",
      "purpose": "How to reach a person.",
      "open": true
    }
  ],
  "counts": [
    {
      "id": "protocol-sections",
      "statement": "A generated protocol has 12 structured sections: Objective, Hypothesis, Experimental Design, Materials & Reagents, Procedure, Variables, Control Groups, Expected Results, Statistical Analysis, Quality & Reproducibility, Troubleshooting, Safety & Risk Notes.",
      "value": "12",
      "precision": "exact",
      "asOf": "August 2026",
      "source": "PROTOCOL_SECTION_COUNT, PROTOCOL_SECTIONS",
      "verify": "/try"
    },
    {
      "id": "rls-policies",
      "statement": "The database carries at least 425 row-level-security policies.",
      "value": "425 or more",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "RLS_POLICY_COUNT_MIN",
      "verify": "/security"
    },
    {
      "id": "db-tables",
      "statement": "The public schema holds at least 225 tables.",
      "value": "225 or more",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "DB_TABLE_COUNT_MIN",
      "verify": "/security"
    },
    {
      "id": "rls-coverage",
      "statement": "Row-level security is enabled on 226 of 226 tables in the public schema.",
      "value": "226 of 226",
      "precision": "ratio",
      "asOf": "August 2026",
      "source": "RLS_TABLE_COVERAGE",
      "verify": "/security"
    },
    {
      "id": "automated-tests",
      "statement": "The repository runs at least 10,000 automated test blocks.",
      "value": "10,000 or more",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "AUTOMATED_TEST_COUNT_MIN",
      "verify": null
    },
    {
      "id": "ai-route-share",
      "statement": "31 of 454 server routes call a language model. The other 423 compute.",
      "value": "31 of 454",
      "precision": "ratio",
      "asOf": "August 2026",
      "source": "AI_ROUTE_SHARE",
      "verify": "/docs/ai-disclosure"
    },
    {
      "id": "sealed-engines",
      "statement": "15 scientific engines are sealed: each carries the literature it implements, a version string, and a SHA-256 over both its constant tables and a fixed grid of its own outputs.",
      "value": "15",
      "precision": "exact",
      "asOf": "August 2026",
      "source": "VERITY_FACTS.sealedEngineCount",
      "verify": "/engines"
    },
    {
      "id": "precision-tests",
      "statement": "The precision-medicine libraries carry at least 340 test blocks, including the lockfile test that fails the build when a sealed engine's hash drifts.",
      "value": "340 or more",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "VERITY_FACTS.testBlockCountMin",
      "verify": "/engines"
    },
    {
      "id": "engineering-tools",
      "statement": "The engineering workspace has 61 calculator and metrology routes (11 engineering, 50 utilities), and 61 of them sit on a unit-tested module.",
      "value": "61 of 61",
      "precision": "exact",
      "asOf": "August 2026",
      "source": "ENGINEERING_FACTS.toolRoutes, ENGINEERING_FACTS.unitTestedToolRoutes",
      "verify": "/engineering"
    },
    {
      "id": "engineering-libraries",
      "statement": "Those routes resolve to 51 computation libraries holding at least 350 source modules and at least 3,500 test blocks, with 20 calculators in the engineering registry.",
      "value": "51 libraries",
      "precision": "exact",
      "asOf": "August 2026",
      "source": "ENGINEERING_FACTS",
      "verify": "/engineering"
    },
    {
      "id": "engineering-no-model",
      "statement": "Calls to a language model in that tool code: 0. The figure covers those 61 routes, their 51 libraries and the engineering API routes, and it is not a claim about the product as a whole.",
      "value": "0",
      "precision": "exact",
      "asOf": "August 2026",
      "source": "ENGINEERING_FACTS.modelCallsInToolCode",
      "verify": "/engineering"
    },
    {
      "id": "standards-library",
      "statement": "The Standards Library holds at least 490 records, seeded by 16 migration files.",
      "value": "490 or more",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "STANDARDS_LIBRARY",
      "verify": "/docs/standards"
    },
    {
      "id": "lims-schema",
      "statement": "The regulated-lab workspace has at least 65 tables and at least 145 Postgres functions, of which at least 120 are callable procedures rather than triggers or column guards, across at least 35 migrations.",
      "value": "65 or more tables",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "LIMS_FACTS",
      "verify": "/labs"
    },
    {
      "id": "lims-tests",
      "statement": "Those libraries carry at least 215 test blocks, and 6 Westgard quality-control rules are implemented.",
      "value": "215 or more",
      "precision": "floor",
      "asOf": "August 2026",
      "source": "LIMS_FACTS.testBlockCountMin, LIMS_FACTS.westgardRuleCount",
      "verify": "/labs"
    },
    {
      "id": "lims-ai-route-share",
      "statement": "1 of 72 regulated-lab routes calls a language model. The other 71 compute. The one that does narrates results that were already released, and it writes nothing.",
      "value": "1 of 72",
      "precision": "ratio",
      "asOf": "August 2026",
      "source": "LIMS_AI_ROUTE_SHARE",
      "verify": "/labs"
    }
  ],
  "aiBoundary": {
    "withModel": 31,
    "total": 454,
    "computeOnly": 423,
    "percentWithModel": 7,
    "ratio": "31 of 454",
    "whatTheModelDoes": "The model drafts prose: protocol sections, refinements, summaries, assistant replies, and plain-language narration of a result that was already computed.",
    "whatComputes": "The deterministic scores are computed, not generated. The protocol fingerprint, the Rigor Score, the passport completeness score, the engineering calculators and the laboratory quality-control rules are pure functions with no model in the path.",
    "exception": "One exception, stated because the absolute version of this claim would be false without it: /api/protocols/[id]/risk-score returns a score assessed by a model, not computed. Treat it as an AI assessment wherever it appears.",
    "callDefinition": "One AI call is a single AI-assisted action — generating, refining, simulating, or asking the assistant. It is counted once, per seat, when the request is made.",
    "notEndToEndEncrypted": true,
    "verify": "/docs/ai-disclosure",
    "asOf": "August 2026"
  },
  "limits": [
    {
      "id": "no-soc2",
      "truth": "soc2AuditCompleted",
      "renderWhen": false,
      "kind": "limit",
      "statement": "No independent SOC 2 audit has been completed. If a procurement process requires a Type II report before evaluation can begin, Olto does not clear that gate today.",
      "verify": "/compliance"
    },
    {
      "id": "no-org-mfa",
      "truth": "mfaEnforceableOrgWide",
      "renderWhen": false,
      "kind": "limit",
      "statement": "Multi-factor authentication cannot be required across an organization. There is no SAML, no single sign-on and no SCIM provisioning.",
      "verify": "/security"
    },
    {
      "id": "no-admin-mfa",
      "truth": "mfaMandatoryForAdmins",
      "renderWhen": false,
      "kind": "limit",
      "statement": "Multi-factor authentication is not force-enrolled for administrators.",
      "verify": "/security"
    },
    {
      "id": "no-public-api",
      "truth": "publicApiAvailable",
      "renderWhen": false,
      "kind": "limit",
      "statement": "There is no public or programmatic API. Integration today means file export and the laboratory message formats, not a REST interface to build against.",
      "verify": "/docs/api"
    },
    {
      "id": "no-native-mobile",
      "truth": "nativeMobileApp",
      "renderWhen": false,
      "kind": "limit",
      "statement": "There is no native mobile app. Mobile means responsive web plus an installable progressive web app.",
      "verify": "/download"
    },
    {
      "id": "desktop-unsigned",
      "truth": "desktopAppSigned",
      "renderWhen": false,
      "kind": "limit",
      "statement": "The desktop build is neither code-signed nor notarized, so an operating system will warn before it runs.",
      "verify": "/download"
    },
    {
      "id": "not-e2e",
      "truth": "endToEndEncrypted",
      "renderWhen": false,
      "kind": "limit",
      "statement": "Olto is not end-to-end encrypted. Content sent to an AI-assisted action reaches the model provider.",
      "verify": "/security"
    },
    {
      "id": "no-hsts",
      "truth": "hstsEnabled",
      "renderWhen": false,
      "kind": "limit",
      "statement": "HTTP Strict Transport Security is not enforced.",
      "verify": "/security"
    },
    {
      "id": "no-baa",
      "truth": "hipaaBaaAvailableByDefault",
      "renderWhen": false,
      "kind": "limit",
      "statement": "Olto is not offered as a HIPAA platform by default, and a Business Associate Agreement is not available as standard.",
      "verify": "/compliance"
    }
  ],
  "capabilities": [
    {
      "id": "mfa-available",
      "truth": "mfaAvailableToAll",
      "renderWhen": true,
      "kind": "capability",
      "statement": "Time-based one-time-password multi-factor authentication is available to every user, and it is fail-closed once enabled.",
      "verify": "/security"
    },
    {
      "id": "desktop-exists",
      "truth": "desktopAppExists",
      "renderWhen": true,
      "kind": "capability",
      "statement": "A desktop build exists.",
      "verify": "/download"
    }
  ],
  "plans": [
    {
      "tier": "explorer",
      "price": "Free forever",
      "aiCallsPerSeat": "5",
      "storage": "100 MB",
      "seats": "1",
      "protocols": "5"
    },
    {
      "tier": "researcher",
      "price": "$79 / month",
      "aiCallsPerSeat": "200",
      "storage": "10 GB",
      "seats": "1",
      "protocols": "No fixed limit"
    },
    {
      "tier": "lab",
      "price": "$499 / month",
      "aiCallsPerSeat": "2000",
      "storage": "100 GB",
      "seats": "10",
      "protocols": "No fixed limit"
    },
    {
      "tier": "enterprise",
      "price": "Custom pricing",
      "aiCallsPerSeat": "Unlimited",
      "storage": "Custom",
      "seats": "No fixed limit",
      "protocols": "No fixed limit"
    }
  ],
  "researchUseBoundary": "Research-use-only, non-diagnostic. Requires molecular-pathologist review before release.",
  "verify": [
    {
      "path": "/engines",
      "what": "Every sealed engine, recomputed on load. A hash that no longer matches its recorded value is rendered as a mismatch, not hidden."
    },
    {
      "path": "/docs/rigor-score",
      "what": "The full specification of the Rigor Score, including a worked example to recompute by hand."
    },
    {
      "path": "/fingerprint",
      "what": "The protocol fingerprint, computed in your browser from text you supply."
    },
    {
      "path": "/trust/limits",
      "what": "The limits, generated from the same constants the marketing pages branch on."
    },
    {
      "path": "/docs/ai-disclosure",
      "what": "Where a model is used, where it is not, and the one score that is model-derived."
    },
    {
      "path": "/library",
      "what": "Published protocols and their passports, each with a grade produced by the scorer above."
    },
    {
      "path": "/llms.txt",
      "what": "This file. Generated at request time from src/lib/marketing/facts.ts, so it changes when the underlying figures do."
    },
    {
      "path": "/claims.json",
      "what": "The same claims as structured data, for diffing one snapshot against another."
    }
  ]
}
