Today we're rolling out PostRoute v2.4 — the biggest update since launch. AI captions that actually sound like you, a routing rules engine that removes the manual checklist between idea and shipped post, and a unified inbox that turns ten platform notification streams into one quiet timeline. Here's what's new, what we changed in our architecture to support it, and why we made the trade-offs we did.
AI captions, grounded in your voice
Most AI writing tools sound like AI. We tested Buffer's AI Assistant, Hootsuite's OwlyWriter, and three smaller competitors during the design phase, and the same problem kept surfacing: the captions read like a stranger wrote them. They were grammatically fine and topically relevant, but they had the cadence of a press release. For a tool that lives inside someone's daily content workflow, "technically correct" is not enough. The drafts had to feel like the person whose timeline they'd appear on.
So we built our captioning on top of a brand voice profile — a small JSON document the operator trains once and reuses forever. The profile has three parts: five to ten reference posts the user wrote themselves and considers representative, tone preferences on a handful of axes (formal/casual, hype/measured, first-person/brand-voice), and vocabulary preferences (words the brand favors and words it avoids). At generation time we feed all three into the prompt as system context. The model produces variants in seconds, and they read like the operator wrote them — because they're anchored to ten posts the operator already wrote.
You can generate variants per channel, tune length and emphasis with a single slider, and translate across 24 languages without leaving the composer. Translation specifically respects the brand voice profile in the target language — a "casual + measured + first-person" English voice maps to the closest equivalent register in Spanish, German, or Japanese, rather than producing the model's default machine-translation tone.
"We're not trying to replace your voice. We're trying to remove the 30 minutes between a thought and a published post."
The Starter plan ships with 50 captions per month — enough for a solo creator who composes a few posts a day. Studio and Agency plans get unlimited generation, plus shared brand voice profiles per workspace so an agency can switch between client voices with a single click. We also added an "explain why" view: hover the generated caption and you'll see which preferences and reference posts shaped it, which makes it easier to tune the profile when the output drifts.
Smarter routing rules
Routing used to be a checklist. Open the composer, tick the channels you want, fix the per-channel character limits manually, decide whether to add a teaser thread on X for your LinkedIn long-form, copy-paste the link into the composer because the autoformatter doesn't know about your tracking conventions. By the time you'd finished, you'd burned the 30 minutes that the AI captions just saved you. So in v2.4 routing is a small declarative language. You write rules once, they run on every post.
The rules engine handles three jobs that used to live in your head: per-channel formatting (truncate, append a thread continuation, swap "@handle" syntax to a platform's mention format), conditional routing (publish here only when this is true), and derivative posts (when the main post goes to LinkedIn, also send a one-tweet teaser to X with a back-link). The example below is taken verbatim from a content team's actual production config — the rule that fires for any longform post over the platform character cap:
and tag.includes("longform")
route to [linkedin, substack]
+ teaser to [x, threads]
The engine ships with a small but real type system: post.length is an integer, tag is a string array, comparisons are typed, and unknown identifiers fail at save time rather than at publish time. We made that call deliberately — a routing rule that fails silently in production at 9pm because someone typo'd a tag name is the worst possible failure mode for a publishing tool. Visual rule editing is the default UI; power users can drop into the raw text mode and edit the rules directly. Both round-trip cleanly through Git if your team versions content infrastructure.
Every rule fire is auditable. The post detail view now shows which rules ran, which channels each routed to, and which channels were intentionally skipped — with the rule name beside each decision. When a client asks "why did this go to LinkedIn but not X," the answer is one click away.
A calmer inbox
Ten connected channels means ten notification streams. Each one with its own conventions, its own reply formats, its own escalation patterns. The inbox in v2.3 already aggregated replies, mentions, and DMs from every channel — but it was still a wall of unread badges. v2.4 turns the wall into a triage queue.
Three changes drove the calm. First, thread assignment: any team member with permission can claim or assign an inbox thread, and only the assignee gets follow-up notifications. The 200-mention pile-up after a viral tweet stops being everyone's problem. Second, saved replies: the seven most common reply patterns your brand uses become one-keystroke shortcuts, with brand-voice variants per channel. Third, per-channel SLAs: set a target response time per platform (X DMs in 1 hour, LinkedIn comments in 24 hours, Bluesky replies "when you get to them"), and the inbox sorts by remaining SLA budget rather than by recency. Threads about to breach SLA float to the top automatically.
The clutter is gone; the signal stays. We're tracking median time-to-response across early access workspaces and seeing it drop substantially after the first week — likely because once the queue stops feeling overwhelming, replying becomes a 30-second task instead of a deferred one. Real numbers will land in our analytics digest at the end of the quarter.
What changed under the hood
A quick note for the engineers reading. v2.4 is the first release where the routing engine and the publish workers are decoupled processes. Previously a routing decision and the publish call were the same code path — which meant a slow LinkedIn API made a downstream X post wait. Now routing produces an immutable plan, the plan is persisted, and per-channel publish workers pick up their slice and run independently. One platform being slow no longer slows the others. Failures are isolated per channel, retries are exponential per platform, and the post detail view shows you the per-channel state in real time.
This refactor cost us about three weeks of engineering time and a one-day backfill of in-flight v2.3 posts to the new schema. The change unlocked everything else in this release — the routing rules engine, the per-channel SLAs, the per-channel audit log — because the routing decisions are now first-class objects rather than implicit side effects of the publish loop.
What's next
v2.4 is available today on Studio and Agency plans. Starter plans get AI captions with a 50/month allowance — enough to evaluate the brand-voice quality without committing. We're already working on v2.5: shared content templates per workspace, scheduled rule changes (so a Black Friday rule can activate at 00:00 UTC on Nov 28 and revert at 00:00 on Nov 30 without anyone editing the config), and a public API for teams that want to integrate PostRoute into their own publishing pipelines.
If you've been on the fence, this is the release where the value proposition stops being "schedule posts to multiple channels" and starts being "a publishing system you can actually trust to do what you said it should." Thanks for routing with us.
Maya leads product and writing at PostRoute. Before co-founding the company in 2026, she ran the content team at a B2B SaaS scaleup where she shipped daily across eight platforms — and built the prototypes for the routing engine described above as a weekend project. She writes most of PostRoute's product blog and most of the documentation; if it's wrong, that's her fault.
Reach out: [email protected]. Public posts at postroute.io/blog.