How the work actually flows
It branches. Exactly one path is taken.
Pattern: Exclusive Choice (4) · Simple Merge (5)
flowchart TD
trig>"customer sends Messenger message"]:::trig
s0["detect message type"]:::task
s1["AI reads and interprets message"]:::svc
s2["AI generates reply"]:::svc
s3["send reply on Messenger"]:::task
trig --> s0
s1 --> s2
s2 --> s3
gx{"× is message text image or voice"}:::gate
s0 --> gx
p00["read text directly"]:::task
gx -->|"text message"| p00
p10["interpret photo content"]:::task
gx -->|"image message"| p10
p20["transcribe voice message"]:::task
gx -->|"voice note"| p20
jn{"○ continue to AI reply"}:::gate
p00 --> jn
p10 --> jn
p20 --> jn
jn --> s1
out[/"relevant reply sent instantly"/]:::out
pay{{"customers answered any time of day"}}:::pay
s3 --> out
out --> pay
classDef task fill:#e7f6fe,stroke:#34b8f0,color:#2c2a29
classDef svc fill:#f6f8fa,stroke:#7c8795,color:#2c2a29
classDef mi fill:#e7f6fe,stroke:#0079a8,color:#2c2a29,stroke-width:2px
classDef human fill:#fff,stroke:#0079a8,color:#0079a8
classDef store fill:#f6f8fa,stroke:#0079a8,color:#2c2a29
classDef trig fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold
classDef trigtime fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold
classDef trigdata fill:#8ad4f5,stroke:#0079a8,color:#06314c,font-weight:bold
classDef gate fill:#fff,stroke:#e8a23d,color:#6b4708,font-weight:bold
classDef out fill:#1f9d6b,stroke:#167a53,color:#fff,font-weight:bold
classDef pay fill:#06314c,stroke:#021f33,color:#fff
Starts itA stepAn outside serviceOne path onlyPaths rejoinResultPayoff