AI product
Posting was never the hard part.
indyrect turns work you've already done into posts worth reviewing. Most of the decisions that mattered were about what it refuses to do.

- The problem
- People who build things rarely post about it, because turning rough notes into something a stranger understands takes effort.
- What I built
- An AI workspace that turns rough notes, screenshots and voice notes into finished posts.
- The result
- It's live at indyrect.pages.dev, and it works without any Meta API access.
How I built it
The problem
Builders ship every week and say almost nothing.
Founders and makers ship, decide and learn things every week, and almost none of it becomes something anyone else sees. The usual diagnosis is that posting is hard.
It isn't. Pressing publish takes a second. The effort goes into turning a commit message or a half-written note into something a stranger would understand. That is the part indyrect is for.
What I got wrong first
It started as an Instagram manager.
The first version was an autonomous Instagram content manager. That tied the whole product to Meta approving a public app, and that is a queue an early product cannot control.
Before going further, I read a funded competitor's shipped JavaScript instead of their marketing. Roughly 2.7MB of production code, and zero hits for carousels, scheduling or publishing. They analyse reels you have already shot. They never post anything for you.
So the gap was in making the finished asset. Posting it was the easy end. In September 2026 I repositioned indyrect as a creative workspace: rough notes, screenshots and voice notes in, finished assets out. Instagram is now one output, and the product no longer depends on it.
$ grep -c carousel bundles/*.js 0 $ grep -c autoPublish bundles/*.js 0 $ grep -c scheduler bundles/*.js 0 $ grep -c generateImage bundles/*.js 0
What I built
I wrote a checker that looks at the page.
Generated design has a recognisable look: default indigo, emoji icons, invented statistics. I ported OpenDesign's craft rules into every generation and left their trademarked systems out.
Their linter reads HTML source, and that couldn't catch my actual failures. Half of what indyrect makes is a fixed-size panel, where a long headline runs off the edge instead of wrapping. So my checker measures the rendered page in the browser.
Measures the rendered result
It finds overlapping text, content outside its frame and rules the parser rejected. It measures geometry, because regex can't see any of that.
Rules where a model would invent
The status summary is rules-based on purpose. Ask a model to summarise flat numbers and it invents momentum.
Carousels in the browser, reels on Fly
Workers can't run a browser or ffmpeg, so each format renders where it can.
Platform-neutral from the schema up
Workspaces, artifacts and memory never assumed Instagram. That is why the pivot was cheap.

What is not done yet
The pivot is half shipped.
Listed here so you can weigh the rest of this page against it.
- The live landing page still talks about posting. The workspace positioning is decided but isn't on the site yet.
- Sketch to design, the part meant to set indyrect apart, does not exist yet. The plan was image-to-image on Workers AI. I tested every available model, and none of them actually use the input image, so it needs another route.
- Instagram publishing works. It now sits behind a Launch step as one channel, where it used to be the centre of the product.