This is definitely a scenario for regex, and I love a good regex challenge. I independently tried a few ideas that didn’t work well. Here’s what I came up with following consultation with ChatGPT.

Regex pattern:
((?:[^\n]*\n){2}[^\n]*)\n

Replace by:
$1§§§

@rccanlas, note that the technique of first replacing and then splitting, as other posters described, accounts for the possibility that the total number of paragraphs is not a multiple of 3. You could instead try Bubble’s :extract with Regex operator, but the regex expression would be more complicated, or perhaps impossible, to allow for the final extracted item being just 1 or 2 paragraphs instead of 3.

I wasn’t aware that, as noted by @ri_scc_94 and ChatGPT, Bubble’s :find & replace operator’s option to use a regex pattern supports regex, such as capture group references, in the “Replace by” text. @fede.bubble, that’s worth explaining in the operator’s entry in Bubble reference documents, which doesn’t even mention the operator’s regex option at all.