by PostPack (LX AI)
Length, CTA, and hashtag norms differ by channel. PostPack asks for platform + vibe before drafting five options.
I start with a short form where you paste your product description, choose a platform, and pick a vibe from a preset list. The form sends three fields to our backend: raw text, platform key, and vibe tag.
The backend trims whitespace, lowercases the platform key, and checks the vibe against an allowed set. If any field is missing we return a clear error asking you to fill it in.
We assemble a prompt that tells the language model exactly what we need. The prompt contains three parts: a system note that sets the role, a user note that repeats your product text, and a constraint block that lists the platform’s length limit, preferred hashtag count, and CTA style. The vibe tag is inserted as a style modifier (e.g., “witty”, “professional”, “energetic”).
The prompt goes to a fine‑tuned LLM hosted on a private endpoint. We request five completions with a temperature of 0.8 and a top‑p of 0.9 to get variety while staying on topic. Each completion is stopped after the model generates a newline or reaches 200 tokens, whichever comes first.
Each raw output is stripped of leading/trailing spaces, checked for profanity, and scanned for platform‑specific symbols. Hashtags are normalized to lower case and deduplicated. The final five strings are returned as JSON.
When the model returns an empty string we log the incident and ask the user to adjust the vibe or shorten the input. All requests are stored with a timestamp and an anonymized hash for later audit, complying with the guidelines from https://owasp.org/www-project-top-10-for-large-language-model-applications and the AI risk framework at https://www.nist.gov/itl/ai-risk-management-framework. No personal data is retained.
Every platform has its own unwritten grammar. Below is a table that shows the concrete limits we bake into the prompt.
| Platform | Max length (characters) | Hashtag norm | CTA placement |
|---|---|---|---|
| Twitter (X) | 220 | 1‑2 | End of line |
| 300 | 0‑3 | Mid‑sentence or end | |
| TikTok | 150 | 3‑5 | Start or end |
| 200 | 4‑8 | End of line | |
| 250 | 0‑2 | End of line |
The platform rewards brevity. We cap the output at 220 characters to leave room for a retweet comment. Hashtags are limited to two and placed at the very end so they do not interrupt the main message.
Professional tone is expected. We allow up to 300 characters, encourage a clear value proposition, and permit up to three hashtags that are usually industry tags. A call‑to‑action can sit after the first sentence or at the close.
Here the vibe is casual and trend‑driven. We keep the caption under 150 characters, encourage three to five hashtags that match the sound or challenge, and often place a CTA at the very start to catch scrollers.
Visual platforms tolerate longer copy. We target 200 characters, allow four to eight hashtags (mix of broad and niche), and usually put the CTA after the main line so the image remains the focus.
Community‑focused posts work best with a friendly tone. We limit to 250 characters, use zero to two hashtags (often for event tags), and place the CTA at the end to encourage comment.
Vibe tags are the shortcut that turns a generic prompt into a voice that feels native to the chosen channel. We maintain a curated list that maps each vibe to a set of style cues.
Every quarter we review the engagement data of generated captions. If a vibe shows low click‑through we either retire it or replace it with a new variant that better matches emerging language. This keeps the preset library fresh without needing constant user input.
Below is a step‑by‑step walkthrough of how a founder might use PostPack to launch a new feature announcement.
The founder pastes a two‑sentence description of the new feature, selects “LinkedIn” as the platform, and chooses the vibe “Professional”.
The server trims whitespace, lowercases the platform key to “linkedin”, and checks that “Professional” is in the allowed vibe set. All three fields are present so processing continues.
The system note tells the model to act as a seasoned B2B copywriter. The user note repeats the feature description verbatim. The constraint block adds: max length 300 characters, hashtag norm 0‑3, CTA allowed mid‑sentence or at end, and the style modifier “Professional”.
The prompt is sent to the private LLM endpoint. Five completions are sampled with temperature 0.8 and top‑p 0.9. Each generation stops at the first newline or after 200 tokens.
Each output is stripped, profanity filtered, and checked for LinkedIn‑specific tokens. Hashtags are lower‑cased and duplicates removed. The final five strings are packaged as JSON and returned to the UI.
The founder sees five options, picks the one that best matches the brand voice, and copies it into the LinkedIn composer. If none feel right they can adjust the vibe or tweak the input and run the tool again.
After posting, the founder tracks engagement. If the caption performs well they note the vibe‑platform pair as a winning combination for future similar announcements.
It is important to be clear about the limits of the tool so you set realistic expectations.
I keep a written checklist next to every release that touches this topic. The list is boring on purpose: name the owner, name the evidence artifact, and name the rollback. If a step cannot produce a file, a ticket, or a log line, it is not a step — it is a wish.
| Signal | What to record | Stop-ship? |
|---|---|---|
| Unexpected write or send | Tool name, args, identity | Yes until gated |
| Missing confirmation on destructive action | Call path and bypass | Yes |
| Untrusted text treated as instruction | Source surface and resulting action | Yes for agent reach |
| Scanner clean, judgment open | Deferred items + owner | Only if core path safe |
postpack helps with the measurable first pass. Architecture choices, legal sign-off, and customer-facing claims still need a human owner. Treat every checklist row as decision support, not a certificate.
When a prospect asks whether the product "covers everything," I answer with the boundary: automated checks catch known patterns; novel chains and policy judgment still need review. That honesty keeps support load down and keeps the blog aligned with what the product actually does.
If you need a second opinion, pair this write-up with the references below and with your own staging reproduction. Do not skip the reproduction step just because a model wrote a confident summary.
Yes. It is platform-aware, adjusting style and hashtags to the channel you choose.
Hashtags are included in each run, tuned to the platform and vibe.
The captions are copy-ready, so you can paste and publish.
Founders and creators posting consistently who want on-vibe captions without writing from scratch.
Want to try the product? PostPack
Generated 2026-09-17 · primary sources only · no fabricated traffic metrics