diff --git a/docs/conception/clean_ais_data.md b/docs/conception/clean_ais_data.md
new file mode 100644
index 00000000..dc614210
--- /dev/null
+++ b/docs/conception/clean_ais_data.md
@@ -0,0 +1,18 @@
+
+# Logique de traitement des nouvelles données AIS et création des positions
+
+## Périodicité
+* À chaque call API (toutes les 15 min)
+
+## Description du processus
+
+Ne traiter que les données Spire qui ont été mises à jour : spire_ais_data.position_update_timestamp > position_updates.point_in_time
+
+```mermaid
+graph LR;
+ ISTART[START
**PROCESS
NEW SPIRE AIS DATA**]-->I000
+ I000[New spire ais data
stg_spire_data]-->I001[Select essentiel info]
+ I001-->I002[Drop duplicates]
+ I002-->I003[Save positions]
+ I003-->I004[Update
position_updates]
+```
diff --git a/docs/conception/segments_excursions_creation.md b/docs/conception/segments_excursions_creation.md
new file mode 100644
index 00000000..d21d0184
--- /dev/null
+++ b/docs/conception/segments_excursions_creation.md
@@ -0,0 +1,59 @@
+# Logique de traitement des positions pour la création des segments, des excursions et calcul des métriques
+
+**ATTENTION : dans cette logique, on ne prend pas en compte un recalcul des excursions sur la base de `dim_vessel_source_mapping`.
+À modifier par la suite en se basant sur [#428](https://github.com/dataforgoodfr/12_bloom/pulls/428)**
+
+## Périodicité
+* À chaque call API (toutes les 15 min)
+* pour recalcul des trajectoires :
+ - par `vessel_id`
+ - par batch temporel
+
+## Description du processus
+
+### Etape 1 : association des positions aux excursions
+Positions créées après task_executions.point_in_time
+
+```mermaid
+graph LR;
+ ISTART[START
**PROCESS
NEW VESSEL POSITION**]-->I000
+ I000[New vessel position
stg_vessel_position]-->I001{If stg_vessel_position
in port}
+ I001-->|Yes|I002{If last excursion
is closed}
+ I002-->|Yes|I004[Update
last_vessel_position_in_port]
+ I002-->|No|I005[Update
last excursion]
+ I001-->|No|I006{If last excursion
is closed}
+ I007[Associate excursion id
to stg_vessel_position]
+ I005-->I007
+ I006-->|No|I007
+ I006-->|Yes|I008[Create new excursion]-->I010[Associate
excursion id
to last_vessel_position_in_port]-->I009[Add
last_vessel_position_in_port
to batch stg_vessel_positions]-->I007
+ I007-->I011[Add stg_vessel_position
to batch stg_vessel_positions]
+```
+
+### Etape 2 : création des segments et mise à jour des excursions
+
+Propriétés d'un segment à calculer : distance, duration, average_speed, in_amp_zone, in_zone_with_no_fishing_rights, in_territorial_waters
+
+ATTENTION : les règles de pêche dans une zone sont dépendantes du pavillon du navire. Toutefois, un navire peut changer de pavillon. Ses droits de pêche par zone sont donc ancrés dans le temps.
+Pour l'instant, nous utilisons le `dim_vessel.country_iso3` mais il faudra réflechir à changer d'angle pour garder en mémoire à quels pays appartenait un navire et quand (proposition dans [#428](https://github.com/dataforgoodfr/12_bloom/pulls/428))
+
+```mermaid
+graph TD;
+ ISTART[START
**PROCESS
BATCH VESSEL POSITIONS**]-->I000
+ I000[New vessel positions
stg_vessel_positions]-->I002
+ I001[Add end position of
last vessel segments]-->I002
+ I002[Batch vessel positions]
+ I002-->I016[Sort positions
by increasing timestamp
and vessel_id]
+ I016-->I003[Group stg_vessel_positions
by excursion id]
+ I003-->I004[For each group]
+ I004-->I005{If size group > 1}
+ I005-->|Yes|I006[Convert to segments]
+ I005-->|No|I007[Duplicate position
with lag -1s]-->I006
+ I006-->I008[Concatenate segments]
+ I008-->I014[Compute segments
variables]
+ I014-->I009[Create segments and
segment-zone relations]
+ I009-->I013[Calculate metrics*]
+ I013-->I010[Update last segments]
+ I010-->I011[Update excursions]
+ I011-->I015[Update task_executions]
+```
+*processus indépendant de la création des segments et des excursions