01
The problem
A brand running social media is holding four disconnected tools: a scheduler, a link-in-bio page, a spreadsheet of creators it has worked with, and a chat thread where the actual decisions happen. A freelance creator is holding the mirror image — a portfolio somewhere, pitches in DMs, and invoices in a notes app.
Both sides are describing the same transaction from opposite ends, and no single tool holds it. The scheduler does not know who made the post. The marketplace does not know whether the campaign shipped.
“The gap was not another scheduler. It was that planning and hiring had never lived in the same system.”
02
The ten features that define it
- 01Tenant isolation — every brand workspace is separated at the data layer, not by a filter in a query someone might forget.
- 02Versioned content ideas — one idea branches into platform-specific versions (Instagram, LinkedIn, YouTube) that stay linked rather than becoming four unrelated drafts.
- 03Platform content specs — per-platform format rules held as data, so the editor knows what each network will accept.
- 04Best-time scheduling — posting windows modelled per platform instead of one generic 'optimal time'.
- 05Link-in-bio builder — templated bio pages with their own editor, and page views, clicks and email capture tracked as first-class records.
- 06Creator marketplace — gigs, bids, and bid messaging, so hiring happens where the work is planned.
- 07Campaign applications — brands post campaigns, creators apply, and the application history stays attached to the campaign.
- 08AI-assisted drafting with usage accounting — every AI call logged against a credit ledger, so cost is attributable per tenant rather than a surprise at month end.
- 09Workflow stages — content moves through explicit states rather than living in someone's head as 'nearly ready'.
- 10Auto-reply rules and unified messaging — inbound conversations handled in the same system that produced the post.
03
Architecture
Laravel 12 with Inertia and a React 18 front end in TypeScript — a single application rather than a separate SPA and API, which keeps authorisation on the server where tenant isolation can actually be enforced.
Why Inertia
A decoupled SPA would have meant re-implementing tenant scoping in a second place. Inertia keeps one authorisation boundary and still gives the editor the interactivity it needs.
- —AI usage is metered and logged per tenant, because an unmetered AI feature in a SaaS product is an unbounded liability.
- —Bio page analytics are separate models — views, clicks, and email captures — rather than counters on a row, so behaviour can be analysed after the fact.
- —Errors are captured to their own store, because a multi-tenant product cannot debug from one user's description.
04
Deployment
Deployed to a VPS behind Nginx with TLS, with scheduled work driven by a cron entry point rather than a always-on worker — appropriate for the load, and one less process to keep alive.
The marketing surface is server-rendered on dedicated routes for each audience — brands, creators, and freelancers — so the product is discoverable by the search terms each side actually uses. The platform is live at sumudra.com.
05
What it changes
- —One idea becomes platform-native versions without becoming four drafts nobody can reconcile.
- —Hiring a creator happens inside the workspace where the campaign already lives.
- —A link-in-bio page stops being a dead end and starts reporting what it did.
- —AI cost is attributable per workspace, so the feature can be priced rather than absorbed.
