← Back to list

How I Built It

This essay is not AI generated but almost every thing I built or used for this project was.

Alexander Adam · 2026-04-14 20:00 · 5 claps · 7.8 min read
#jiu-jitsu #ai #google-gemini #google-antigravity #ios-development
Open on Medium ↗
Wiki topics: LLM · Large Language Models AI · AI · General 📱 · Mobile Development ✍️ · Writing & Creative

How I Built It

This essay is not AI generated but almost every thing I built or used for this project was.

I recently published the first version of passion project I’ve always wanted to complete but never really the time to build outside of work and life balance. Its an iOS App to manage and track your Jiu Jitsu training. With tools like Gemini, I was able to make that into a reality.

https://linktr.ee/bjjgp

The Core Project Synopsis

I don’t want to get into the weeds of the purpose of this app here but long story short, the app allows the user to organize and build their Jiu Jitsu game plan and the ability to log training sessions. It’s not a technically impressive app. At the end of the day it’s nothing more than a few CRUD operations to a database, but so is Zillow so there’s that. Designing and building this application was a cross section of two of my favorite hobbies; Brazilian jiu jitsu training and software development, more specifically the Apple iOS platform and ecosystem.

This was also a great opportunity to learn how to leverage many different agentic tools and practices into something practical that I’ve always wanted to build but never had to the time. This truly was a bucket list item to get an application published to the Apple iOS App Store. Now that first version is published, I’m excited to keep iterating on this app seeing what it can grow into and I use continue to leverage agentic tooling and how that ecosystem evolves.

Anti Gravity/Xcode

For the IDE I used a combination of Google’s Anti-Gravity IDE and Apple’s Xcode IDE. Initializing a project with Xcode is fairly routine and easy to run through with the launch process, no need to waste tokens (or water) on doing this. Once the base of the project is setup, that’s when I switch to Anti-Gravity for the general development with the agents. Throughout the whole process it would be a back-and-forth between Xcode and AG using the right tool for the job. Xcode was primarily used for building the project, running in the simulator, debugging the project in runtime, deeper intellisense or what-ever Apple calls that, importing certain assets, and customizing parameters of the project itself. Anti-Gravity was where I would prompt the agents for what I needed to build, ideas I wanted to discuss with the council of agents (more on that below), where I would import Skill that I downloaded (more on that below), and integrate with GitHub for committing my changes and drafting detailed commit messages since the prior commit (even small details that I forgot about “oh yeah, we did tweet that too”).

Agent Council and Skills

This part is still a learning experience for me and an area I need to learn more how to fine tune. I leveraged a strategy that I’ve seen people post on where you instantiate a collection of Agents with their own MD files of instructions, personalities, and perspectives. Then these agents would form the Council (not the console, that’s different) and I would bring up ideas to the council for discussion. Each agent was an SME on a different aspect of the project ranging from SwiftUI SME, Apple HIG SME, Data Architecture SME, and a Jiu Jitsu SME. In their respective MD files I also gave them resources to reference for their baseline knowledge.

The main purpose of this setup of multiple agents instead of using one main agent for everything is to narrow the context window for the agentic platform. This also helped me have specific subject conversations with the agent about troubleshooting problems.

In addition to Agents, it was important to leverage Skills that I included in the project as well. The main skills I used were related to SwiftUI development and GIT best practices. There are many different site the have a collection of Skills you can search for that help narrow the context window on what you are trying to achieve.

Google Sheets

I stumbled upon a maybe obvious feature of Google Sheets to build the Moves Library, more specifically the description of each move that would go into its specific page. In the past I would have to spend a ton of time writing up a few sentences about each move (90+). Now I was able to create a Google Sheet with the following columns:

  1. Primary Key
  2. Position Category (Standing, Mount, Side Control, etc)
  3. Offense or Defense
  4. Position Name
  5. Description

In the field for column E(5), I was able to give Sheets a parameterized AI prompt to reference items in the associated row to execute it prompt against with:

In column E, I add the following formula:

=AI(“You are a jiu jitsu blackbelt, write a description of the move in &D1& using &B1% and &C1& for more context about the move you are writing about. You should write in a markdown format with a three section. The sections are Description, Breakdown, and Tips. Keep it under 200 words.”)

Than I took that cell and dragged it down the length of the spreadsheet so this was applied to every column. I can’t stress enough how clutch the =AI formula in Google Sheets was for this. If I didn’t have this feature, or LLMs in general, this would have taken a very long time to write up or costly to contract out to write all those descriptions. I’ll have to maybe refine that very prompt in the future and reproduce those descriptions but for now, this worked out great.

Just want to stress, the purpose of the feature and the app in general isn’t for you to “learn” jiu jitsu. Its the ability to put data points behind your training and organize your game plan. The descriptions are more of a reference point to what the move you are tracking is if the name may be conflated with something else.

I eventually took that Google Sheet and had Gemini convert it into a structured JSON body which is what is fed into the database upon initialization of the app. This ended up causing a bunch of problems with the database getting seeded multiple times making the move library a mess but it was just bug I had to deal with with the implementation logic.

Gemini CLI

It goes without saying but when creating an application, and more specifically one for the iOS App Store, there is more to the project than just coding. Especially in the context of marketing the app and creating certain assets.

Using GeminiCLI, I was able to integrate a really awesome agent skill I had found on Reddit for making the App Store screenshots.

https://github.com/ParthJadhav/app-store-screenshots

With this tool I was able to give a structured prompt based on what the skill has explained it needed. The prompt was more related to what kind of look and feel I wanted for the screenshots including colors, font, themes. I also had to provide a path to the directory in which my screenshots were stored. I had to run this a few teams to get better results as I refined the prompt but it was something that would have taken me forever to do before as I would have had learn how to produce these types of images with overlays, text, etc. Since I’m still in the whole Gemini ecosystem, Gemini had a bunch of context about my app already because of AntiGravity, that I didn’t have give it specifics about the app when creating the screenshots.

In a future release of the app, I’m going to add localization where the app is translated into multiple languages. This same utility also supports localization so I can have the screenshots translated as well. Again, another countless example of something relatively do-able before all this tooling but turns into something I completed in less than hour instead of having to spend days learning how to use new tools I’ll only need for brief periods of time every few years.

One thing I didn’t love about this part and something I need to be more conscious of in the future is giving a skill I downloaded off GitHub free reign to just install a bunch of node packages and python libraries without vetting what it was requiring. In theory it is just confined to its specific workspace but it felt irresponsible on my part.

NanoBanana

Two areas that NanoBanana (Gemini’s image generating tool) came in perfect was for the app icons and my Instagram posts that I be posting for promoting the app. The app has a feature where you can change your app icon based on your belt rank so NanoBanana gave me the ability to provide five versions of the app icon PNG with a different belt color (white, blue, purple, brown, and black). This wasn’t perfect but it did the job. I think this is something I can work on refining more in the future, but for now what I generated is doing the job good enough.

Reddit

This part wasn’t really AI based but important to reference. Subreddits based on iOS Development were incredibly helpful. One was navigating Apple’s App Store Connect system for Developers to upload their app for all the different metadata and app store approvals. So many people over the years have posted questions and debates about different questions regarding App Store Connect that every issue I had on there (and there were many), there was a relevant post on Reddit about it. That’s all I have to say about Reddit. I got me out of a lot jams. One other interesting thing was there were details I could only find on Reddit about what Apple needed for metadata that Apple didn’t have documented anywhere.

Gemini

All this was with Gemini essentially but I did leverage the Gemini chats for a lot of discussions around features and implementation planning. I also used Gemini to reach debugging efforts that I felt the AG based agents were spinning their wheels in the mud on.

Moving Forward

Some areas I want to keep growing in with leveraging AI tooling in my app are more integrated automations. Some examples of this include leveraging MCP capabilities to deploy my app for submissions to the app store. Other examples I plan to expand on are support monitoring with something like Open Claw. In this scenario I’d have open claw monitor the inbox that receives the Google Forms support submission and vet the response to me.

I’d love to explore is Open Claw monitoring the inbox for when a update submission is approved by Apple, it drafts a social media post to share on IG containing details about the current release. Other areas I need to expand on telemetry data which would also be a great opportunity to leverage other agentic tooling around usages.

Additional, I’ve been managing the project feature ideas and bugs via a kanban board on Trello. I could see a reality where the card description is used as the AI prompt. When a ticket is moved to the development column, it activates the LLM to read execute as a prompt to the project. This one im a little excited to dive into because I really to really be in-tune with what the agent is developing and reviewing everything in detail.

If you want to keep up with updates to this app, I would recommend following the IG page. I’ll be sharing updates to the app there as posts. https://www.instagram.com/jiujitsugameplan/

I would highly encourage anyone to leverage this new era of AI tools to build out their passion projects. It just takes a little bit of setup and googling. This was a labor of love combining two of my biggest hobbies. I’m incredibly thankful for the opportunity and ability to do this and I’m looking forward to building out the many features in my backlog and the handful of other app ideas I have.

If you want help using any of these tools I called out here feel free to reach out and I’d love to help.


메타데이터
post_id
4bc95d3f2e75
slug
how-i-built-it-4bc95d3f2e75
url
https://medium.com/@AbuYacoub87/how-i-built-it-4bc95d3f2e75
canonical_url
https://medium.com/@AbuYacoub87/how-i-built-it-4bc95d3f2e75
author_url
https://medium.com/@AbuYacoub87
status
ok
fetched_at
2026-06-09 15:54:22