← Back to the bench

How Aliquot works

Built for the DEV × Sanity Challenge. A keyword search finds the sentence “extend at 72 °C”. It doesn’t know that the manual for the polymerase you’re actually using says 68 °C, that your lab bans ethidium bromide, or how long a 1.2 kb product needs at 1 minute per kb.

  1. 1

    Every number is a claim, and every claim has a source

    The ledger doesn’t store “the extension temperature for Taq”. It stores what each source says about it — NEB’s product protocol, a published protocol, a teaching handout — with the source’s authority (1 forum … 5 the manufacturer’s own manual or regulatory guidance), the condition it applies under, and a written ruling. Where reputable sources genuinely disagree, the claim is marked disputed or context-dependent instead of being flattened into one value.

  2. 2

    Parameters are data, not prose

    Polymerases store their cycling parameters as numbers (extension °C, seconds per kb, annealing offset from Tm, reaction components in µL). Recipes store components as value + unit. That is what lets Aliquot compute a PCR program for your amplicon length, scale a master mix to 12 reactions with overage, or turn “1 L of LB Miller” into 500 mL — deterministically, in code, with the source attached.

  3. 3

    A Knowledge Base reconciles the prose

    Sanity Context builds a Knowledge Base from manufacturer protocol pages, Addgene and ASM protocols and biosafety guidance (website sources) plus the ledger itself (a dataset source). When two sources disagree, the build raises an issue with both claims side by side; resolving it once becomes an instruction every future build keeps.

  4. 4

    Precedence is explicit

    Your lab’s SOP (labRule documents) outranks everything for your lab. Then the manual for the exact product in your hand. Then regulatory guidance for safety, then published protocols, then textbooks. The agent applies that order every time and shows it — a kit manual binds that kit, not every PCR.

  5. 5

    Answers come back as structure

    The agent reads both sources through two Context MCP endpoints (Knowledge Base mode and GROQ mode), calls the calculator tools for every number, and finishes with a typed verdict: go / caution / stop, the values to use, the program or amounts table, any conflicts with both sources and the ruling, safety notes and lab-rule overrides. The card you see is that object.

The query behind “which value applies?”
*[_type == "claim" && subject._ref == $id && parameter match $p]
  | order(source->authority desc){
    statement, value, unit, standing, appliesWhen, ruling,
    "source": source->{title, url, kind, authority}
  }