Pilot proposal

Pore-scale electrode properties, with provenance

GeoDict Copilot (CVT engineering) simulates the microstructure; MESSAI publishes the result next to 23k papers of literature values, tagged “simulated”.

Illustrative values — no GeoDict run has been performed

Five electrodes GeoDict already understands

Each card shows the structure a pore-scale run would characterise and the five properties MESSAI would receive for it.

Carbon felt

simulated · GeoDict (proposed)
PropertyValue · Range
Porosity0.930.9–0.96
Tortuosity1.81.4–2.6
Specific surface30,000m²/m³10,000–100,000
Permeability3.00e-10m²1.00e-10–1.00e-9
Thickness5mm4–6

Source: Manufacturer datasheet range (SGL / Sigracell felt series); specific surface is a geometric estimate from fibre diameter; illustrative

Carbon paper

simulated · GeoDict (proposed)
PropertyValue · Range
Porosity0.780.75–0.82
Tortuosity1.81.4–2.4
Specific surface120,000m²/m³50,000–200,000
Permeability5.00e-12m²1.00e-12–1.00e-11
Thickness190µm170–210

Source: Manufacturer datasheet range (Toray TGP-H series, nominal 190 µm grade); specific surface is a geometric estimate; illustrative

Carbon cloth

simulated · GeoDict (proposed)
PropertyValue · Range
Porosity0.80.75–0.85
Tortuosity1.51.2–2
Specific surface100,000m²/m³50,000–200,000
Permeability2.00e-11m²1.00e-11–1.00e-10
Thickness350µm300–500

Source: Typical woven PAN carbon cloth range (0.3 to 0.5 mm); permeability is an order-of-magnitude estimate between paper and felt; illustrative

Graphite fibre brush

simulated · GeoDict (proposed)
PropertyValue · Range
Porosity0.960.95–0.98
Tortuosity1.51.2–2
Specific surface16,000m²/m³5,000–50,000
Permeability1.00e-8m²1.00e-9–1.00e-7
Thickness30mm20–100

Source: Typical graphite fibre brush range; specific surface quoted per brush volume; thickness is the brush envelope diameter and varies widely by design; illustrative

Carbon granules (GAC bed)

simulated · GeoDict (proposed)
PropertyValue · Range
Porosity0.450.38–0.52
Tortuosity1.51.3–2
Specific surface1,800m²/m³800–3,600
Permeability7.00e-9m²1.00e-9–4.00e-8
Thickness50mm20–200

Source: Packed bed of 1 to 4 mm granules; specific surface is the geometric 6(1-ε)/d_p (BET micropore area is ~10⁶× larger and not resolved here); permeability from Kozeny-Carman; thickness is bed depth; illustrative

How the result travels

Data flow between GeoDict Copilot and MESSAIGeoDict Copilot (CVT)Pore-scale simulationon the customer’s machineExchange fileCalibrationSet JSON:value · unit · standard errorrig · source fileMESSAI/parameters pages, priors,lab predictor;provenance: simulatedMCP tools: literature values, priors, predictions

The exchange file

CVT’s Python post-processing writes JSON in MESSAI’s existing CalibrationSet shape: for each parameter a value, a unit, a standard error, the rig it came from, and the source file.

The platform’s applier only lets a file touch the parameters that are allow-listed for its target. Anything else is rejected, not silently dropped.

Validates against CalibrationSetSchema
{
  "schemaVersion": "0.1.0",
  "id": "00000000-0000-4000-8000-0000000000a1",
  "label": "Illustrative current-efficiency calibration (simulated, not a result)",
  "createdAt": "2026-10-23T00:00:00.000Z",
  "rig": {
    "label": "GeoDict FlowDict spacer sweep (illustrative)",
    "campaign": "Proposed pilot - no run has been performed",
    "operator": "CVT engineering (proposed)",
    "notes": "ILLUSTRATIVE. These values are synthetic and were not produced by GeoDict or any rig. They show the shape of the exchange file for a proposed pore-scale spacer simulation of the pilot design: nine current-density points swept through the limiting current, source: simulated."
  },
  "structure": {
    "membraneStackUp": "bipolar:Bipolar membrane (generic)|cation-exchange:Cation-exchange membrane (generic)|anion-exchange:Anion-exchange membrane (generic)",
    "permselectivities": "bipolar:0.95|cation-exchange:0.97|anion-exchange:0.95",
    "acidChannelGap_m": 0.0005,
    "baseChannelGap_m": 0.0005,
    "spacerVoidFraction": 0.8,
    "spacerShapeFactor": 1.6
  },
  "designFingerprint": "dd398efa",
  "data": {
    "target": "current-efficiency",
    "points": [
      {
        "currentDensity_A_per_m2": 1000,
        "currentEfficiency": 0.9125
      },
      {
        "currentDensity_A_per_m2": 2500,
        "currentEfficiency": 0.8671
      },
      {
        "currentDensity_A_per_m2": 4000,
        "currentEfficiency": 0.8194
      },
      {
        "currentDensity_A_per_m2": 5500,
        "currentEfficiency": 0.7496
      },
      {
        "currentDensity_A_per_m2": 7000,
        "currentEfficiency": 0.6835
      },
      {
        "currentDensity_A_per_m2": 8500,
        "currentEfficiency": 0.597
      },
      {
        "currentDensity_A_per_m2": 10000,
        "currentEfficiency": 0.603
      },
      {
        "currentDensity_A_per_m2": 12000,
        "currentEfficiency": 0.596
      },
      {
        "currentDensity_A_per_m2": 14000,
        "currentEfficiency": 0.601
      }
    ]
  },
  "parameters": [
    {
      "name": "coIonLeakageCoefficient",
      "value": 0.3496142212500261,
      "standardError": 0.002010397427043742,
      "unit": "-",
      "atBound": false,
      "lower": 0,
      "upper": 0.999
    },
    {
      "name": "limitingCurrentDensity_A_per_m2",
      "value": 8499.951629356563,
      "standardError": 72.56883799103873,
      "unit": "A/m2",
      "atBound": false,
      "lower": 2800,
      "upper": 1400000
    }
  ],
  "fit": {
    "rSquared": 0.9993256310612163,
    "residualStandardDeviation": 0.0035232456000414787,
    "chiSquare": 0.00008689281690748147,
    "degreesOfFreedom": 7,
    "conditionNumber": 25.515331148789418,
    "iterations": 41,
    "converged": true
  },
  "residuals": [
    0.004000490798639067,
    -0.0030110479702989412,
    0.0019039263891125202,
    -0.004211305949715638,
    0.0027724590248771053,
    -0.002330495118100906,
    0.0036695048818990994,
    -0.003330495118100907,
    0.0016695048818990976
  ]
}

What the Copilot could call back

The Copilot already talks to Claude; if it can call MCP, these are available at /api/mcp.

Papers
  • search_papers
  • get_paper

Trace a literature number back to its paper and extracted snippet.

Parameters
  • list_parameters
  • get_parameter_distribution
  • get_parameter_sources
  • get_prior
  • get_contradictions
  • get_parameter_relationships

Compare a simulated value with published distributions, priors and contradictions.

Modelling
  • predict_performance
  • update_with_my_data
  • export_priors

Predict performance for a candidate electrode, or update a prior with new data.

Discovery
  • find_similar_studies
  • find_research_gaps

Find similar studies and gaps around a new electrode structure.

Reference
  • lookup_microbes
  • lookup_materials

Look up microbes and electrode materials by name.

Follow-on: DAC

  1. Step 1

    Spacer mesh → flow + mass transfer (GeoDict)

  2. Step 2

    Limiting current density → membrane area (@messai/dac)

  3. Step 3

    Membrane area → cost per tonne

The same pattern applies to direct air capture. The model’s own evidence document attributes 84.5% of commercial cost to bipolar membrane price and life (docs/dac-evidence-gaps.md).

Open the DAC workspace

Proposal prepared for a conversation with CVT engineering · MESSAI · October 23, 2026