What are the biggest wastes in your life?

Startup automation that boosts productivity by 200% (1)
DelightRoom's avatar
Jan 22, 2025
What are the biggest wastes in your life?

Startup automation that boosts productivity by 200% (1)

Clothes you bought but never wore

A bus you missed by 10 seconds

Mileage points that piled up and expired

Coupons you couldn't use right before the deadline

When it rains the day after you finally washed your car

And lastly,

A 5 million KRW Mac Studio sitting around unused after purchase

Hi, I'm Ryan, an engineer on the DARO team at DelightRoom developing ad SDKs to maximize ad monetization. I develop our iOS and React Native SDKs.

It's been a year since I joined DelightRoom. On my very first day, the thing that caught my eye the most was a powered-off Mac Studio sitting on a desk. 24-core CPU, 60-core GPU, 32-core Neural Engine... anyway, it was maxed out with top specs. It had been purchased to serve as a CI/CD machine but wasn't being used at all. What a massive waste.

Introduction

I'd like to share some of the fun projects I've worked on since joining DelightRoom, starting from CI/CD all the way to building a user ticket analysis system using a Slack bot. I'm not sure how many posts this series will take, but I'll share the automation code after writing the final post.

Setting up a CI/CD environment

I built a CI/CD environment using this machine. We went with self-hosted GitHub Actions and used fastlane.

I added various tasks like pr_check, firebase, testflight, and appstore deploy.

GitHub Actions is so well-made that with just a little time investment, I was able to build a stable CI/CD pipeline. All you need to do is add self-hosted to runs-on.


jobs:
  build:
    runs-on: [self-hosted, macOS]
...

The project keeps evolving as various GitHub Actions are added and removed.

How should we trigger GitHub Actions?

I struggled with how to trigger deployments. At first, I used gh workflow run in the terminal. This was essentially just delegating the deployments we used to run on our personal machines over to the CI machine. But it was inconvenient. Sharing deployment statuses was especially a pain. I also tried using the Shortcuts app, which seemed cool since you could trigger deployments via Siri, but it wasn't a method that actually helped boost productivity. I thought it would be great if we could trigger deployments, monitor the status, and share the results right within Slack.

gh cli, Shortcuts app

So, I ended up building a Slack bot. Its name is Rocket 🚀. You can select the branch you want to deploy, the version, and the members you want to tag. Once you deploy, you can check the entire deployment progress, and every process runs automatically.

I used fastlane to fully automate everything from submitting to App Store review all the way to deployment. Using the App Store Connect API, we can even monitor app review statuses and rollout percentages. I made sure all the information can be quickly accessed in one place.

Various tasks the Slack bot handles

We also added a feature that uses the OpenAI API to analyze and summarize user feedback, then sends it to a Slack channel. And using the Function Calling API, we made it possible to write DB queries in natural language.

Natural language Query

Slack bot tech stack

For the server, I used Cloudflare Workers. For the language, I used TypeScript. We are using Zendesk, the App Store Connect API, and the ChatGPT API, along with Cloudflare's D1 DB.

Up next

In the next post, I'll share a detailed implementation guide, step by step.

"Is the App Store review for this version done?"

Share article