diff --git a/poetry.lock b/poetry.lock
index 1b6d992db1fe28a35e2b35b881588dd9adc30b3d..1cbf0c17c205dc4e0af73c5dd44e270b0ea49c52 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -969,6 +969,25 @@ category = "dev"
 optional = false
 python-versions = ">=3.6"
 
+[[package]]
+name = "jupytext"
+version = "1.14.1"
+description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts"
+category = "dev"
+optional = false
+python-versions = "~=3.6"
+
+[package.dependencies]
+markdown-it-py = ">=1.0.0,<3.0.0"
+mdit-py-plugins = "*"
+nbformat = "*"
+pyyaml = "*"
+toml = "*"
+
+[package.extras]
+rst2md = ["sphinx-gallery (>=0.7.0,<0.8.0)"]
+toml = ["toml"]
+
 [[package]]
 name = "keras"
 version = "2.9.0"
@@ -1065,6 +1084,28 @@ python-versions = ">=3.6"
 [package.extras]
 testing = ["coverage", "pyyaml"]
 
+[[package]]
+name = "markdown-it-py"
+version = "2.1.0"
+description = "Python port of markdown-it. Markdown parsing, done right!"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+mdurl = ">=0.1,<1.0"
+typing_extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""}
+
+[package.extras]
+testing = ["pytest-regressions", "pytest-cov", "pytest", "coverage"]
+rtd = ["sphinx-book-theme", "sphinx-design", "sphinx-copybutton", "sphinx", "pyyaml", "myst-parser", "attrs"]
+profiling = ["gprof2dot"]
+plugins = ["mdit-py-plugins"]
+linkify = ["linkify-it-py (>=1.0,<2.0)"]
+compare = ["panflute (>=2.1.3,<2.2.0)", "mistune (>=2.0.2,<2.1.0)", "mistletoe (>=0.8.1,<0.9.0)", "markdown (>=3.3.6,<3.4.0)", "commonmark (>=0.9.1,<0.10.0)"]
+code_style = ["pre-commit (==2.6)"]
+benchmarking = ["pytest-benchmark (>=3.2,<4.0)", "pytest", "psutil"]
+
 [[package]]
 name = "markupsafe"
 version = "2.1.1"
@@ -1111,6 +1152,30 @@ category = "dev"
 optional = false
 python-versions = "*"
 
+[[package]]
+name = "mdit-py-plugins"
+version = "0.3.0"
+description = "Collection of plugins for markdown-it-py"
+category = "dev"
+optional = false
+python-versions = "~=3.6"
+
+[package.dependencies]
+markdown-it-py = ">=1.0.0,<3.0.0"
+
+[package.extras]
+testing = ["pytest-regressions", "pytest-cov", "pytest (>=3.6,<4)", "coverage"]
+rtd = ["sphinx-book-theme (>=0.1.0,<0.2.0)", "myst-parser (>=0.14.0,<0.15.0)"]
+code_style = ["pre-commit (==2.6)"]
+
+[[package]]
+name = "mdurl"
+version = "0.1.1"
+description = "Markdown URL utilities"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
 [[package]]
 name = "mistune"
 version = "0.8.4"
@@ -2594,7 +2659,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-
 [metadata]
 lock-version = "1.1"
 python-versions = ">=3.7.1,<3.11"
-content-hash = "b17f89986d8e70f5b9071587cd3ac4a5c50892ed03e1dd0b0e2d47bf1b01b7dc"
+content-hash = "f108fb4eed122499a7bc3276b92a4dbb6d43c7bca4f71cf3723910b1cf881c07"
 
 [metadata.files]
 absl-py = []
@@ -2671,6 +2736,7 @@ jupyter-console = []
 jupyter-core = []
 jupyterlab-pygments = []
 jupyterlab-widgets = []
+jupytext = []
 keras = []
 keras-preprocessing = []
 keras-tuner = []
@@ -2679,10 +2745,13 @@ leidenalg = []
 libclang = []
 locket = []
 markdown = []
+markdown-it-py = []
 markupsafe = []
 matplotlib = []
 matplotlib-inline = []
 mccabe = []
+mdit-py-plugins = []
+mdurl = []
 mistune = []
 more-itertools = []
 msgpack = []
diff --git a/pyproject.toml b/pyproject.toml
index 471287cf525a9a28d29dbecdcbc51faff8c3bc93..0a9036d6eb4cba5fa2147d2974b5143c118390b8 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -44,6 +44,7 @@ flake8 = "^4.0.1"
 pyright = "^1.1.258"
 pre-commit = "^2.20.0"
 data-science-types = "^0.2.23"
+jupytext = "^1.14.1"
 
 [build-system]
 requires = ["setuptools", "poetry-core>=1.0.0"]