AI Content Planner and Studio
- Sole designer — research through to frontend
- 50,000+ creators on the platform
- Built and live
The gap
Superprofile helped 50,000+ creators make money from an audience it never helped them feed. Payment pages, bookings, digital products, DM automation on Instagram — every tool in the product started after the post already existed.
There was no scheduler. No calendar. And nothing anywhere in it that helped a creator decide what to say. This project built all three — the scheduler, the calendar, and an AI studio for the part nobody had a tool for.
Most of what follows is about the third one, because that is where the research changed the plan.
Where the problem came from — and what it changed
Three inputs, in the order they cost anything.
Support tickets first, because they were already written and nobody had to be asked a leading question to produce them. 22% asked for a scheduler — the single loudest request in the queue.
Then twelve creator interviews, and this is where the plan broke. Creators were not failing to publish. They were failing to publish consistently — and what broke consistency was not a missing scheduler. It was not knowing what to post. The scheduler was just the thing they knew how to ask for.
Then secondary research — a teardown of what already existed. The tools built for LinkedIn and X generate a complete post end to end, image included.
The tickets and the interviews disagreed, and the disagreement was the finding. We built the scheduler, because 22% of a support queue is not nothing and a calendar is table stakes for a creator tool. Then we brainstormed our way to the thing the queue could not ask for — because nobody writes in to request an idea.

Two decisions that scoped the product
Both were made before a screen was designed, and both were decisions about what not to build.
The AI plans and writes. It does not make the visuals.
- Instagram and Facebook are visual-first: the Reel or the carousel is the post, and creators shoot their own footage — their face, their kitchen, their gym. The LinkedIn and X tools generate the whole artefact because on those platforms the artefact is text. Copying that model here would mean generating the one part of the job creators most want to own.
- Scope the AI to the blocker the interviews actually found — what do I post, and how do I say it. Ideas, scripts, captions. The filming stays with the creator, and it stays theirs.
- The product stops short of the thing a demo would show off, and it only works if the creator follows through: we hand them a script, not a post. I took that over generating fake visuals, which would have added real complexity to replace a creator's own USP.
The framing then did a lot of the scoping on its own. Once “we don’t make the visuals” was settled, a long tail of lower-value ideas fell away cleanly instead of being argued about one at a time.
An output is the parts of a post, shaped by format — not an idea
- Nearly every competitor hands back a generic idea. But a creator holding an idea and no script is standing exactly where they started, which raised the real question: would we just be one more tool doing what everyone else already does?
- Decompose every concept into the parts a creator actually has to produce, and shape them by format. A Reel comes back as a hook, a beat-by-beat script, an audio or voiceover suggestion and a shot list. A carousel comes back as slide-by-slide cards. A single post comes back as a lean caption. Each one carries its hashtags and a first comment.
- The generator now needs an opinion about what each format is, and those opinions age with the platforms. A generic idea would have been agnostic, cheap to build, and useless.
The part that makes this land is not the decomposition. It is that the platform’s AI already had the creator’s tone of voice and niche, learned from ingesting their Instagram account — so the Studio consumed a voice profile that existed rather than building one. Every part comes back sounding like them. That is the difference between an inspiration feed and something a creator can pick up and shoot the same day.


Where it started
Two rounds of wireframes, reviewed screen by screen, deliberately grayscale. The second round carries its own navigation control so a reviewer can move through the flow instead of being walked through it — which is the difference between a wireframe someone reads and one someone uses.
The grayscale is the point. Colour invites opinions about colour, and at that stage every open question was structural: does the Studio live inside the scheduler or beside it, and does a creator meet the calendar or the blank page first?

First run: the landing, and the four-step setup
A 0→1 has a specific problem at the front door: nobody has used this, so nothing about it is familiar, and the first screen has to argue for a product the creator cannot yet picture. The landing does that job — and then hands over to a setup flow whose only real task is to prove the claim before asking for work.
Setup is four steps. Pick the account to learn from, wait while it reads the recent posts, review what it learned, and group any other accounts under the same brand. Then it opens three finished scripts.
Step two is the one I care about. The voice profile is shown as four editable statements — who you are, your niche, your personality and voice, your posting cadence — with the topics it picked out already selected and changeable. An AI that tells you what it thinks you sound like and lets you correct it is asking permission. One that quietly assumes is going to be wrong somewhere a creator only finds out about in public.





Two surfaces, one nav item
We were building three things at once, and the real risk in that is shipping three products. If deciding what to post lives in one place and scheduling it lives in another, the creator has to carry the idea between them — hold on to it, go and open the calendar, and put it in by hand. That handover is exactly where the week goes.
So this is one nav item with two tabs. Calendar is the mechanics. Studio is the thinking. They share a brand, a voice and a set of accounts, and moving between them is a tab rather than a decision.
Both halves had to be complete on their own, or the tab would just be a place people never clicked. The Calendar carries month, week and list views, brand and account filters, and a composer that can publish now or schedule. Post state is on the chip itself — published, scheduled, publishing, failed — so the answer to did that go out? is on the grid rather than one click into a detail screen.



Four decisions in the build
Section 03 was about what the product is. These four are about how it behaves, and each one is in the same shape: what was true, what I chose, and what it cost.
The inputs are composed, not typed
- A prompt box is the fastest thing to build and the slowest thing to use. It asks a creator to know what to ask for, in a product whose entire premise is that they are staring at a blank page.
- The generator takes structured inputs: a topic chip from the creator's own pillars, a format, a platform, a language, and an optional free-text prompt at the end for anyone who does want it.
- A modal instead of a text field, and a ceiling on what can be asked for. A creator who already knows they want a 45-second Reel comparing two things, in Hinglish, with a stat in the second beat, has to assemble that through five controls instead of typing one sentence — and anything the chips do not cover has to go into the optional prompt at the bottom. That is a real cost, and I took it because the person this is built for is the one who cannot finish that sentence. The blank page is the problem; someone who knows exactly what to ask for does not have it.


The output is a document, not a chat log
- Conversational AI produces a transcript. A creator does not need a transcript — they need one script they can film, and the ability to change it without scrolling back through the argument that produced it.
- Generation produces the script artifact from Fig. 03, ready to approve. Refinement happens in a chat rail beside it, and the artifact is what updates. The conversation is the tool; the document is the product.
- More to build than a message list, and it only works because Decision B already committed to an opinion about what a script is. A chat log would have been agnostic and useless.

The preview is the real thing, not an impression of it
- A caption that fits in a neat preview box and then truncates on Instagram is worse than no preview, because the creator trusted it.
- The composer renders the destination's real chrome — the browser frame, the platform's own layout, the post card as it will actually appear — and switches between desktop and mobile.
- The previews are tied to platforms that redesign themselves on their own schedule, so this is maintenance the team now owns forever.

The composer stays shut until an account is chosen
- Every field in the composer means something different depending on which account it is for — character limits, supported formats, whether Carousel is even available.
- Nothing is editable until an account is selected. The form is visible but locked, with the reason stated where the fields are, and the preview says the same thing in its own pane.
- An extra click before the first post, and an empty state a first-time user meets before they meet the product. I preferred that to a form that quietly means something different once you answer question one.

One I reversed
This was built, used, and replaced. It is on the page because the reason only became visible after the first version existed — which is the honest description of most design decisions, and the part that usually gets quietly edited out.
Two ways to delete, collapsed into one
- Deleting a post asked which kind of delete you meant: take it off the schedule, or delete it from Instagram too. A second status, `deleted`, kept track of the ones that had been wiped from the platform.
- One of those choices is easy to undo. The other destroys something the creator has already published, and their audience has already seen. Those are not two options that belong in the same dropdown, and no wording made it a fair thing to ask in passing.
- One confirm, and it never touches what is already live on Instagram. The `deleted` status came out with it — a status nothing can reach any more is just a trap for whoever reads the code next.
Mobile is a different structure, not a smaller one
A month grid does not survive a phone — seven columns become seven slivers, and the thing a calendar is for stops working. So the mobile Calendar is not the desktop Calendar reflowed. There is no month view on mobile at all: a week strip carries the dates, and the posts underneath are a day-by-day list.
Dropping a view is the part worth defending. A month grid on a phone would have kept the feature list symmetrical and given the creator seven unreadable columns, and symmetry between platforms is not a reason for anything.

The handoff
I handed engineering a complete front end — 152 files and +25,440 lines — with the back end still unwritten. That could have gone over as mock functions that look like they work. Instead it went over with 60 TODO(backend) markers, each one naming the API it needs, in the exact place the call would go.
The rule I held to is that nothing fakes success. A mock returning a cheerful result is a bug an engineer inherits without being told it exists — and on a surface with this many empty states, the empty state is the thing most likely to be got wrong.
// Connected accounts — the single source of truth for the no-account states.
// TODO(backend): fetch the creator's connected IG/FB accounts from the accounts
// API; an empty array renders the no-account Calendar state. The landing is
// NOT gated on this — a creator with zero accounts can still enter (see below).
// Preview the no-account state with ?accounts=none (no external toggle needed).What I’d watch
Decision C is the one most likely to be wrong within a year. Composed inputs are right for a creator facing a blank page, and they are a ceiling for anyone who has used the product for six months. The optional prompt field is the escape hatch, and if it turns out to be where all the real usage goes, that is the product telling me the chips were training wheels rather than the interface.
And I would want to know whether the Studio actually feeds the Calendar. The whole argument for one nav item is that thinking and scheduling belong together. If approved scripts do not turn into scheduled posts at a decent rate, then the two tabs are sharing a header and not much else — and that is a structural problem, not something a better button fixes.
The research question stays open too. Twelve interviews said the blocker was ideation rather than scheduling. That was enough to bet the product on; it is not enough to be sure of, and the thing that would settle it is whether the creators who use the Studio post more consistently than the ones who only use the Calendar.
And one thing we designed and deliberately did not ship. An approved script could have gone straight into the composer on a single button — Studio to Calendar in one move, which is the shortest version of this product’s whole argument. It went to phase two.
The launch date was part of that, but it was not the real reason. An approved script is not a post. What the Studio approves is a hook, a set of beats and a shot list. What the Calendar schedules is media with a caption on it. Between the two sits the filming — the creator’s job, and days of it. A one-click handoff would have filled the calendar with scheduled posts that had nothing in them: either publishing empty, or sitting there looking ready when they were not. That is the same failure the account-health banner exists to catch, arriving by a different route.
The button only becomes honest once there is somewhere to hold a script that is waiting on footage — a state between approved and scheduled, with its own place on the calendar and its own way of chasing the creator. That state did not exist yet, and inventing it properly is a bigger piece of work than the button it would serve.