Rasel Jabbar

What has shipped so far

The first entry promised a dated record of what I tried, what broke and what I changed my mind about. This is the first instalment. It covers the two products that have shipped, Fig and Codeword, and I should say at the start that they aren’t the only things I’ve been building, only the ones that are public.

Fig is the older of the two. It’s an app for reviewing calls handled by AI agents, with the recording, the transcript and the context together in one place. The ideas behind it had been sitting at the back of my mind for years without going anywhere. What opened the door was ElevenLabs, a company that makes AI voice technology. I was looking at what they offered, the APIs in particular, which are the hooks other software builds on, and noticing what was available now. It was a small crack, and one thing led to another.

I started on 15 August 2026 under the working name ElevenLabs Call Explorer and renamed it Fig the same day, because I didn’t want the product tied to one provider, and because a name like Fig can mean whatever I want it to mean. It went live on Apple’s App Store on 8 November, twelve weeks later, and that number needs some context, because it wasn’t twelve weeks of Fig.

A working version was in TestFlight, Apple’s channel for trying an app before release, eight days after I started. After that the time was shared with a day job, which comes first because I have to make a living, and with several other projects that are still in flight. I think most of my free time went into all of this, which meant late nights, early mornings and a large part of the weekends.

I’m spelling this out because I’m sceptical of stories that make this kind of thing sound easy, and just as sceptical of ones that dress it up as hardship. When I was younger I believed most of what I was told, the way you do when you’re young and willing to chase anything, and some of it sent me down the wrong path and cost me a lot of time. A lot of those stories were maybe ten per cent truth and the rest sugar-coating. They give people false hope, and I don’t want to do the same to anyone reading this.

Fig’s share of that time went into the distance between something that works and something I’d put my name on: rebuilding it properly, letting people delete their account and download a copy of their data, encrypting the recordings, and going through Apple’s review more than once. It took way longer than I expected, and longer than it should have, partly because I don’t have all the processes in place yet.

Privacy took a good part of it. Fig holds recordings of real calls, so I spent quite a bit of time on how to protect that data, on the technical side and on the privacy policy itself. There were two aims. One was to handle people’s data with as much care as I can. The other was to protect myself, because if I fail them I’ve failed myself too, and it looks bad for me. I also wanted the policy to be useful to the person reading it and not something written to tick a box, so a lot of time went into simplifying the language, with no obfuscation and no coded wording, so that no one gets left out. The testing back and forth took time as well.

I don’t want to give the impression that Fig has got there. Putting my name on it is the standard I try to hold to, and I don’t believe Fig meets it yet. This version is the best I could do for this iteration, and there is plenty left to do. That is why IronLab is called a lab. A lab doesn’t claim to be perfect, it’s a place where you experiment and try things, and the work carries on from one iteration to the next. I think of all of it as an investment that I hope pays off one day.

The Android version is pretty much ready. What’s left is the deployment, and by the time you read this it is probably already available, so have a look at the Fig site at fig.ironlab.ai.

Codeword started very differently. I follow a lot of content creators on Instagram, and they often say “link in bio”. You go to the link in their profile and it points to their website, or to something else, and then you’re searching for the exact video they were talking about. It wastes time, and I’d known about the problem for a long time. The last time it happened I wasn’t in the best of moods, and when it irritated me again I thought, let’s try and solve it. It wasn’t a big project, so I thought I’d try to get it done.

I started on 21 October. Codeword lives at codeword.link and does one thing: you type the code from a creator’s post and land on exactly what they shared. It’s live, it’s free and you can use it straight away. Opening a code needs no account, and a creator can make their own page. I just haven’t done the marketing for it. The only thing to know is that I don’t scale it automatically, because it’s free, so if it ever fills the infrastructure it runs on, new people go on a waitlist while I decide whether to add more.

So one of them came from years of thinking and a trigger, and the other from a small annoyance that repeated often enough.

Nothing has surprised me since either of them went live, and the reason is simple: there are no customers using them yet.

What broke is easier to answer. I build these with AI doing most of the hands-on work. The main one is Claude, made by Anthropic, which did the majority of it. To give credit where it’s due, there were times I turned to Codex and ChatGPT, both from OpenAI, and to Grok, from xAI. I see no reason to hide any of that. If AI did most of the work, the honest thing is to say that AI did most of the work. The thing that disappointed me with Claude was regression, which is when something that was working stops working after a later change. It happened continuously, and it happened despite having tests in place. A lot of what failed was very basic, the kind of thing that doesn’t need extensive testing or great engineering skill to get right. That surprised me, because Claude did some amazing and sophisticated work on these projects, and then on rudimentary things it failed again and again. My frustration comes from that disconnect: something so powerful, able to pull off amazing things, failing at very simple tasks. It didn’t make sense to me.

The clearest example is navigation in the iOS app, which is about as simple as an app gets. It kept failing when it shouldn’t have. It would get fixed and then fail again, or get fixed in one place and fail somewhere else, sometimes in two or three places at once.

The question I kept asking is what I can do so this doesn’t happen again: what process, what prompt, what skill. I wasn’t particularly worried about navigation itself. I was thinking about it as a system, because whatever lets this happen in one place will let it happen in others, and I wanted to solve it at that level. I don’t have it ironed out. The AI has been helpful with that in some areas and not so helpful in others. I don’t think it gets fixed in one hit. It’s going to take continuous analysis and retrospectives, fixing the processes we have, defining new ones and building new tools and skills, and working it out as we go.

As for what I’d do differently, I can’t answer that honestly yet, because it depends on what comes out of analysing everything that’s been done so far. That analysis has started.