- 011/ Step three is where onboarding dies. Not the signup. Not the paywall. The step that asks for work before it has given anything back.
- 022/ In our data every account that finished last week skipped it. They typed straight into the empty table and never came back to the import.
- +4 more parts
Send the source. Get back posts that sound native.
One call takes a blog URL, a transcript or a video description and returns platform-shaped drafts: an X thread, a LinkedIn post, an IG caption, a TikTok hook, clip cut points. Approval and analytics hang off the same object.
20 metered runs a month, no card. The frame below is the product running on seeded data.
- Latency
- 2,140 ms
- Tokens
- 4,180
- Drafts
- 9
{
"source": {
"type": "blog_url",
"url": "https://northlight.studio/blog/onboarding-step-three",
"title": "Why your onboarding drops at step three",
"text": "Step three is where every onboarding we have measured loses people. It is the step that asks for work before it has returned anything: connect a source, invite a teammate, import a file. The three accounts that finished last week all ski..."
},
"targets": [
"x",
"linkedin",
"instagram",
"tiktok",
"youtube"
]
}{
"id": "job_8f21c4",
"object": "repurpose.run",
"latency_ms": 2140,
"tokens": 4180,
"variants": [
{
"platform": "x",
"shape": "numbered thread",
"body": "Step three is where onboarding dies. Not the signup. Not the paywall. The step that asks for work before it has given anything back.",
"parts": [
"1/ Step three is where onboarding dies. Not the signup. Not the paywall. The step that asks for work before it has given anything back.",
"2/ In our data every account that finished last week skipped it. They typed straight into the empty table and never came back to the import.",
"3/ The import was not hard. It was early. Nothing had been returned yet, so the work had no receipt attached to it.",
"4/ We flipped the order. Hand back one result, then ask for the source. Same two screens, opposite sequence.",
"5/ Completion went from 31 percent to 58 percent in nine days. The import step did not change at all.",
"6/ If your funnel drops at step three, read the step before it. That is where the promise was supposed to be paid."
]
},
{
"platform": "linkedin",
"shape": "founder note",
"body": "We measured nine onboarding flows this quarter. Every one of them lost people at the same place: the step that asks for work before it has returned a result.\n\nConnect a source. Invite a teammate. Import a file. All reasonable asks, all placed before the product had proved anything.\n\nWe moved the result in front of the ask. Completion went from 31 percent to 58 percent in nine days, and the import step itself never changed.\n\nIf your funnel drops at step three, the problem is usually step two."
},
{
"platform": "instagram",
"shape": "caption with hashtag block",
"body": "Step three asked for work before it paid anything back. We swapped the order: result first, import second. Completion 31 to 58 percent in nine days.",
"hashtags": [
"onboarding",
"productdesign",
"saas",
"activation",
"buildinpublic"
]
},
{
"platform": "tiktok",
"shape": "cold open hook",
"body": "Your signup is fine. Step three is killing the account.",
"hashtags": [
"onboarding",
"saas"
]
},
{
"platform": "x",
"shape": "single post",
"body": "31 to 58 percent completion. We did not remove the import step, we moved one result in front of it."
},
{
"platform": "youtube",
"shape": "clip cut points",
"body": "Three cut points ranked by how well the first six words stand alone.",
"parts": [
"00:00 - 00:28 - The step that asks for work before it returns anything",
"01:12 - 01:49 - Every account that finished skipped the import",
"03:05 - 03:40 - Same two screens, opposite sequence"
]
},
{
"platform": "linkedin",
"shape": "one-line post",
"body": "Onboarding drop-off is a sequencing problem more often than it is a copy problem."
},
{
"platform": "instagram",
"shape": "carousel outline",
"body": "Six panels walking the funnel from signup to first result.",
"hashtags": [
"carousel",
"onboarding"
]
},
{
"platform": "tiktok",
"shape": "listicle hook",
"body": "Five onboarding mistakes you are probably making right now.",
"hashtags": [
"saas"
]
}
]
}X1 draft
LinkedIn1 draft
We measured nine onboarding flows this quarter. Every one of them lost people at the same place: the step that asks for work before it has returned a result. Connect a source. Invite a teammate. Import a file. All reasonable asks, all placed before the product had proved anything. We moved the result in front of the ask. Completion went from 31 percent to 58 percent in nine days, and the import step itself never changed. If your funnel drops at step three, the problem is usually step two.
Instagram1 draft
Step three asked for work before it paid anything back. We swapped the order: result first, import second. Completion 31 to 58 percent in nine days.
#onboarding#productdesign#saas#activation#buildinpublic
TikTok1 draft
Your signup is fine. Step three is killing the account.
#onboarding#saas
One run
One transcript in, nine platform-shaped drafts out.
This is a real run from the seeded account: the request that went out, the response that came back, and the drafts it produced. The same rows are waiting inside a new account.
Platform shape, not a reflow
A thread is numbered and paced. A caption carries its own hashtag block. A hook stays under twelve words. Each platform gets rules it was written for, not the same paragraph cropped five ways.
The response is the documentation
Every run prints the exact JSON request and response pair that produced it, copy-pasteable into curl. Nothing to reverse engineer.
Review is part of the object
Drafts land in an approval queue. Rejections carry a one-line reason, and the reasons stack per platform, so you can read which shape keeps dying.
Analytics that change the next run
Reach and saves attach back to the source asset, not to a loose post id. The shape that earned reach becomes a named preset the next run reuses.
Transcript-first video
Long-form video becomes ranked clip cut points with timestamps and hooks before anything touches an upload.
Metered, and the meter is visible
Per-run latency and token cost are printed in mono, so you can price your own feature on top. The seeded month shows 12 of 20 runs used.
How a run goes
Four stages, one object
Each one is visible in the product, not described in a diagram.
- 1
Send one source
A blog URL, a transcript or a video description. One POST, one object, no per-platform payload to hand-author.
- 2
Get shaped drafts
Each target platform returns a draft written to its own voice rules, with the request and response pair beside it.
- 3
Approve or kill
The queue holds every draft. Approve it into a week slot, or reject it with a reason that teaches the next run.
- 4
Feed the numbers back
Reach and saves attach to the source asset. The winning shape is saved as a preset and the next run inherits it.
Counted, not claimed
1
Endpoint between a source and every platform
5
Platform shapes returned per run
2,140 ms
Median run latency, seeded month
20
Metered runs a month on the free tier
Repurposing API vs raw posting API
PostPeer is a unified posting API: one endpoint that fans a finished post out to every platform. Flowmark is the layer above it. We turn one long-form source into platform-shaped drafts, review them, and feed performance back into the next run.
| Feature | Flowmark | PostPeer |
|---|---|---|
| What you send | One long-form source: a blog URL, a transcript or a video description. | A finished post payload you already wrote, plus media. |
| What comes back | Platform-shaped drafts, each with its own voice rules, in one object. | A post id per platform. |
| Content quality | Our problem: per-platform prompt tuning and saved voice presets. | Yours. The API stays neutral on copy. |
| Review | Built-in approval queue, with rejection reasons stacked per platform. | No review layer. Approval happens inside your app. |
| Analytics | Metrics attach back to the source asset and pick the next shape. | Normalised read-only metrics per post id. |
| Video | Transcript-first clip cut points with timestamps and hooks. | Upload or URL ingest with platform media handling. |
| Who it is for | Agencies and SaaS founders shipping a repurposing feature. | Any developer who needs a posting pipe. |
| Relationship | The layer above. Posting plumbing stays where it is. | The plumbing. |
Pricing
One plan, metered by the run
Start free. Upgrade when the meter is the thing holding you back.
Free
Enough to wire repurposing into a product and see the shapes.
$0
forever
- 20 metered runs a month
- All five platform shapes
- Approval queue and week grid
- Request and response pair on every run
Premium
RecommendedFor agencies and founders shipping repurposing as a feature.
$19
per month
- Everything in Free
- Lifted run allowance, metered per month
- Saved voice presets across jobs
- Shape feedback from reach and saves
- Cancel from the billing portal
One plan, one price, metered runs. The amount is the Stripe price this deployment is wired to, so changing it there changes it here.
Questions
Before you wire it in
What does one call actually return?
One RepurposeJob: the source you sent, a draft per target platform with its own shape, the latency and token cost of the run, and the request and response pair that produced it.
Does this post to the platforms?
No. Posting plumbing stays where it is. Flowmark is the layer above it: the transformation, the review and the feedback. Approved drafts export, and you send them with whatever you already use.
Who owns content quality?
We do. Per-platform prompt tuning and saved voice presets are the product, not a caller responsibility. Reject a draft with a reason and the next run reads it.
What happens to video?
Transcript first. Long-form video becomes ranked clip cut points with timestamps and hooks. There is no rendering or encoding here, by design.
What if the model is unreachable?
The run still completes. Drafts are shaped locally, the run is marked as shaped without the gateway, and nothing is silently dropped.
How is it metered?
Runs, not posts. The free tier covers 20 runs a month and every run prints its own latency and token cost so you can price your own feature on top.
Repurposing as an endpoint, not a roadmap item.
Create an account and a seeded workspace of runs, drafts and metrics is already there.