Your Arabic Carousel Looks Filled In, Not Designed. Here Is the Structural Reason.
If you have ever bought a carousel template pack for Arabic content, you know the exact moment it fails. The preview looked beautiful. Then you typed your own sentence: the headline slid past the margin, one orphaned word landed alone on the last line, the English name of the tool you were writing about jumped to the wrong side of the sentence, and the eight slides ended at eight different heights.
You probably assumed you needed a better eye. The failure is structural. Almost every Arabic template on sale was designed left to right, in English, and then mirrored, and mirroring flips alignment and nothing else. It cannot anchor a Latin run inside an Arabic sentence, stop a paragraph from stranding its last word, shrink a headline that runs longer than the designer sample, or make eight slides resolve to the same baseline. Those four failures are the whole difference between designed and filled in, and a reader feels all four even when they cannot name one.
Marsam is an Arabic-first carousel system built right to left from the first line of code. It runs inside the AI agent you already use, whether that is Claude Code, Cowork, Codex, or anything else that can read files and run node. You open the folder, say "I just installed Marsam. Please onboard me.", and five minutes later your brand is set and your first carousel is rendered as eight 1080x1350 PNGs. After that, "make a carousel about the new Instagram update" is the entire workflow. You never open a file. You never type a command.
Three ideas carry it. Layout is computed rather than drawn: type steps down until it fits its column, a stranded last word is pulled back before you ever see it, blocks are measured and distributed so every page resolves on a shared bottom edge, and every Latin run is isolated automatically. One file is a brand: state three colours and a handle, and the system derives the rest in OKLab, then audits nine colour pairings for contrast before you render a single slide. And the kit checks itself: ten measured checks run on the rendered pixels, backed by a self-test that renders a deliberately broken fixture with the preventions switched off and fails unless every check still fires.
Four templates, chosen by lane rather than mood: Dispatch for news that arrived, Catalog for evergreen explainers, Broadcast for busy stories full of numbers, Plate for posts an image carries. Five Arabic font families ship with it, all openly licensed for commercial use. Zero npm packages, no account, no subscription, and nothing to pay to run it: three of the four templates use no imagery at all, and the fourth takes any photo you already own.
The licence is perpetual and built for working creators: unlimited carousels for yourself and for paying clients, unlimited brand files, and every right to sell what you make. Adding a client brand is a five minute conversation, and all four templates re-skin from that one file.
Get Marsam: https://www.aiwithmo.com/shop/marsam
Follow for more:
Course Registration: https://halaqa.app/enrollment?course=start-with-ai
Mirrored Templates Are Why Arabic Carousels Break on Your Sentence
Almost every Arabic template on sale was designed left to right, in English, and then mirrored. Mirroring flips alignment. That is the entire operation, and it explains all four failures you have already met. It cannot keep a Latin product name anchored inside an Arabic sentence, because that requires isolating the run at author time and again at render time, so the name jumps as the line reflows. It cannot stop a paragraph from stranding one lonely word on its final line, because that requires measuring the rendered line and pulling the word back. It cannot shrink a headline that runs long, because the size was drawn by a designer for one specific sentence rather than computed for yours, so your text slides past the margin instead. And it cannot make eight slides end at the same vertical point, because nothing in the file knows where the content ends, so the deck reads as eight separate pages rather than one designed object. Those four are precisely the difference between designed and filled in, and a reader feels every one of them even when they cannot name a single one. Fixing them is not a polish pass. It requires a system built right to left from the first line of code, which is why Marsam exists and why a mirror was never going to be enough.
Layout Is Computed, Not Drawn, So Your Sentence Can Be Any Length
The premise of Marsam is that layout is not a thing you do. It is a thing the system calculates, on every render, from the copy you actually wrote. When your headline runs longer than expected, the type steps down through a declared size range until it fits its column and its line budget. It cannot overflow, because overflow is not one of the available outcomes, and when even the floor does not fit you are told to shorten the sentence rather than handed something broken. When a paragraph is about to strand its final word, the engine pulls it back with a non-breaking space before you ever see the page. When a slide carries several blocks, they are measured and distributed inside a declared band, so every page resolves against a shared bottom edge with an elastic gap that expands to fill and compresses when the copy runs long. That is why eight slides end where they should. And every Latin run is isolated automatically, which is the specific reason ChatGPT, Notion, or your own handle stays exactly where you put it inside an Arabic sentence. None of this is configuration you tune. Underneath it sits a full Arabic typography reference that your agent reads at the start of every session, so the judgment calls that make Arabic type feel right are encoded rather than left to chance. You get the output of a typographer who knows Arabic, without hiring one and without becoming one.
One File Is a Brand, Which Is What Turns This Into Client Work
Everything about how your carousels look lives in one small file. You state three colours (ink, accent, paper) and a handle, and the system derives the rest: the deep end of every gradient, four panel surfaces, the tint ramps, the accent darkened until small type reads on light paper, the same accent lifted until it reads on dark ink, down to the colours of the drawn marks. The derivations happen in OKLab rather than RGB, which is why a darkened teal stays teal instead of drifting to muddy green. Then it audits itself: nine colour pairings are measured against the contrast each one actually needs, and any shortfall is reported before you render a single slide, so an unreadable palette is caught at setup rather than in your feed. Change that one file and all four templates re-skin. Now read that as a business model rather than a feature. The licence permits unlimited brand files and explicitly covers producing carousels for paying clients, with full rights to sell what you make. Add a brand for my client Sara is a five minute conversation, and from that point one sentence produces finished, on-brand, quality-checked slides in her palette instead of yours. For a freelancer or a small agency serving Arabic businesses, this is not a template purchase. It is a production capability you can resell every month.
It Checks Its Own Work, and Proves the Checker Still Works
The rule inside Marsam is absolute: no carousel reaches you until it has passed quality control clean. Ten measured checks run on the rendered pixels rather than the source, which matters because the source can look perfect and still render wrong. They catch text starting or ending outside the margin, content above or below the safe area, two lines of a heading colliding, blocks overlapping, a page ending in dead air, a stranded last word, a duplicated handle or page number, an un-isolated Latin run, prose set so small it fails the phone viewing condition, and copy so long the type hit its floor and still does not fit. Every one of those exists because that exact defect shipped once. Here is the part that matters more. Several of those defects are now impossible while the layout passes are running, which is the entire point of the layout passes, and that creates a trap: a checker that never fires looks identical to a checker that is broken. So the kit ships a self-test that renders a deliberately broken fixture with the preventions switched off, and fails unless every check still fires. A checker nobody can verify is a checker nobody should trust. It also ships an inspect command that crops every wrapped heading and lays them out at double size with nothing measured and no verdict given, purely to be looked at, because the line-collision check was only added after that defect slipped past the others and was caught by a human zooming in. Clean checks plus a look is the standard here. Either one alone has already failed once.
How Arabic Gets Inside a Generated Image Without a Model Ever Spelling It
One lane deserves its own explanation, because it solves a problem most people have given up on. Ask any current image model to render Arabic and it fails in a specific, documented way: the letters lose their contextual shaping, the joins break, and the word reads as noise to anyone who can actually read it. The safe response, and the one nearly every tool takes, is to avoid generated imagery entirely and ship flat colour panels forever. The Plate lane does something else. It renders the slide first, with the real Arabic headline set in real type, through the same engine and the same check battery as everything else. Only then does it hand that already-correct slide to an image-editing model as a reference, so the model paints a scene around type that already exists instead of inventing letterforms of its own. The Arabic in the finished image was never generated. It was rendered, then photographed into the scene. That separation is why the output stops looking like a template with the words swapped, and it is the combination nobody else ships: correctly shaped Arabic, a brand identity enforced in code, and an imagery lane that never has to spell your language. Be precise about the cost, though, because it is smaller than people assume. Three of the four templates use no imagery at all, and the fourth accepts any photo you already own. Generating one is optional, runs about two US cents through the image provider, and your assistant quotes the price before every single generation. You can run Marsam for years without spending a cent on it.
Prompt
# MARSAM - THE OPERATING CARD # Everything you say to your agent. You never type a command yourself. # ─── FIRST RUN (once, about five minutes) ─── # Open the Marsam folder with Claude Code, Cowork, Codex, or any agent # that can read files and run node. Then say: # # "I just installed Marsam. Please onboard me." # # It asks for your handle, your three brand colours and your niche, # writes your brand file, runs the contrast audit, and renders a first # carousel so you can see the whole loop before you trust it. # ─── THE DAILY LOOP ─── # "Make a carousel about <topic>." # "That headline is too long." -> rewrites, re-renders, re-checks # "Make the accent warmer." -> edits the brand file, all four # templates follow # "Is this ready to post?" -> runs the checker, answers straight # "Add a brand for my client Sara." -> new brand file, five minutes # "Generate a plate for slide 3." -> quotes the cost first, then runs # ─── PICKING THE LANE (say the kind of post, not the mood) ─── # Dispatch · البريد المعرفي something ARRIVED: a launch, an update, a change # Catalog · الفهرس evergreen: still true next year # Broadcast · النشرة busy: numbers, comparisons, moving parts # Plate · لوحة an image carries the story, not a diagram # Two templates that differ only in colour read as one template in two # moods. These four differ in structure, so they never do. # ─── WHAT THE CHECKER LOOKS FOR (ten checks, on rendered pixels) ─── # text starting or ending outside the margin # content above or below the safe area # two lines of a heading colliding # blocks overlapping # a page ending in dead air # a stranded last word # a duplicated handle or page number # an un-isolated Latin run # prose below the phone readability floor # copy so long the type hit its floor and still does not fit # Nothing reaches you until it passes clean. Then look at it anyway: # "Run marsam inspect." -> crops every wrapped heading at 2x, no verdict # Clean checks plus a look is the standard. Either alone has failed once. # ─── WHAT IT COSTS TO RUN ─── # Nothing. Zero npm packages, no account, no subscription. # Three of the four templates use no imagery at all; the fourth takes any # photo you already own. Generating an image is optional, about $0.02, # paid to the image provider, and quoted to you before every generation. # ─── WHAT IT NEEDS ─── # Node 22+ and any Chrome, Chromium, Edge or Brave you already have. # Five Arabic families ship inside: Almarai, Tajawal, Cairo, Amiri, Reem Kufi. # Get it: https://www.aiwithmo.com/shop/marsam