diff --git a/doc/architecture/overall_pipeline.md b/doc/architecture/overall_pipeline.md
new file mode 100644
index 0000000..4fbc1e8
--- /dev/null
+++ b/doc/architecture/overall_pipeline.md
@@ -0,0 +1,110 @@
+Draft
+
+
+
+High-level geometry pipeline
+The following diagram sketches the planned high-level geometry pipeline for ConformalLab++. It shows how different input types are funneled through adapter layers into a universal half-edge mesh representation, processed by the core, and then exported or visualized.
+
+text
+graph TD
+ A["INPUT SOURCES"]
+ A1["Explicit
(OBJ, PLY, STL)"]
+ A2["Implicit
(SDF, Formulas)"]
+ A3["Parametric
(NURBS, Curves)"]
+ A4["Procedural
(Noise, L-Sys)"]
+
+ A --> A1
+ A --> A2
+ A --> A3
+ A --> A4
+
+ A1 --> ADAPTER1["Adapter Layer"]
+ A2 --> ADAPTER1
+ A3 --> ADAPTER1
+ A4 --> ADAPTER1
+
+ ADAPTER1 <--> UNIVERSAL["UNIVERSAL REPRESENTATION FORM
(HalfEdge Mesh Interface)
- Vertices
- Halfedges
- Faces"]
+
+ ADAPTER1 <--> EXT["EXTERNAL LIBRARIES
(Plugin System)
- CGAL
- OpenMesh
- PyNoise
- PointCloud Lib"]
+
+ EXT <--> UNIVERSAL
+
+ UNIVERSAL --> PROCESSING["PROCESSING CORE"]
+
+ PROCESSING --> OPT["Optimization
- Decimation
- Denoising
- Remeshing"]
+ PROCESSING --> ALGO["Algorithmic
- Boolean Ops
- Smoothing
- Hole Filling"]
+ PROCESSING --> OTHER["Other
- Custom Algos
- Transforms
- Filters"]
+
+ OPT --> UNIVERSAL
+ ALGO --> UNIVERSAL
+ OTHER --> UNIVERSAL
+
+ UNIVERSAL --> EXPORT_ADAPTER["Export Adapter Layer"]
+
+ EXPORT_ADAPTER --> EXPORT["Export Formats
- OBJ
- PLY
- STL
- Custom"]
+ EXPORT_ADAPTER --> VIZ["Visualization
- OpenGL
- QT
- Screenshot"]
+
+ style UNIVERSAL fill:#90EE90,stroke:#000,stroke-width:3px,color:#000
+ style PROCESSING fill:#87CEEB,stroke:#000,stroke-width:2px,color:#000
+ style EXT fill:#DDA0DD,stroke:#000,stroke-width:2px,color:#000
+ style ADAPTER1 fill:#FFB347,stroke:#000,stroke-width:2px,color:#000
+ style EXPORT_ADAPTER fill:#FFB347,stroke:#000,stroke-width:2px,color:#000
+All external inputs (file-based, implicit, parametric, procedural) are first converted by an adapter layer into a single universal half-edge mesh interface, which is the canonical internal representation used by the preprocessing and processing stages. The processing core operates on this universal representation and can use external libraries via a plugin-like extension layer, while results are passed through an export adapter to file formats or visualization frontends.
+
+
+Three-stage processing pipeline
+The geometry processing pipeline in ConformalLab++ is structured into three main stages, all operating on the same universal mesh representation.
+
+Preprocessing
+
+Converts all external inputs (files, analytic models, procedural sources) into the canonical half-edge mesh form.
+
+Performs optional cleaning and normalization (e.g. fixing degeneracies, rescaling, enforcing orientation).
+
+Guarantees that downstream stages see a well-formed, consistent mesh (or fail early with clear errors).
+
+Processing (core processing units)
+
+Runs one or more core processing units in sequence on the canonical mesh.
+
+Each unit takes a mesh of the same type as input and produces a mesh of the same type as output (possibly with enriched attributes).
+
+Examples: remeshing, conformal parameterization, smoothing, boolean operations, experiment-specific transforms.
+
+Postprocessing
+
+Adapts the processed mesh for external consumption: export to file formats, visualization, analysis tools.
+
+May attach or convert attribute data (e.g. colors, scalar fields, experiment results) into a format suitable for rendering or further tools.
+
+Does not change the core topology or semantics of the processed mesh, only its representation for the outside world.
+
+This structure makes it easy to reason about where data enters, is modified, and leaves the system, and keeps experimental algorithms clearly separated from IO concerns.
+
+Role of the universal mesh representation
+The universal mesh representation (a half-edge mesh interface) is the shared contract between all pipeline stages.
+
+Single input/output type
+Every core processing unit exposes the same function shape conceptually:
+UniversalMesh → UniversalMesh.
+This allows units to be chained in arbitrary order as long as their preconditions on the mesh are satisfied.
+
+Local, topology-aware access
+The half-edge structure encodes vertices, halfedges, faces, and their adjacency relations, which is essential for typical geometry operations (e.g. local neighborhood queries, traversal, edge flips).
+
+Algorithms do not need to know where the mesh came from (file vs. analytic vs. procedural); they only rely on this uniform interface.
+
+Extensibility via attributes
+The universal mesh may carry extensible per-vertex, per-edge, and per-face attributes (e.g. UVs, curvature, experimental scalar fields).
+Core units can read and write these attributes while still conforming to the same mesh type, enabling complex pipelines without changing the central data structure.
+
+Because all processing units speak the same “mesh language”, you can build pipelines like:
+
+text
+Preprocessing
+ -> RemeshingUnit
+ -> ConformalMapUnit
+ -> ExperimentSpecificFilter
+ -> Export/Postprocessing
+without changing the basic function signature or the surrounding infrastructure, only by reordering or swapping units.
+