diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
new file mode 100644
index 0000000..cf505cf
--- /dev/null
+++ b/ARCHITECTURE.md
@@ -0,0 +1,76 @@
+# General workflow
+
+```mermaid
+sequenceDiagram
+ actor User
+ participant repo as GitHub Repo
+ participant GH as GitHub Backend
+ participant App as Application
+ User->>repo: Creates/modifies
issue or comments
+ repo->>GH: Notifies backend
+ GH->>App: Sends Webhook
+ App->>App: Validates the webhook hash
+ App->>App: Validates webhook's trigger
+ App->>repo: Reads ".github/.jira_sync_config.yaml" file
+ App->>Jira: Searches for existing Jira issues
+ Jira->>App: Provides list of existing issues if any
+ App->>Jira: Creates/updates Jira issue
+ App->>repo: (Optional) Adds a comment on the Issue
+ App->>GH: Returns web response
+
+```
+
+# Issue created from template (with labels)
+
+This diagram illustrates a corner case scenario when issue is created from GitHub issue template that contains Labels.
+In this case GitHub sends two webhooks in parallel that causes issues in the asynchronous (stateless) service.
+
+```mermaid
+sequenceDiagram
+ actor User
+ participant repo as GitHub Repo
+ participant GH as GitHub Backend
+ participant App1 as Application (Unit 1)
+ participant App2 as Application (Unit 2)
+ User->>repo: Creates an issue with a label
applied directly from the template
+ repo->>GH: Notifies backend
+ par
+ GH->>App1: Sends Webhook (issue labeled)
+ GH->>App2: Sends Webhook (issue opened)
+ end
+
+ par
+ App1->>App1: Validates the webhook hash
+ App1->>App1: Validates webhook's trigger
+ App2->>App2: Validates the webhook hash
+ App2->>App2: Validates webhook's trigger
+ App1->>repo: Reads ".github/.jira_sync_config.yaml" file
+ App2->>repo: Reads ".github/.jira_sync_config.yaml" file
+ end
+
+ par
+ App1->>Jira: Searches for existing Jira issues
+ App2->>Jira: Searches for existing Jira issues
+ end
+
+ par
+ Jira->>App1: Returns None, as there is no Jira issue
+ Jira->>App2: Returns None, as there is no Jira issue
+ end
+
+ par
+ App1->>Jira: Creates/updates Jira issue
+ App2->>Jira: Creates/updates Jira issue
+ end
+
+ par
+ App1->>repo: (Optional) Adds a comment on the Issue
+ App2->>repo: (Optional) Adds a comment on the Issue
+ end
+
+ par
+ App1->>GH: Returns web response
+ App2->>GH: Returns web response
+ end
+
+```
\ No newline at end of file