▲ 2 r/buildinpublic+1 crossposts

Rebuilt our content planner around accounts instead of platforms after a user found two of their three Instagram accounts were unreachable

A user mentioned their weekly content plan could only post to one of their three Instagram accounts. My first assumption was that they had set it up wrong.

They hadn't. The planner's data model selected a *platform* and then one account inside it. "Instagram" literally meant one Instagram. The other two accounts were unreachable and no setting could change that.

The rework: plans now target accounts, not platforms. Each connected account is its own channel with its own cadence and topics. Same-platform accounts can be grouped so one generation produces one post body that publishes to all of them, instead of burning a generation per account.

Two things I took from doing it.

The combine feature was modeled as a nullable group column on the channel record rather than widening the per-account assignment table. That assignment table has a required single-account foreign key and 19 consumers, while the post record downstream was already multi-account. Picking the model that was already shaped right kept the change to one migration.

I also found a real bug while investigating: the per-platform topic override was being applied plan-wide. Set a topic on one channel and every channel got it. It had been shipping wrong for a while with zero reports, so I now read "no bug reports" as "nobody has hit it in a way they could describe," not "it works."

This is my own product (XreplyAI, a social scheduler), so flagging that up front.

reddit.com
u/Moontrepreneur — 6 days ago

What's the one thing about your social posting tool that makes you put off opening it?

Not looking for recommendations, I'm curious about the friction.

For me it's rewriting the same post four times for four platforms. By the third one I've stopped caring whether it's good.

What's yours? Could be the scheduling UI, analytics you don't trust, the approval step, the fact that it logs you out constantly. I'm after the specific annoyance rather than a general "it's clunky."

And do you work around it, or just tolerate it?

reddit.com
u/Moontrepreneur — 8 days ago
▲ 0 r/rails+1 crossposts

Suspend, don't delete: the rollback rule that made our Rails production migration survivable

Moved a production Rails API from Render to Railway recently. Web service, Solid Queue worker, Postgres 18. The single most useful rule we followed, and the one I'd hand to anyone doing the same:

**Suspend the old services. Do not delete them.**

Suspending costs nothing and it is the entire rollback plan. On cutover night we suspended the old worker, then the old web service, and left both sitting there. If the restore had gone badly we could have brought them back in seconds.

**The part people get wrong is when that plan expires.**

The rollback is valid right up until the new database takes its first write. After that it is void, and restarting the old host actively makes things worse, because now writes are split across two databases and you have to reconcile them by hand. From the first write onward you roll forward and you fix problems where the traffic already is.

Knowing exactly where that line sits is what lets you move fast before it and stop hesitating after it.

A few other things worth stealing:

**Migrate your OAuth config weeks before your infrastructure.** A cutover that touches auth config is a cutover that breaks. We normalized every redirect URI to our own domain well ahead of time, so cutover night touched zero OAuth config. Our plan doc's list of which platforms needed this was wrong in both directions. Grep the live environment export instead.

**Verify OAuth by connecting, not by reading config.** A redirect URI that looks right in a dashboard proves nothing. We ran a real connect on all 11 platforms and watched the nonce rows get created and consumed. That's how we found a caching bug in our own registration service, and a Facebook scope error that had been quietly broken for three weeks.

**Only one worker can exist at a time if you use rotating refresh tokens.** X and Bluesky issue a new refresh token on every use and kill the old one. Two workers polling the same account means one silently invalidates the other's credentials. A second *web* service is harmless since reads don't rotate anything. A second worker is not. We deployed the new worker once to confirm it booted, then removed the deployment and disconnected the repo so nothing could auto-deploy it back.

**Prove env parity by hashing, not by eyeballing.** 123 variables. We hashed every value from the source platform's API and diffed against the destination. Worth noting: the dashboard .env export lied to us, showing literal quotes around three secrets that weren't actually there. The API is ground truth, exports are a rendering for humans.

**Restore into an empty schema.** `pg_restore --clean` against a pre-provisioned schema died on dependency-ordered drops. `DROP SCHEMA public CASCADE`, recreate, then a plain `pg_restore` with no `--clean` finished cleanly. Verify against row counts you captured before the suspend.

**A migration isn't done when traffic moves.** Point-in-time recovery was above our plan tier, so we built a nightly pg_dump to object storage, then actually restored from it into a scratch database and compared row counts before trusting it. We didn't delete the old host until a clean week of monitoring said the new one was holding.

Full writeup with the rest of it, including the Rails-specific `db:prepare` multi-database trap and a SolidQueue fork-safety bug that had our log flusher dead for days: https://xreplyai.com/blog/render-to-railway-migration-guide

Note: this post was drafted with AI assistance from my own migration notes and incident log.

u/Moontrepreneur — 15 days ago

My test was stubbing the exact bug it was supposed to catch

A vendor API we integrate with sends a field called publicaly_available_post_id. That spelling is theirs. Missing "l", in their docs and on the wire.

My code read publicly_available_post_id. Correct English. A field they have never once sent.

Normally that is a four-second bug. It survived for months, because when I wrote the test I stubbed the correctly-spelled field too. So the test confirmed my reader agreed with my stub. Both written by me, same afternoon, same wrong belief. They got along fine.

The damage landed somewhere else, which is the part I keep chewing on. There was a fallback: if the ID is missing, store the temporary upload handle instead. So the first thing that ever published stored a temporary handle in the permanent ID column. Nothing errored. The record looked normal. It surfaced weeks later when a metrics job asked the vendor for stats on an ID that had never existed.

Two things I changed. Third-party field names get pasted from the vendor's reference response, never typed, because typing one creates a second source of truth your tests will then defend. And at least one test per integration replays a real captured response instead of a fixture I wrote from memory.

reddit.com
u/Moontrepreneur — 16 days ago

I spent a day debugging a 50/50 split that was working perfectly. The bug was in the counter.

Two-arm homepage test, 50/50 assignment, running a couple of weeks. The arm counts came back 178 and 57.

That looks like a broken randomizer, so that is where I went. Read the assignment logic, read the middleware, eventually wrote a script that ran the assignment ten thousand times and counted buckets. 4,981 / 5,019. The split was fine. I had spent a day confirming the one thing that was working.

The actual problem was that my "this person entered the experiment" event was firing on every page load. It shared a function with a call that legitimately has to repeat on every load, and I was calling that function from the root layout of the app. So the arm counts were never exposures. They were pageviews.

The part that cost me the day: the two arms rendered through different layout trees, so they over-counted at different rates. Even over-counting would have given me 178 and 174, and I'd have thought "these denominators look too high" and found it fast. Uneven over-counting produced a lopsided ratio, which is exactly what a broken split looks like. The measurement bug was disguised as an assignment bug.

Conversions were counted correctly the whole time. Only the denominators were inflated, so every conversion rate from that window was wrong while every number feeding it was right.

What I took from it: a number that contradicts your system is not evidence about your system. It's evidence that one of the two is wrong, and the measurement is the half nobody writes tests for.

reddit.com
u/Moontrepreneur — 17 days ago

When a post of yours does unusually well, do you actually know why?

I keep track of what I post, and every so often one just takes off. Sometimes I can point at the reason. Most of the time I am guessing after the fact, and the guess feels like a story I told myself.

So for the ones that landed for you: was it the hook, the format, the timing, or just the topic being right that week?

And the follow up I actually care about: were you able to do it again on purpose?

Mine was a plain text post with no image, put up on a Tuesday morning. I have never repeated it.

reddit.com
u/Moontrepreneur — 20 days ago

Broadcasting the same post to five platforms is not distribution

For about four months I ran what I thought was a distribution system. I wrote one post, pasted it into five platforms, and watched four of them do nothing. I assumed those audiences just were not for me.

Then I noticed I was writing for one reader and shipping to five.

The first fix was cutting down instead of padding up. I write the idea once at its longest honest length, usually around 250 words, everything I actually have to say about it. Each platform then gets a cut of that, never an expansion. The short ones get the sharpest 40 words rather than a paragraph that dies at the character limit.

The second fix mattered more. I rewrite the opening line for every platform. On a forum the opening states the problem, because people are scanning to see whether it is their problem. On a feed the opening has to be a claim someone would push back on, because people are scanning for a reason to stop. Same idea underneath, different first line.

Here is the tell that you are broadcasting rather than distributing. Try pasting the post into another platform without touching it. If it fits everywhere unchanged, it was probably written for no one in particular.

Has anyone found a format that travels unchanged?

reddit.com
u/Moontrepreneur — 23 days ago
▲ 1 r/InstagramMarketing+1 crossposts

The two boring things that finally made Instagram work for my side project

I ignored Instagram for a long time because it felt like the platform least suited to what I'm building. Turned out I was just bad at it. Two changes fixed most of it, and neither is a growth hack.

First: one post a day, but I stopped making that a daily decision. Every attempt before this died the same way. Sit down at some random hour, try to think of something, feel uninspired, skip it, then skip the next one because I already broke the streak. Now I spend about ninety minutes on Sunday making seven posts and they go out one a day. The individual posts got a bit worse. The account got a lot better. Consistency beat quality by a wide margin, which I did not expect and still find slightly annoying.

Second: I keep a list of about twenty accounts in adjacent niches and I actually read them. Not the huge ones. Accounts around my size or a little bigger, talking to the people I want to reach. I leave a real comment on a few most days. Not "great post," an actual response to what they said.

That second one felt like procrastination for months because nothing gets produced. But when I trace back where followers came from, it's comment threads far more often than my own posts.

Your posts reach people already looking for you. Comments reach people who aren't.

One small thing that helped: comment before you post, not after. Post first and you'll spend the day checking your own numbers instead lol

reddit.com
u/Moontrepreneur — 25 days ago

If you write long posts, how do you decide what's worth repurposing?

I write the occasional long-form post (a thread, a newsletter, a build log) and I always hit the same wall afterward: I know there are 3-4 smaller posts hiding inside it, but I can't tell which parts are actually worth pulling out.

How do other people handle this? Do you mark the repurposeable(?) bits as you write, or go back after and mine it? And when you pull a piece out, do you just trim it or rewrite it for the new format?

Open for ideas

reddit.com
u/Moontrepreneur — 1 month ago

How I fixed my inconsistent posting (it was a systems fix, not a discipline one)

I run a small product solo, and for a long time my social presence looked like: three great posts, then three weeks of silence, then a guilty burst. I always blamed discipline. It wasn't discipline. What actually fixed it was removing decisions:

  1. Batch weekly, not daily. One 45-min block, draft everything while I'm already in that headspace. The daily "what do I post today" decision is what kills the habit.

  2. Split writing from publishing. "Write + post + remember the timing" is three jobs pretending to be one. Queue it, let it fire on its own.

  3. One platform consistently beats five sporadically. Add platforms only after the habit sticks.

The pattern: the people who stay visible didn't get more disciplined. They removed the daily decision.

I ended up building this into a tool (XreplyAI) so I could plan and schedule a week across all 15 platforms in one sitting, but the systems point stands even if you do it in a spreadsheet. Wrote up the timing side here: blog

reddit.com
u/Moontrepreneur — 1 month ago

Separating "deciding what to post" from "writing the post" fixed my consistency problem

I kept failing at posting consistently and blamed discipline. The real culprit: a blank composer makes you do two jobs at once. Decide what to say, then say it.

Now I split them. Sunday I spend 30 minutes deciding the week's topics, one line each, no drafts. Monday I write them all in one sitting. Takes about an hour because the hard part is already done. The rest of the week I don't think about content at all.

What made it click: deciding is the expensive cognitive work, not writing. You can't make good "what should I say" decisions in the gaps between real work. Batched on a clear head, they're easy.

Anyone else run a split like this, or do you decide and write in one go?

reddit.com
u/Moontrepreneur — 1 month ago
▲ 2 r/buildinpublic+1 crossposts

We're testing a posting streak to bring users back weekly: how do you gamify your SaaS for retention?

Retention is the thing I think about most right now. People connect their accounts, schedule a week of posts, then a sprint hits and they vanish. The product worked, they just stopped coming back.

So I'm testing a gamification lever: a weekly posting streak on the dashboard. It counts each week the workspace publishes at least one post. The bet is that a streak gives people a reason to return before the habit dies. The twist is that it's forgiving on purpose. Daily streaks punish one slip and people quit, so I made the unit the week, gave everyone one free "streak freeze" per month to auto-bridge a busy week, and only reset after two empty weeks in a row. Milestone markers at 4/12/26/52 weeks, plus a calm nudge if nothing's scheduled late in the week.

I run a multi-platform scheduler (14 platforms, one calendar), so "did they come back this week" is basically the retention signal I care about most, and the streak is my first real attempt to move it.

Curious what's actually worked for the rest of you. How do you gamify your SaaS to pull users back without it feeling gimmicky or naggy?

reddit.com
u/Moontrepreneur — 2 months ago
▲ 7 r/socialmedia+1 crossposts

How do you actually plan your week of posts? Batch or write day to day?

Trying to get a read on how other people run this. When you plan for social posts, do you batch the whole week in one sitting, or write them as it happens? And what actually happens daily vs weekly for you?

Curious how much is planned ahead vs improvised in the moment. No wrong answers, just want to see what real workflows look like.

reddit.com
u/Moontrepreneur — 2 months ago

The first hour after you post decides its reach more than the content does

Spent a while figuring out why two near-identical posts got very different reach. The difference was not the writing. It was what happened in the first 30 to 60 minutes.

Here is the pattern as best I can tell. When you post, the platform shows it to a small test slice of your followers. If that slice replies and reposts quickly, it gets pushed wider. If they scroll past, it stalls and rarely recovers. Replies weigh more than likes, because a reply is someone spending real attention.

What changed my results:

  • I stopped posting and leaving. I now stay for the first hour and reply to every comment within minutes. Each reply is its own signal and pulls that person back for a second look.
  • I post when my specific audience is online, not at some generic best time. The only chart that matters is your own analytics.
  • I end posts with a real question. People reply to questions far more readily than they react to statements, and replies are what the first-hour test is measuring

If a post lands flat in the first hour, I let it go instead of trying to revive it. The window is the whole game.

Curious what others do here. Do you actively work the first hour, or post and move on?

reddit.com
u/Moontrepreneur — 2 months ago
▲ 3 r/micro_saas+1 crossposts

Spent a 5 months copying my X strategy onto LinkedIn. It was quietly killing my reach

I treated LinkedIn like X for way too long. Same punchy one-liners, same thread structure, same "ship fast" energy. Reach stayed flat for months and I assumed LinkedIn was just dead for founders.

It wasn't. I was posting X content on a platform that wants something completely different. LinkedIn ranks on dwell time, not click through. A post that makes someone stop and read for 15 seconds beats a clever hook that gets a like and a scroll-past.

Once I started writing for dwell, the format changed: a real opening line instead of a tweet hook, short paragraphs that pull you down the page, a genuine question at the end that's worth answering in the comments.

The other thing that worked was commenting before posting. Thoughtful comments on bigger accounts in my niche, 20 minutes before I published, warmed up the audience that then saw my post.

I wrote up the four levers that actually worked here

For the solo founders here: what finally made LinkedIn click for you?

u/Moontrepreneur — 2 months ago

The hook of your post is usually the second line, not the first

I edit a lot of my own social posts before they go out, and the same problem shows up almost every time: the first line is a warmup, not a hook.

It reads like this:

"I've been thinking lately about how ..."
"Something I've noticed over the years ..."
"I wanted to share a quick thought on ..."

None of that is the point. It's the writer clearing their throat while they figure out what they actually want to say. They see a slow opening, and they scroll.

What worked for me: write the whole thing, then delete the first line. Most of the time the second line was the real opener. It's more specific, it starts inside the idea instead of walking up to it, and it gives the reader a reason to stay on line two.

Try it on your last three posts.

Read line one
Read line two

Ask which one would stop your own scroll. Usually it's the second one!

Happy writing!

reddit.com
u/Moontrepreneur — 2 months ago
▲ 3 r/Solopreneur+1 crossposts

The "decide once" trick that finally made me consistent on social while building my product

I kept failing at posting regularly, and for months I blamed the writing. Turns out the writing was fine. The killer was deciding when to post, every single time. Now or tonight? Two posts today or one? Each post came with a small scheduling negotiation, and after a long build day I just wouldn't bother.

What worked: I made the timing decision exactly once. Picked three weekly posting slots and stopped touching them. Now anything I write goes to the back of a queue and takes the next open slot. Batch four posts on Sunday, they fill the next four slots. Skip a week, the queue stretches, nothing breaks, nothing to reshuffle.

Two months in, my posting streak has outlasted every previous attempt, and the only job left is writing.

I ended up building this queue workflow into my own product, after running it manually in a spreadsheet for too long

Curious what systems other builders here use to stay visible while shipping.

reddit.com
u/Moontrepreneur — 2 months ago

Creator Studio is gone. What people are actually using to schedule Instagram posts now

Half the "how to schedule Instagram posts" guides still floating around tell you to use Creator Studio, which Meta retired back in 2024. So every few weeks someone follows one of those and hits a dead end.

Here's the current state, since I just went down this rabbit hole:

- Free, native: Meta Business Suite schedules posts and Reels up to ~75 days out. You need a business or creator account (free switch). Downside: it only covers Instagram + Facebook, nothing else.

- In the app: business/creator accounts can schedule from the final share screen under Advanced Settings. One post at a time, no calendar view, phone-only.

- Third-party tools: worth it once Instagram is one of several places you post and you want a single calendar instead of four logins.

If you only post to Instagram, Business Suite genuinely covers it and you don't need to pay anyone. The third-party tools earn their place when you're cross-posting and rewriting the same idea four times.

I wrote up the full breakdown (native vs in-app vs third-party, with the gotchas) here:

https://xreplyai.com/blog/can-you-schedule-instagram-posts

What's everyone using since Creator Studio went away?

reddit.com
u/Moontrepreneur — 2 months ago

Need 5 founders willing to trade a free PRO Social Management for feedback

I've been building a social media tool for solo founders — the people who need to stay visible on X/LinkedIn/etc. to get inbound but can't spend two hours a day on it. It schedules posts, drafts replies, and generates content trained on your own past writing so it doesn't sound like generic AI.

It's at the point where I need real users putting it through real workflows, not more of me testing my own assumptions.

So: I'll give 5 founders 3 months of the Pro plan free (the tier where we handle the AI, no API key needed). In return I want honest, specific feedback — what's confusing, what you'd never use, where it breaks, what would make you actually keep it after the 3 months.

What I'm looking for:

- You're a solo founder / indie hacker / consultant actually using social for leads (not just posting for fun)
- You'll use it for at least a few weeks and tell me the truth, including "this part sucks"
- Bonus if you already post somewhat regularly so you have a baseline to compare against

Not looking for: people who just want a free account and will never log in. The feedback is the whole point of the trade.

If you're in, comment with what you're building and where you currently struggle with social, and I'll DM the first 5 that fit.Need 5 founders willing to trade a free PRO Social Management for feedback

reddit.com
u/Moontrepreneur — 3 months ago
▲ 3 r/SocialMediaMarketing+1 crossposts

Does replying to other people's tweets actually boost your reach?

I kept seeing "just reply to big accounts and you'll grow" advice and wanted to know if there's anything real behind it or if it's just hustle-bro noise.

Turns out there is a mechanism. Replies aren't treated like throwaway comments. When you reply, the algorithm can surface that reply to people who follow the original poster and to the broader conversation, so a good reply on a post with reach borrows some of that reach. It's not magic; a low-effort "great point!" does nothing. The ones that travel are the replies that add something

- a counterexample
- a specific number
- a contrarian take that's still useful.

The catch nobody mentions: it only compounds if you're consistent, and consistency is exactly what kills most people. Replying thoughtfully 15–20 times a day is a part-time job.

I went down a rabbit hole on how the reply boost actually works

Curious what's worked for people here. Do you actually see reach from replies, or only from original posts?

reddit.com
u/Moontrepreneur — 3 months ago