Skip to content

Social Posts for Listings

Every listing deserves more than one caption. Instagram readers want a hook; LinkedIn readers want analysis; Facebook readers want conversation; X / TikTok / Threads readers want a one-liner. My Agent Platform’s Social Posts tool drafts all four variants from one prompt, in one BYOK LiteLLM call — same factual claims, four voices — and reviews them through a Fair Housing scanner before you publish a word.

Tool #07 turns a listing (or a free-form prompt) into four caption variants in a single shot:

  • Instagram caption — hook in the first 125 characters, emoji-friendly body, 5-10 hashtags as a closing block.
  • Facebook caption — 40-80 words, conversational, 1-2 inline hashtags max.
  • LinkedIn caption — 200-600 words with analytical framing, 3-5 inline hashtags, plus your saved Voice Template prepended verbatim if you have one configured.
  • Generic caption — 280 characters or less. Used for X / TikTok / Pinterest / Threads / YouTube / Bluesky in v1.

One LLM call, four caption strings. The same hashtag suggester runs across every platform, drawing from a curated NAR-aligned seed catalog so suggestions are Fair Housing-clean before they ever hit your draft.

The simplest flow is the dashboard:

  1. Open Dashboard → Social Posts.
  2. Click New Post.
  3. Pick a listing from your Active Listings DB (or skip and write a free-form prompt).
  4. Choose the post type — just_listed, open_house, price_change, under_contract, sold, or generic.
  5. Pick the platforms (Instagram, Facebook, LinkedIn are first-class; the rest get the generic variant).
  6. Add any free-form context (open-house times, what to highlight) and click Generate.
  7. Review all four variants side-by-side, with hashtag suggestions per platform.
  8. Either click Copy to paste the captions into your tools of choice, or click Publish to send through PostForMe.

You can also drive the whole flow through chat — your agent will call re_social_post_create with the right listing_id and post_type, surface the four variants, then either wait for your sign-off or publish on auto-approve depending on your trust settings.

If a draft isn’t quite right, hit Regenerate (free — same listing, fresh LLM call). If it’s offensive enough to land you in court, the FH scanner will refuse to publish it without an explicit override (audit-logged, every time).

Drafting is unmetered. Publishing consumes 1 social-post credit per platform from the existing shared social-post allowance pool — the same ledger that powers the platform’s generic social tool. Publishing to Instagram + Facebook + LinkedIn at once costs 3 credits, deducted only after PostForMe confirms each platform.

  • Each paid tier ships a monthly social-post allowance (Standard: 150/month; Pro: 300/month).
  • Out of allowance? Buy a credit pack from Settings → Integrations → Social post credits. Packs never expire and are spent only after the monthly bucket runs dry.
  • If PostForMe fails on one platform but succeeds on another, only the successful platform consumes a credit. No double-charging on partial failures.
  • Regenerate is always free — it re-runs the LLM but doesn’t call PostForMe. Use it freely to iterate.

Every draft runs through the Fair Housing scanner — over the concatenated text of all four caption variants in one pass, against the same NAR-derived phrase catalog that powers the Listing Description tool.

  • Soft warnings are advisory. The dashboard surfaces them with a yellow banner; publishing still works without an override. Use them as nudges to tighten your wording.
  • Hard blocks stop publish dead. The button reads “Override required” and clicking through writes an re_social_posts.published audit log row with allow_overrides=True and the full FH findings JSON. You and the platform admin both have the receipts.

The hashtag suggester pulls only from FH-clean seeds — but the LLM can still generate phrasing in the captions themselves that trips the scanner (“perfect for families”, “great for kids”, “exclusive neighborhood”). The combined-text scan catches both.

A few things we deliberately deferred:

  • No per-platform image generation. v1 reuses the listing’s hero photo (auto-attached when you pick a listing) plus any URLs you supply. True image generation will land in v2.
  • media_paths accepts workspace files. When your agent passes file paths from its workspace, the bridge uploads them automatically (catbox.moe / 0x0.st) and merges the resulting public URLs into the post. Upload failures don’t block draft creation.
  • media_urls accepts existing public URLs directly — Cloudinary, S3, Imgur, anywhere PostForMe can reach.
  • X / TikTok / Pinterest / Threads / YouTube / Bluesky all receive the generic caption variant in v1 — same body, no platform-specific tone. We picked this over running 9 separate LLM calls per draft.

The hashtag suggester ships ~80 NAR-aligned phrases across five buckets — realestate_generic, compliance_safe, listing_type, lifestyle, location. Per-platform counts default to 8 (IG), 4 (LinkedIn), 2 (FB), 2 (generic).

Suggestions are advisory — the LLM can override or augment them, and you can edit the final caption to add or drop tags. The suggester just tries to pick a base-rate of safe, listing-relevant tags so you don’t have to start from scratch. Curated FH-clean at insert time so a #familyfriendly or #perfectfor will never sneak in via the seed catalog.

If you want full control, the catalog is also queryable via GET /api/agents/{agent_id}/social-posts/hashtag-seeds — useful for advanced agents that want to score their own picks.

  • Active Listings DB — the source of listing_id for every just-listed / open-house / price-change post.
  • Listing Description Generator — same Fair Housing seed catalog, same Voice Profile, designed to produce the long-form copy that lives on the MLS / Zillow / your site, while Tool #07 produces the short-form social copy for the same property.