Case study, marketing
LobeStack.
A marketing platform that studies a brand, publishes for it, and learns from what the posts actually did.
The problem
A proven market with no quality leader.
Before writing any code we tore down five products in this category: pricing pages, feature docs, funding data, and every review we could find on G2, Trustpilot, AppSumo and the BBB. Small teams in this space were already at $0.7M to $3.6M in annual revenue. Their customers were visibly unhappy. Saturation looks like happy customers and price wars, and this looked like demand outrunning quality.
The same five complaints turned up in all five products, so the market wrote our roadmap for us: generic AI content that never improves, posts that fail to publish silently, billing dark patterns, credit meters that run out mid month, and support that goes dark.
The one complaint we built the whole product around: nothing in this category learns. A tool generates the same quality of content in month eighteen as it did on day one, because nothing feeds performance back into what gets written next.
What we built
A brand goes in as a URL. What comes out is a month of posts, published on schedule, measured against revenue.
Brand study
Two minutes from a URL
Scrape the site, read the socials, pull competitor feeds, mine customer reviews for the words customers actually use. The output is a structured brand profile: voice, rules, archetype, audience, products, content pillars. Every later step reads from it, so nobody re-briefs a tool.
Swipe to approve
Approve, reject, edit, save
A deck of generated posts, each showing its target platforms and the slot it would take. Approving one assigns the next free queue slot. Rejecting one is not a delete: it is a signal, stored as a structured preference that changes the next batch.
Publishing
Eight platforms, one queue
LinkedIn, X, Instagram, Facebook, TikTok, Pinterest, Reddit and Bluesky. Calendar with drag to reschedule, approval gates before anything goes out, per platform validation on length and media before the post is ever accepted.
Measurement
Tied to money, not vanity
Daily metrics per post, best time learned from a brand's own results, tracked links and Shopify conversions so a post can be traced to revenue rather than to impressions.
Eva
The marketer in the product
A prompt bar on every screen with real control of the product, plus a comment inbox that drafts replies in the brand's register behind an approval gate. It answers questions about performance using the same data the dashboard shows.
The close
Results write the next brief
Performance and every edit or rejection are written back into the brand profile as the brief for the next batch, and pending suggestions the new signal affects get flagged for regeneration. This is the part nothing else in the category does, and it is the only reason the product gets better with use.
Inside the content engine
Nine agents, each with one job and a written contract. A post has to survive all of them.
Step one
Brand analyst and competitor scout
Builds the brand profile and reads what rivals are actually posting, so the strategy has something real to sit against.
Step two
Creative director and content engine
Plans concepts across pillars and formats, then writes each one platform native, with the awareness stage of the reader as an input.
Step three
Image designer
Most visuals are branded HTML templates typeset in the brand's own fonts and rendered to PNG. Deterministic, on brand, cheap. Photography goes through a diffusion model only when a photo is the right answer.
Step four, the review board
A marketing council sits over every batch, with a designated dissenter.
Four advisor lenses critique each post through their own documented frameworks, and one seat is required to disagree so the board cannot become a mirror. The council reports a single most valuable finding per post with the exact line to change. A flag only blocks the post when the flaw is material: wrong awareness stage, no stakes, generic and invisible, or hype that spends trust. Taste is not grounds to block.
Step five, the tell filter
One contract stops the writing from sounding generated.
A single set of hard rules is injected into every prompt that writes customer facing words: no dashes, a banned vocabulary list, no "not just this, it's that" constructions, no rule of three padding, varied sentence length, and a number or an object instead of an adjective. A post scorer runs after it. The rules apply to us too, including this page.
How we worked
Five milestones, two weeks each. Techsity was customer zero before anyone paid.
Skeleton
Monorepo, auth, workspaces, design system, brand ingestion.
Generate
Strategist, copywriter, template renderer, swipe deck, content grid.
Publish
Provider layer, connect flows, scheduler worker, calendar. Platform app reviews started here because they are the long pole.
Learn
Metrics sync, dashboard, best time learning, feedback to regeneration, Eva.
Harden
Billing, failed post handling, multi workspace, white label, direct platform APIs landing one at a time.
The rule that saved us weeks
We ran Techsity's own publishing on the prototype before selling it. If it could not hold our voice, it was not shippable. Two features died that way.
The decision we would not outsource
Scheduling state stays in our database. Providers only ever hear "publish now". That single line of ownership is why a provider swap is not a customer facing event.
Stack and architecture
Everything above the attribution layer is replaceable. That was a design goal, not an accident.
Application
Next.js 15 and TypeScript
App Router, Tailwind v4, a restyled shadcn base in a shared design system package, installable as a PWA with push.
Data
Supabase Postgres, Drizzle, RLS
Row level security keyed to workspace on every table, so tenancy is enforced by the database rather than by remembering to filter a query.
Models
Claude, two tiers
The stronger model for strategy and copy, the cheap one for classification, batched where latency allows. Visuals are typeset renders rather than image prompts wherever a template will do.
Publishing
One provider interface, four backends
Connect, publish, fetch analytics, validate. An aggregator runs in production today, a second is implemented behind a flag, and direct platform APIs land one platform at a time with no UI change.
The part we own outright
The scheduler, because it is the thing customers lose trust over.
A cron tick every minute claims due posts with a locking select that skips rows another worker already holds, so two workers can never publish the same post. Every post carries an idempotency key. Failures retry three times with backoff, then surface to the user as a failed post rather than disappearing. Queue slots start as sensible per platform defaults and move toward the times a brand's own audience actually responds.
What it produces
Two images the engine made for a sample coffee roaster, from that brand's profile alone. No art direction in the loop.

Generated post for a single origin release. The number on the scale is the specific detail the brief asked for.

Same brand, opening hours post. Both sit inside the roaster's own palette and register rather than a stock template.
Drop a product screen here: swipe deck, calendar, or analytics
Where it stands
Counts from the running build. Customer and revenue figures go up when we can stand behind them publicly.
8
Platforms published to
9
Agents in the content pipeline
2 min
From a URL to a brand profile
60 s
Scheduler tick, with three retries on failure
Trust posture
No credit meter, no card for the trial, flat price per workspace. Three of the five complaints in this category are billing complaints.
In production
Live at lobestack.com, running Techsity's own marketing, operated by the people who built it.
Founder's note
Generating content was the easy half. Getting last month's results to change what the system writes next, with no human copying numbers into a brief, is where the product actually is.
Known gaps, written down
Four things this product does not do yet. Our own teardown found them, so they belong in the write-up.
Verify that a post went live
We record what each platform returned, but we do not yet re-check the post minutes later. Silent failure is the category's worst trust killer and this is the cheapest fix on the list.
Spokesperson video
Our video output is composed slideshow, not a person talking to camera. Two competitors do this and customers ask for it.
Launching paid campaigns
We produce ad creative and hand off. End to end campaign launch waits on platform app review, which is measured in weeks, not sprints.
Product catalogs
We read a website well. Turning a full store catalog into a content pipeline is the next real piece of work for commerce brands.
Next case study
Averil
Career software built around the candidate, never the recruiter.
Build with the lab