FounderReply

Social agent

The AI social media agent that waits for your yes.

It finds the threads where your buyers are asking, drafts an on-brand reply or post, and acts from an account you connected yourself. Every draft waits in an approval queue until a human releases it. 10 networks are connectable today: Reddit, Instagram, Facebook, LinkedIn, X, Bluesky, YouTube, Stack Exchange, Lemmy and Discourse.

Connect accounts you already own · Free to start · No credit card required

10
Networks connectable today
4
Actions with their own dial
1
Gate every draft passes
Your browser sessionsigned in as you
PUBLIC THREADDRAFT · NOT SENTwaiting for youApprove

What it does

An agent that reads the room before it opens its mouth.

Most social AI is a caption generator with a scheduler attached. This one starts from the conversation, writes against a structured picture of your brand, and acts from an account you own rather than from a pool of someone else's — and what it produces is a draft, not a post.

It reads first

It finds the conversation before it writes a word

Discovery pulls the public threads around your market and scores each one against a structured picture of your brand — what you sell, who you sell to, and the topics you have standing to speak on. Most of what it reads, it declines to answer.

  • lib/persona.ts turns a short intake into audience segments, content pillars and a tone matrix.
  • lib/growth.ts scores a discovered thread against that persona before a draft is ever generated.
  • A thread that does not clear the bar produces nothing — not a generic reply.
Thread scoring
WORTHANSWERING4 of 5 declined

It writes in your voice

Your edits are the only labelled data about how you sound

Each draft is written for one thread, grounded in the persona and in what this brand has already posted. When you rewrite a draft before releasing it, the model’s version and the version you actually sent are both kept — and the next draft is written against that pair.

  • Drafting runs through draft() in lib/ai.ts, which fences the untrusted thread text so it cannot act as an instruction.
  • lib/editlog.ts stores the draft→final pair and the most recent corrections are injected as few-shot guidance.
  • Whitespace-and-case-only changes are ignored, so the signal stays meaningful.
Draft, your edit, next draft
MODEL DRAFTWHAT YOU SENTThe pair is kept. The next draft is written against it.

It stays your account

One account you already own, one connection you can end

It does not borrow, rent or age an account. Whichever way a network connects — authorising FounderReply from inside its own settings, or handing back a session signed in as you — what comes back is one connection to one account, and you end it at the network itself.

  • One connection per account you connect, and it only ever drives that account.
  • Revoke at the network and the agent is out — there is nothing to ask us for.
  • Disconnect in one click; the audience and the account stay yours.
One account, one session
Your accountOne live sessionDisconnect

Your password

Two ways in, neither of them a password we keep.

Some networks are connected by authorising FounderReply from inside the network’s own settings, and on those there is no password in the picture at all. The rest need a sign-in, and that is what the two lanes are for.

The usual lane never routes your password through FounderReply: you get a one-time link, you sign in yourself in the agent’s browser — two-factor prompt included — and what comes back is the session every later run uses.

Where that is impractical, a credential goes into the vault instead. It is namespaced to that one account, referenced in a run only as a {{secret:NAME}} token, and it is never echoed back by the API that accepted it. Either way, you end the connection at the network itself.

Connecting an account
A · YOU SIGN INOne-time link · 2FA includedB · VAULTED SECRETReferenced by name, never echoed backOne signed-in sessionRevoke it at the network

The dial

4 actions, and where each one starts.

Autonomy is not one switch. It is one setting per action per network, and these are starting positions — where the dial sits before you touch it, read out of DEFAULT_MODES rather than described. Every one of them moves.

Publish to your own account
approveAn original post on an account you own. This is the mildest thing the agent does, and it still waits for you until you say otherwise.post · lib/autonomy.ts
Reply under your own posts
approveAnswering someone who came to your own thread. Most networks are comfortable with this running unattended; it still ships gated.reply · lib/autonomy.ts
Send a direct message
approveA message into a stranger’s inbox. Every network treats automated DMs as a spam signal, and so do we: it ships gated everywhere and is never raised for you — only by a deliberate change of your own.dm · lib/autonomy.ts
Comment under someone else’s thread
offThe action most likely to get an account actioned, and the one most tools quietly default on. It ships switched off on every network without exception, and any movement at all is a change you make yourself — named, warned about, and logged.growth_comment · lib/autonomy.ts
What happens when you move one
Your setting is applied as written — including where it is looser than the network’s own automation policy. The controller does not silently lower it: it returns the gap, the dashboard warns you before you commit, and the reason is written to the audit log as your decision, naming the rule it crosses.decide() · these are defaults, not ceilings

The rules, plainly

What it will do, and what it will never do.

Written as a list of refusals rather than a list of features, because on a page about an agent acting on your own accounts the refusals are the load-bearing half.

The social agent

Every draft waits for you unless you have raised the dial for that action on that network — and nothing here raises one for you. Two of the four, direct messages and comments under other people’s threads, are not raised by any plan, upgrade or default.

Always
Acts only from the account you connected, and only that one.
Reads the whole thread before it writes a word.
Holds every draft in the queue — approve, edit or skip.
Applies the setting you chose, and names the policy it crosses.
Lets you end the connection at the network, not with us.
Never
Raises a dial for you — not by plan, not by upgrade.
Quietly lowers a setting you chose instead of warning you.
Uses a shared, rented or aged account.
Fires the same reply at everyone.
Auto-publishes text a brand guardrail flagged.

Where this is enforced, not promised

A draft is a row in approval_queue at status pending, and approveAndSend() in lib/approval.ts is the only path from that table to a connector — it refuses any row that is no longer pending, so there is no express lane to find. The one thing that skips the table is an action you set to auto yourself, and that decision is in the audit log too.

How it acts

It stops one step short. That step is yours.

One account at a time. It reads the thread, writes the reply and puts it down in front of you — and until you tell it otherwise, that is exactly where it stops.

Your account, start to finish

Nothing shared, nothing borrowed, nothing aged. One connection to one account you already owned, ended at the network whenever you like.

One thread at a time

It answers the thread it actually read. No blast, no one reply spun fifty ways, and nothing ships that the brand guardrails flagged.

The last step is a person

Every action starts gated, and the riskiest one starts off. What changes that is you moving a dial — named, warned about, recorded.

FAQ

Before you connect an account.

What the agent can and cannot do, which networks are genuinely available, and what happens to a draft between the model writing it and anyone reading it.

It is software that reads the conversations around your brand, writes a reply or a post in your voice, and publishes it from your own account. FounderReply is that, with a gate: every draft it writes lands in an approval queue and a person releases it before anything is published.
All 10, and every one of them connects today: Reddit, Instagram, Facebook, LinkedIn, X, Bluesky, YouTube, Stack Exchange, Lemmy and Discourse. Each runs on an account you connect yourself, under a credential you can withdraw again without going through us.
Only if you turn it on, per action and per network. Out of the box posts, replies and DMs all ship at approve on every network, and growth commenting ships at off. Raise a dial and the controller applies your setting as written — then tells you which policy it crosses, and records that you chose it.
Only if you switch it on yourself. That action ships at off on every network, and nothing raises it for you — not a plan, not an upgrade, not a default. Raise it and the setting is applied as written rather than quietly corrected: you are warned which policy it crosses, and the reason is written to the audit log as your decision.
Yours. You connect an account once, on accounts you already own, and every run afterwards uses that one connection. Depending on the network you either authorise FounderReply from inside its own settings or sign in yourself through a one-time link. Nothing is rented or resold, and you revoke it at the network at any time.
Yes, from your edits. When you change a draft before releasing it, both the draft and the text you actually sent are stored, and the most recent corrections are fed back into drafting as few-shot guidance. Whitespace-and-case-only changes are ignored so the signal stays meaningful.

Your first draft

Let it draft the first one. You send it.

Connect an account you already own, describe the brand once, and read what the agent writes before anyone else can.

Approval is on by default · Disconnect at the network any time