Skip to main content

SciMD — Scientific Markdown for the AI Era

Project description

SciMD — Scientific Markdown for the AI Era

An open document format designed for humans to write, machines to understand, and science to advance.

License: MIT Spec Version DOI


The Problem

Modern scientific and technical documents are trapped in formats designed for printing, not understanding:

  • PDFs require OCR to extract text, losing structure and introducing errors
  • Charts as images are opaque to AI — a bar chart becomes meaningless pixels
  • Figures without context force models to hallucinate interpretations
  • Unstructured text makes RAG retrieval imprecise and chunk boundaries arbitrary
  • Formulas as images cannot be parsed, searched, or validated

The result: AI models hallucinate, RAG systems retrieve noise, and training pipelines waste compute on lossy format conversions.

The Solution

SciMD (.smd) is a plain-text, human-readable document format that solves these problems by design:

Problem SciMD Solution
OCR errors Plain text with Markdown — no conversion needed
Opaque charts Author provides tabular data + interpretation
Ambiguous figures Mandatory author descriptions for every image
Poor RAG chunking Semantic sections with unique IDs and metadata
Formula images Native LaTeX inline ($...$) and block ($$...$$)
Diagram ambiguity MermaidJS source code + author description
Missing context Structured metadata at document and section level
Training noise Sequential, predictable structure from authoring

Key Principles

  1. Author-time structure — Structure is defined when writing, not reverse-engineered later
  2. Data over pixels — Charts are data tables; diagrams are code; formulas are LaTeX
  3. Interpretation is mandatory — Every visual element carries the author's explanation
  4. Sequential readability — Documents flow logically for both humans and token streams
  5. Plain text first — Every .smd file is valid UTF-8 text, editable in any text editor
  6. Open by default — MIT licensed, community-driven, no vendor lock-in

Quick Example

---smd
title: "Effects of Temperature on Catalyst Performance"
authors:
  - name: "María García"
    orcid: "0000-0002-1234-5678"
    affiliation: "UNAM"
version: "0.1.0"
lang: "es"
keywords: ["catalysis", "temperature", "kinetics"]
---

::section{#intro}
::meta
type: introduction
summary: "Overview of temperature effects on heterogeneous catalysis"
::

# Introduction

The relationship between temperature and catalytic activity follows
the Arrhenius equation $k = A e^{-E_a / RT}$, where $E_a$ is the
activation energy and $R$ is the gas constant.

::endsection

::section{#results}
::meta
type: results
summary: "Experimental measurements of conversion rates at 5 temperatures"
depends_on: ["#methods"]
::

# Results

::chart{#fig-conversion}
::interpretation
Conversion rate increases linearly between 200–350°C, reaching a
plateau at 89% above 400°C. The inflection point at 350°C suggests
a change in the rate-limiting step.
::
| Temperature (°C) | Conversion (%) | Selectivity (%) |
|---|---|---|
| 200 | 23.1 | 95.2 |
| 250 | 41.7 | 93.8 |
| 300 | 62.4 | 91.1 |
| 350 | 78.9 | 87.3 |
| 400 | 89.2 | 82.6 |
::endchart

::endsection

Project Structure

scimd/
├── spec/
│   └── SPECIFICATION.md    # Full format specification (v0.1.0)
├── examples/
│   ├── basic.smd           # Simple example document
│   └── full-paper.smd      # Complete scientific paper
├── parser/
│   ├── scimd_parser.py     # Reference parser in Python
│   ├── scimd_validator.py  # Validation tool
│   └── requirements.txt    # Python dependencies
├── docs/
│   ├── AUTHORING_GUIDE.md  # How to write SciMD documents
│   └── RAG_GUIDE.md        # How to use SciMD for RAG pipelines
├── LICENSE
├── CONTRIBUTING.md
└── README.md

Getting Started

Writing a Document

Any text editor works. Save your file with the .smd extension and follow the Authoring Guide.

Validating a Document

pip install scimd
scimd validate my-paper.smd

Parsing for RAG

from scimd import SciMDParser

doc = SciMDParser.parse("my-paper.smd")

# Get semantically chunked sections
for section in doc.sections:
    print(section.id, section.summary)
    print(section.content)

# Extract all chart data as DataFrames
for chart in doc.charts:
    print(chart.interpretation)
    print(chart.dataframe)

For the Scientific Community

SciMD is built to serve researchers, not platforms:

  • No proprietary tools required — write in VS Code, Vim, Notepad, anything
  • Version control friendly — plain text diffs cleanly in Git
  • Citation ready — structured metadata maps to BibTeX, CSL, and DOI
  • Multilingual — UTF-8 native, lang metadata per document and section
  • Accessible — mandatory descriptions make content accessible by design

Roadmap

  • v0.1.0 — Core specification
  • v0.2.0 — Reference parser + validator (Python)
  • v0.3.0 — VS Code extension with live preview
  • v0.4.0 — Pandoc filter for PDF/HTML/DOCX export
  • v0.5.0 — LLM training pipeline toolkit
  • v1.0.0 — Stable specification after community review

Contributing

We welcome contributions from researchers, developers, and anyone who cares about making knowledge more accessible. See CONTRIBUTING.md.

Author

SciMD was created by Juan Francisco Avilés Calderón.

License

MIT — Use it, fork it, improve it.


SciMD: Because science deserves better than screenshots of spreadsheets.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyscimd-0.1.31.tar.gz (27.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyscimd-0.1.31-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file pyscimd-0.1.31.tar.gz.

File metadata

  • Download URL: pyscimd-0.1.31.tar.gz
  • Upload date:
  • Size: 27.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyscimd-0.1.31.tar.gz
Algorithm Hash digest
SHA256 b89134c15a758a778b6d3deb8613eec7fc2459245a8556a1c95c54ff37bfcc9e
MD5 74b6fe508da560d8164552a73352fcb0
BLAKE2b-256 d81c882efaeddf2819fb137e06f21e752ac193a160aa24d09a59dd1f1d59d172

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyscimd-0.1.31.tar.gz:

Publisher: publish.yml on avifranca/scimd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyscimd-0.1.31-py3-none-any.whl.

File metadata

  • Download URL: pyscimd-0.1.31-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyscimd-0.1.31-py3-none-any.whl
Algorithm Hash digest
SHA256 208b0b2855c0b6f3d6576fdb7bb950304fb9b063ac67951d34b810ae0b5b5bc5
MD5 3b92f099d9582eda6f4ce54b18ad9d38
BLAKE2b-256 4d47591917211fb6d961b4eb0f8f08476237ee5631a76468c4cf55c6560a6e28

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyscimd-0.1.31-py3-none-any.whl:

Publisher: publish.yml on avifranca/scimd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page