Avirup Chakraborty

01 — Superprofile · June 2026

AI Content Planner and Studio

Role
Sole designer — research through to frontend
Scale
50,000+ creators on the platform
Status
Built and live

01

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.

02

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.

A research session. Faces and participant names are blurred deliberately — these were creators on the platform who agreed to a product interview, not to appear on a portfolio.
Fig. 01A research session. Faces and participant names are blurred deliberately — these were creators on the platform who agreed to a product interview, not to appear on a portfolio.Creator interviews, 2026

03

Two decisions that scoped the product

Both were made before a screen was designed, and both were decisions about what not to build.

Decision A

The AI plans and writes. It does not make the visuals.

What was true
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.
What I chose
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.
What it cost
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.

Decision B

An output is the parts of a post, shaped by format — not an idea

What was true
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?
What I chose
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.
What it cost
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.

The Studio. Every idea names where it came from — a top Reel, a past post, a content pillar — so nothing arrives from nowhere.
Fig. 02The Studio. Every idea names where it came from — a top Reel, a past post, a content pillar — so nothing arrives from nowhere.Content Planner, live build
A generated Reel: hook, beats, and the shot list underneath. Not a suggestion — the parts you need to film it.
Fig. 03A generated Reel: hook, beats, and the shot list underneath. Not a suggestion — the parts you need to film it.Content Planner, live build

04

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?

Wireframes v2. The landing that argues the product before the product exists — and a wireframe navigation control in the corner, so the flow can be walked.
Fig. 04Wireframes v2. The landing that argues the product before the product exists — and a wireframe navigation control in the corner, so the flow can be walked.Wireframes v2, reviewed build

05

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.

The landing. It has to make the case for a surface the creator has never seen, so it leads with the outcome rather than the feature list.
Fig. 05The landing. It has to make the case for a surface the creator has never seen, so it leads with the outcome rather than the feature list.Content Planner, live build
Step 1. Pick the account to learn from. The brand name auto-fills from it, and accounts already attached to another brand drop to the bottom, disabled, rather than failing on submit.
Fig. 06Step 1. Pick the account to learn from. The brand name auto-fills from it, and accounts already attached to another brand drop to the bottom, disabled, rather than failing on submit.Content Planner, live build
The wait, which is doing work and says so — reading captions, formats and themes. Naming what it is reading is what makes the next screen credible.
Fig. 07The wait, which is doing work and says so — reading captions, formats and themes. Naming what it is reading is what makes the next screen credible.Content Planner, live build
Step 2. Everything the AI learned, stated plainly and editable — voice, niche, cadence, topics. Correcting it is part of the flow, not a settings screen.
Fig. 08Step 2. Everything the AI learned, stated plainly and editable — voice, niche, cadence, topics. Correcting it is part of the flow, not a settings screen.Content Planner, live build
Step 4. Three finished scripts, before the creator has typed a prompt. The payoff is in the setup rather than in a marketing claim about it.
Fig. 09Step 4. Three finished scripts, before the creator has typed a prompt. The payoff is in the setup rather than in a marketing claim about it.Content Planner, live build

06

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.

The Calendar. Scheduled, published, publishing and one failed post, read off the month grid without opening anything.
Fig. 10The Calendar. Scheduled, published, publishing and one failed post, read off the month grid without opening anything.Content Planner, live build
Week view, for the horizon a creator actually plans against.
Fig. 11Week view, for the horizon a creator actually plans against.Content Planner, live build
The same queue as rows, for when the month grid is the wrong shape for the question.
Fig. 12The same queue as rows, for when the month grid is the wrong shape for the question.Content Planner, live build

07

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.

Decision C

The inputs are composed, not typed

What was true
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.
What I chose
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.
What it cost
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.
From a topic. Chips come from the creator's own pillars, then format, platform and language — with the free-text prompt last and optional.
Fig. 13From a topic. Chips come from the creator's own pillars, then format, platform and language — with the free-text prompt last and optional.Content Planner, live build
From a past post. The same generator, seeded from something that already worked — the picker is ordered by views, so the choice is evidence rather than memory.
Fig. 14From a past post. The same generator, seeded from something that already worked — the picker is ordered by views, so the choice is evidence rather than memory.Content Planner, live build

Decision D

The output is a document, not a chat log

What was true
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.
What I chose
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.
What it cost
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 artifact holds the middle — brief, beats, and its own tabs for audio, setup, caption, cover and first comment. The conversation is a rail on the left, and it is the script that changes, not the thread.
Fig. 15The artifact holds the middle — brief, beats, and its own tabs for audio, setup, caption, cover and first comment. The conversation is a rail on the left, and it is the script that changes, not the thread.Content Planner, live build

Decision E

The preview is the real thing, not an impression of it

What was true
A caption that fits in a neat preview box and then truncates on Instagram is worse than no preview, because the creator trusted it.
What I chose
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.
What it cost
The previews are tied to platforms that redesign themselves on their own schedule, so this is maintenance the team now owns forever.
Composer with an Instagram account selected. The preview is the platform's own furniture, down to the browser window and the suggestions rail.
Fig. 16Composer with an Instagram account selected. The preview is the platform's own furniture, down to the browser window and the suggestions rail.Content Planner, live build

Decision F

The composer stays shut until an account is chosen

What was true
Every field in the composer means something different depending on which account it is for — character limits, supported formats, whether Carousel is even available.
What I chose
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.
What it cost
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.
The gate. The fields stay in view so the shape of the task is legible, and the lock explains itself instead of just refusing.
Fig. 17The gate. The fields stay in view so the shape of the task is legible, and the lock explains itself instead of just refusing.Content Planner, live build

08

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.

Reversal 1

Two ways to delete, collapsed into one

What I built first
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.
Why it was wrong
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.
What I changed it to
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.

09

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.

Left to right: the week strip with post state on the dots; a post opened in full rather than in a popover; the list view, which travels almost unchanged because a list is already a column; and the composer, stacked rather than split and carrying the same account gate as desktop.
Fig. 18Left to right: the week strip with post state on the dots; a post opened in full rather than in a popover; the list view, which travels almost unchanged because a list is already a column; and the composer, stacked rather than split and carrying the same account gate as desktop.Content Planner, live build at 425px

10

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).
Fig. 19A marker, verbatim. It names the API, states what the empty case renders, and flags the thing that is easy to get wrong — that the landing is not gated on it.src/components/ContentPlanner/ContentPlanner.jsx

11

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.

← Back to Projects