Stop posting manually. Start publishing automatically.
Stop spending your evenings manually posting to social media. SMS schedules, publishes, and tracks your content automatically — so you can focus on creating, not clicking.
Executive Summary
SMS (Social Media Scheduler) is a multi-tenant SaaS platform solving the operational bottleneck of manual social media publishing for creators and agencies. This document covers the full product lifecycle: from problem discovery and user research through system architecture, API design, and delivery.
Purpose
Enable creators and agencies to manage every stage of their content lifecycle — from idea to publication to analytics — without manual intervention. SMS removes the need to publish content manually, remember posting schedules, or switch between multiple tools.
Business Value
Go from idea to published post in under 2 minutes
AI writes the caption. You pick the time. The queue does the rest. No more scheduling marathons every Sunday night.
Your posts go live even when you're offline
Set it once. The queue-based engine publishes to every account at exactly the right time — no alarms, no manual posting, no missed windows.
Know exactly which content earns you followers
Stop guessing. See reach, engagement, and impressions per post so you can double down on what works and drop what doesn't.
Run 10 client accounts without losing your mind
Every account has its own timezone, queue, and media library. No more wrong posts on wrong accounts. No more tab-switching chaos.
Key Risks
API Dependency
High reliance on Meta/Platform APIs. Rate limit changes or deprecations could disrupt core functionality.
Market Saturation
Crowded space (Buffer, Hootsuite, Later). Must clearly articulate AI-driven UVP to drive adoption.
Scalability
Improper handling of async media uploads and cron-based queues could cause missed publishing windows.
Product Principles
These are the non-negotiable rules that guide every feature decision, scope cut, and trade-off in this product. When in doubt, we come back to these.
We shipped to one platform (Instagram) with a 99%+ publish SLA rather than 5 platforms with a 90% rate. Users reported zero missed posts in Week 1.
Every new platform integration must pass a stability gate — a 99%+ publish success rate in staging — before it ships to users.
Team Collaboration and Best Time to Post were excluded from MVP — not because they're unimportant, but because neither is useful if the core "Schedule → Publish → Confirm" loop isn't rock-solid first.
Phase 2 and beyond are unlocked only after we validate D30 retention. We don't build on top of an unproven foundation.
We rejected the "Click to Preview" modal — it reduced anxiety but reintroduced friction. The side-by-side live preview eliminates it entirely: users see the exact output as they type.
Every new screen goes through a "where is the anxiety?" audit before design begins. We ask: what does the user fear at this moment — and how do we remove the fear entirely?
Phase 3 (Best Time to Post AI) is gated on 90 days of engagement data from 500+ active accounts. We start the sprint when the data is ready — not when the calendar says Q3.
Every roadmap item has a documented trigger metric. Scope changes are approved when a number is crossed, not in a quarterly planning meeting.
The publishing worker is built as a platform-agnostic abstraction. Adding LinkedIn in Phase 2 requires one new API adapter, not a system rewrite. We paid the engineering cost in Week 1 so Phase 2 takes weeks, not months.
Before any new feature enters the sprint, engineering signs off on whether the foundation can absorb it without structural debt. If it can't, the foundation gets fixed first.
Team Collaboration is documented as "excluded because MVP persona doesn't need it yet — revisit when Agency plan exceeds 30% of MRR." Not dropped. Deferred with a clear return condition.
The roadmap doc is a living record of deferred decisions and their triggers — not a wishlist. Stakeholders can always see why something isn't in the current sprint and exactly what would change that.
We didn't ship "AI Caption Generation." We shipped the ability to go from a blank page to a publish-ready caption in 90 seconds — reducing post-creation time by 93%. The feature is the implementation; the outcome is the story.
Every sprint ticket has an "outcome statement" alongside the feature description. Engineers and designers know the user goal, not just the spec. A feature that ships without moving its target metric is treated as a miss, not a win.
Before shipping anything, we ask: "If this feature worked perfectly but users didn't feel any different — would we still ship it?" If the answer is yes, we have built an output. If no, we have built an outcome.
Problem Statement
"Managing Social Media manually wastes hours every week — and every missed post is a missed opportunity."
Social media managers and creators are forced to juggle multiple tools, remember posting schedules manually, and write captions from scratch — all while switching between accounts. The result: inconsistency, burnout, and poor performance.
What creators lose every week
"I set phone alarms to remember to post — and still miss 30% of them."
Manual scheduling via calendar reminders fails. Missed posting windows mean missed engagement peaks — and inconsistent growth.
"It takes me 30–40 minutes just to write one caption."
Blank canvas anxiety kills momentum. Creators stall on copywriting instead of creating content — burning hours they don't have.
"I have no idea which posts actually grow my audience."
Native platform analytics are siloed. Without a unified view, creators repeat content that underperforms and miss what actually works.
"The only tools with automation start at $99/month."
Buffer Pro at $18/mo and Hootsuite at $99/mo price out solo creators. The tools that solve this problem were built for enterprise teams, not individuals.
What agencies lose every month
"We posted the wrong content to a client's account — again."
Managing 10+ clients across separate platform logins creates constant context-switching. A 30% wrong-account error rate puts client relationships at risk.
"We're hunting for approved assets across 4 different apps."
Creative files live in Dropbox, Drives, and WhatsApp threads. Finding the right approved image for the right client burns time before every single post.
"Someone has to stay online until midnight to post for US clients."
With zero automation, timezone scheduling becomes a staffing problem. Evenings and weekends are consumed by manual publishing across international accounts.
"Our monthly reports take 3 hours to build in spreadsheets."
Without automated dashboards, agency teams compile performance data manually from each platform every month — time that could go into strategy and growth.
Market Research & Competitive Analysis
The social media management market is large, crowded, and full of tools built for enterprise teams. Our opportunity is the underserved mid-market: creators and small agencies who need reliability over features and affordability over brand prestige.
Competitive Landscape
Every major tool evaluated against the 5 capabilities that matter most to our users.
Our primary moat. Buffer and Hootsuite have beta AI features buried in menus. Later and Sprout Social have none. SMS surfaces AI captions in the creation flow itself — at the exact moment the blank canvas creates anxiety.
Table stakes for scheduling — but reliability varies wildly. Later uses a semi-automated push notification model (user must approve before publish). Our queue engine retries failures automatically — a capability no competitor under $99/mo matches.
Our second moat — and the hardest to copy. Buffer and Hootsuite require users to manually detect and republish failed posts. For an agency with 10+ accounts, a silent failure during a campaign is a client relationship incident. SMS recovers automatically.
Hootsuite and Sprout target enterprise — $99–$249/mo prices out solo creators entirely. Buffer matches our price point but lacks AI and retry logic. We offer more capability at a comparable price for the segment they've abandoned.
Buffer and Hootsuite treat AI as an add-on. We build it into the creation step — the moment a user faces a blank caption field. That's where the drop-off happens. That's where we intervene.
No tool in the under-$50/mo bracket offers automated retry with idempotency protection. This is not a feature — it's the entire SLA. It's what separates a scheduling hobby tool from a publishing platform.
Hootsuite charges $99/mo for features a solo creator will never use. We charge $19 for exactly what they need. The segment they've abandoned is our entire addressable market at launch.
Launching an Omnichannel MVP
Why we deprioritized a multi-platform launch in favor of a single unified architecture.
✓ The Problem
Agencies manage fragmented audiences across LinkedIn, X, Pinterest, and Facebook. However, building 5 distinct OAuth connections and queue engines simultaneously would take 4 months, delaying the core promise: reliable auto-publishing.
✓ Options Considered
✓ Final Decision
We chose to launch a unified architecture focusing purely on the most mature Graph API first.
✓ Why This Option Won
Users explicitly told us that a buggy multi-platform tool is far worse than a rock-solid single platform tool. We prioritized the stability of the Queue Engine over the breadth of platforms.
✓ Tradeoffs
- Lost Early Adopters: Agencies requiring an immediate omnichannel solution (X + LinkedIn) churned during onboarding.
- UI Complexity: Building a modular monolith meant over-engineering the internal architecture for a single platform.
✓ Business Impact
Shipped a highly stable v1 in 6 weeks with zero dropped posts in week 1. Validated product-market fit rapidly, allowing us to build X/LinkedIn in Phase 2 in 1/3 the time.
Product Strategy
Three strategic bets underpin every decision in this product. These are not aspirations — they are the constraints that filter every feature request, scope cut, and engineering trade-off.
One platform done perfectly beats five platforms done poorly. A 99%+ publish success rate is the product's single most important feature — and the reason creators stay past Day 30.
AI caption generation is not a badge on the homepage. It is the feature that removes the #1 drop-off point in the creation flow — and the reason users switch from Buffer. It drives activation, not just delight.
Every architectural decision in v1 is made with Phase 2 in mind. Platform-agnostic abstractions, modular queue workers, and stateless APIs mean adding LinkedIn in Phase 2 is weeks, not months.
Product Metrics
How we measure success at every layer — from user behaviour to revenue.
This single number validates the entire product. To move it, a user must connect an account, create content, schedule a time, and trust our queue engine to deliver — on time, every time. Every feature decision is evaluated against its ability to increase this metric. If it doesn't help users publish more reliably, it waits.
MoSCoW Prioritization
Every feature ranked against one question: "Does this protect the core MVP promise?"
Pricing Strategy
Three tiers designed around how users grow — each with a deliberate conversion trigger.
Experience the core value. No credit card. No commitment.
When the user hits the 10-post limit, a hard paywall with a clear upgrade prompt fires. The limit is intentional — not a restriction, but a proof of value gate.
Everything you need to replace manual posting completely.
Priced below Buffer Pro ($18) while offering AI features Buffer doesn't. Low enough that a solo creator can justify it against saving 3+ hours/week.
For teams managing 10+ client accounts without the $99/mo Hootsuite bill.
Agencies hit the 5-profile Pro cap when onboarding their 6th client. The upgrade prompt fires at exactly that moment with a cost comparison against Hootsuite.
Each tier limit is set at the point where a user who has proven value with the product will hit a natural ceiling. Free → Pro is triggered by the post cap. Pro → Agency is triggered by the account cap. We don't price by features — we price by proven usage. This reduces friction for low-commitment users while capturing full value from high-engagement ones.
Product Assumptions
Every product decision is built on a set of beliefs. These are the critical assumptions we are betting the MVP on — and how we will know if we are wrong.
Manual posting requires constant presence. Creators report spending 2+ hours/day on scheduling logistics alone — time they would redirect to content creation if automation existed.
Buffer and Hootsuite collectively serve 20M+ users at $15–$99/mo. 18/25 creators in discovery interviews said they'd switch tools for a more reliable queue engine.
Users treat scheduling as a free utility and refuse to upgrade from Free tier. MRR stalls and the Pro conversion rate stays below 2%, making the SaaS model unviable.
Monitor Free → Pro conversion rate in weeks 2–6. If below 3% with >100 active users, trigger a pricing and value-prop interview sprint within 2 weeks.
The blank caption field is the #1 drop-off point in our scheduler prototype. AI captions eliminate the blank canvas anxiety and reduce post creation time from ~8 minutes to ~90 seconds.
In prototype testing, 9/10 users who used AI caption generation completed their first scheduled post. Only 5/10 users who skipped it did. Completion rate doubled with the feature active.
Users try the feature once and revert to manual captions, treating it as a gimmick. AI adoption stays below 20% and doesn't drive the expected lift in activation or Week-1 retention.
Track AI caption adoption rate weekly. If below 40% after 200 active users, redesign the onboarding prompt and retest. Compare D7 retention for AI users vs. non-AI users as the true signal.
The core scheduling problem is platform-agnostic. If we can't achieve retention on a single network, adding more platforms won't fix a flawed core loop — it will only mask it briefly.
Instagram is the #1 requested platform in user interviews (22/25 respondents). It has the most mature Graph API for content publishing, reducing integration risk significantly vs. X/TikTok.
Target agencies require LinkedIn or X as primary publishing channels and churn during onboarding because we don't support them yet, blocking our path to agency plan revenue.
Tag every churn reason at offboarding. If "missing platform" accounts for >25% of churns in Month 1, fast-track LinkedIn integration and move Phase 2 timeline forward by 6 weeks.
The OAuth → Create Post → Schedule flow has only 3 steps. If the UI is self-explanatory, an empty state CTA is more effective than a 6-step walkthrough that users skip.
In moderated prototype tests, users who received no instructions completed the OAuth → first scheduled post flow in an average of 7 minutes 42 seconds without assistance.
OAuth reconnect confusion causes high early churn. Users abandon during account connection and never experience the core value, skewing all activation and retention data.
Instrument the onboarding funnel with step-by-step drop-off tracking. If OAuth drop-off exceeds 30%, ship an inline contextual guide at that specific step — not a full product tour.
Redis-backed job queues are a well-understood pattern for timed delivery. The risk lies in API rate limits and token expiry — both are manageable with retry logic and proactive token refresh.
Internal load testing at 500 concurrent scheduled jobs showed 0 failures with the retry mechanism active. Instagram Graph API rate limits are well-documented and predictable at MVP user volumes.
Silent publish failures at scale destroy user trust irreversibly. A batch of missed scheduled posts for an agency during a campaign launch could result in mass churn and reputational damage.
Monitor publish success rate via ops dashboard daily in Weeks 1–4. Any dip below 98.5% triggers an immediate engineering review. Push notification alerts ship with v1 as a trust signal.
User Personas
Based on 37 user interviews, two primary personas emerged. We do not build for everyone — every roadmap decision is filtered through the specific constraints of these two users.
Sarah Chen
Sarah posts 3x a week but scrambles at the last minute. She hits writer's block writing captions, often forgets to post, and cannot afford the $99/mo Hootsuite tag.
Sarah is the reason we built AI Caption Generation into the core flow. If she gets stuck writing, she abandons the scheduler. AI unblocks her immediately.
Marcus Rivera
Marcus manages a team that occasionally posts content to the wrong client account. He pays Hootsuite $1,800/yr but doesn't use their enterprise features. His margins are bleeding.
Marcus is the reason we built Strict Account Isolation and Automated Retries. A single failed or crossed post is a PR disaster for him. Reliability is his only metric.
User Journey Map
We mapped the end-to-end flow to identify where users drop off. Instead of just listing steps, this map highlights the precise friction points and the product interventions we built to solve them.
Account Creation
User signs up, cautious and fatigued from trying other tools.
OAuth Connection
User grants permission to post on their behalf.
If the OAuth flow feels invasive or asks for excessive permissions, creators abandon the setup instantly.
We use granular, read-write-only scopes. No ad account access requested. Clear explanation of why each permission is needed.
Media Upload
User uploads image/video to the canvas.
Caption Generation
User struggles to write, clicks "Generate AI Caption".
Time Selection
User selects when the post should go live.
Generating a caption in 3 seconds turns frustration into magic. Users who use this feature have 3x higher Day-30 retention.
Calculating timezones manually causes errors and anxiety.
We lock timezones at the *account* level, not the user level, so agencies never post at the wrong local time.
Queue & Forget
Post is locked in, user logs out.
Success Notification
User receives push alert that post is live.
Analytics Review
User checks dashboard the next day to see engagement.
If a post fails silently, the user loses trust and churns immediately. Trust is harder to win back than to gain initially.
The queue engine implements exponential backoff retries. If an API rate limit is hit, we pause and retry automatically without bothering the user.
UX Architecture & Flows
The interface is designed around the "queue-and-forget" philosophy. Every flow is optimized to minimize time-in-app, prioritizing speed and reliability over prolonged engagement.
Primary Publishing Flow
Information Architecture
- Health Overview
- Recent Activity
- Quick Actions
- Create Post
- Draft Queue
- Scheduled List
- Day / Week View
- Drag-to-Reschedule
- Filter by Account
- Social Accounts
- Team Members
- Billing & Plans
Screen States
| State | Trigger | UI Behavior |
|---|---|---|
| Loading | Data fetch in progress | Skeleton loaders, pulsing placeholders |
| Empty | No data available | Illustration + CTA button (e.g., "Upload your first media") |
| Success | Action completed | Toast notification (bottom-right), green border flash |
| Error | Action failed | Inline error message + retry button |
| Warning | Partial success / expiry | Banner alert with action button |
| Confirmation | Destructive action | Modal dialog with confirm/cancel |
Accessibility Requirements
- All interactive elements have unique, descriptive ARIA labels
- Keyboard navigation supported for all forms and modals
- Color contrast ratio ≥ 4.5:1 for all text (WCAG AA)
- Focus indicators visible on all focusable elements
- Screen reader announcements for dynamic content changes
- Form inputs have associated labels (not just placeholder text)
Design System & Components
The UI leverages a modular component system built on high-contrast glassmorphism. This ensures development velocity while maintaining a premium, enterprise-grade aesthetic across all breakpoints.
Core Interface Components
Used on the Dashboard to display aggregate health metrics. Employs large typography for the primary value, with a color-coded trend indicator (e.g., +12% in green).
The primary input surface. Features a debounced auto-save, a character limit counter (0/2200), and an integrated 'Generate AI' state with a skeleton loading animation.
A responsive mobile frame that natively renders the post precisely as it will appear on Instagram, Twitter, or LinkedIn. Listens to changes in the `CaptionEditor` state.
Dropdown component showing connected accounts. Displays profile avatar, username, and a critical connection status dot (Active, Expired, Error).
Responsive Layout Strategy
Single column stack. Sidebar collapses into a bottom fixed navigation bar. Modals take up 100% of the viewport.
Two-column grid where applicable. Sidebar is hidden behind a hamburger toggle to preserve horizontal workspace.
Full three-column layouts. Persistent left sidebar. Optimal state for the two-panel Scheduler view.
Wireframes
Lo-fidelity wireframes establish layout, hierarchy, and interaction patterns before any visual design is applied. These inform component specification and developer handoff.
Design Progression: Lo-Fi Wireframe → Hi-Fi Prototype → Final UI. The wireframes below represent the Lo-Fi stage — focused on structure and flow, not visual polish.
Dashboard — Lo-Fi Wireframe
Key decisions: 4-card stat row at top for immediate health check → chart for trend → list for upcoming actions → quick CTAs for immediate next step.
Scheduler — Lo-Fi Wireframe
Two-panel layout: creation form (65%) + live Instagram preview (35%). The preview pane is the most-requested feature from user testing — eliminates the need to post and delete to check appearance.
The Two-Panel Live Preview
Eliminating "Post-and-Delete" anxiety through real-time native rendering.
✓ The Problem
7/10 users expressed severe anxiety before clicking "Schedule". Single-panel schedulers force users to mentally simulate how line breaks and images will look natively, causing a 25% drop-off rate.
✓ Options Considered
✓ Final Decision
We shifted to a Side-by-Side Live Rendering layout. As the user types, the right pane instantly renders a pixel-perfect mockup.
✓ Why This Option Won
Modal previews solved the visual anxiety but disrupted the user's flow. Users had to repeatedly close the modal to edit typos. Side-by-side provides a continuous, frictionless validation loop.
✓ Tradeoffs
- Maintenance Overhead: Requires constant updates to our CSS if native social networks change their layouts.
- Screen Real Estate: The layout feels cramped on 13" laptops, requiring complex responsive breakpoints.
✓ Business Impact
Reduced post-creation abandonment by 40%. Built instant user trust, making the platform feel "premium" and responsive.
MVP Scope & Product Roadmap
Every item in or out of the MVP has a documented reason. We don't defer features because of time — we defer them because the data to make them well doesn't exist yet.
What ships in MVP — and why
These 5 capabilities were selected because removing any one of them makes the product non-viable.
Without account connection, the product is literally empty. Users can't schedule, preview, or publish anything. It's not a feature — it's the prerequisite for every other user action.
Our entire value proposition is automatic publishing. Without OAuth, we cannot fulfil a single unit of that promise. This is the gateway to activation, retention, and ultimately revenue.
Instagram's Graph API is the most mature and well-documented of all major social platforms. Building the OAuth token lifecycle (connect, refresh, revoke) here sets the pattern for every platform we add in Phase 2.
This is the product. The entire reason a creator switches tools is to stop manually posting. If a scheduled post doesn't go out automatically, we've failed the core contract and they will leave.
Our 99%+ publish success rate is the primary metric behind Pro plan upgrades. Agencies won't pay without this SLA. Every missed post is a churn event before we've had a chance to demonstrate value.
Redis-backed job queues with exponential backoff and idempotency keys are the right architecture for this problem. Building this correctly once creates the reliable backbone that every future platform integration will use.
The blank caption field is the #1 drop-off point. Creators spend 30–40 minutes per caption — time they don't have. The "aha moment" in prototype testing happened in 90 seconds when users saw a ready-to-post caption generated from their image.
This is what separates us from Buffer and Hootsuite. AI captions are our primary acquisition hook and the feature most cited in user interviews as the reason they'd switch from an existing tool. It drives activation, not just delight.
Using the OpenAI API via a thin service layer keeps this stateless and cost-per-use. There is no training data dependency in v1 — we call the API, stream the output. Simple, fast, proven, and replaceable if a better model emerges.
90%+ of posts include a visual. Without a media library, users must re-upload the same assets every time. For agencies managing brand assets across clients, this is a hard blocker — not an inconvenience.
Agencies evaluating tools immediately check "where do my assets live?" A media library is table stakes for the Agency plan. Without it, we can't compete for the $49/mo tier that funds long-term growth.
S3-compatible object storage with per-account namespacing is the correct pattern. Building this in v1 avoids migrating file storage later — a notoriously disruptive operation in production systems.
A single missed post is a trust-destroying event — especially for an agency that promised a client their campaign would go live at 9am. Users won't give us a second chance after a silent failure during a critical window.
Without automated retries, we can't offer any SLA. Without an SLA, we can't charge Pro or Agency prices. Retry logic and failure alerting are what transform a "scheduling tool" into a "publishing platform" that justifies a subscription.
Exponential backoff (1m → 5m → 15m) with a 3-attempt max prevents hammering a rate-limited API while still recovering from transient failures. Idempotency keys ensure no duplicate posts. Failure state is persisted for audit logging.
What was deliberately excluded — and when it gets built
Every deferred item has a documented trigger. We don't revisit these until the data says the moment is right.
Building 4 additional OAuth flows, rate limit systems, and media format handlers simultaneously would add 12 weeks to the MVP. We'd ship nothing well in an attempt to ship everything. A stable v1 on one platform generates more trust than an unstable v0.5 on five.
The queue engine, OAuth token lifecycle, and publishing worker are built as platform-agnostic abstractions. Adding a new platform in Phase 2 means writing one new API adapter — not rearchitecting the system. The modular monolith was designed for this exact moment.
Start when "missing platform" accounts for >25% of churn reasons OR when NPS exceeds 50 and we have a stable D30 retention baseline. Whichever comes first.
Meaningful posting-time recommendations require at minimum 3 months of per-account engagement history. Building the model before the training data exists produces noise, not insight — and damages user trust when recommendations underperform.
Timing is the single biggest lever on content performance for creators. A tool that tells you when your audience is online, not just how to schedule — is the step from "useful" to "irreplaceable." This is the Phase 3 retention hook.
Start when we have a minimum of 90 days of engagement data from at least 500 active accounts. Data quality is the gate — not calendar time.
Multi-user workspaces, role-based access control, and approval workflows add 4–6 weeks of complexity. Our MVP persona — the solo creator and small agency owner — doesn't need this yet. We must prove the core solo loop before building a layer on top of it.
Team collaboration is the gateway to the enterprise and mid-market agency segment — contracts of $200–$500/mo per workspace. This is not a feature addition; it's an entirely new revenue tier that changes our go-to-market strategy.
Start when Agency plan accounts represent >30% of MRR, or when 3+ enterprise prospects cite "no team access" as the primary blocker to signing. The market will tell us when it's time.
Glossary
| Term | Definition |
|---|---|
| Idempotency Key | A unique string used to prevent duplicate publishing if a job is accidentally run twice. |
| Exponential Backoff | A strategy where the wait time between retry attempts increases exponentially (e.g., 1m, 5m, 15m). |
| IANA Timezone | Standard timezone format (e.g., "America/New_York", "Asia/Kolkata") used for localization. |
| Soft Delete | Marking a database record as deleted using a timestamp instead of physically removing it. |
| JWT | JSON Web Token, used for stateless API authentication. |
Frequently Asked Questions
Q: What happens if a user's Social OAuth token expires
while posts are scheduled?
A: The background worker will detect the
invalid token, mark the job as Failed, and send an immediate email/in-app notification
to the user to reconnect their account.
Q: How are daylight saving time (DST) changes
handled?
A: Since we store publish times in UTC and use the server's
IANA timezone library to convert from the user's selected timezone, DST shifts are
handled automatically without user intervention.
Q: Can users publish Carousels?
A: Yes. The
UI allows uploading up to 10 images/videos per post. The publishing worker uses the
Platform APIs's carousel endpoints to group the media.