When Dan and I didn’t get into YC, we were more determined than ever to be scrappy, lean, and fearless about how we made BingoBoardz a success.

We knew that we were on to something because a technology like BingoBoardz was inevitable. You see, 14-28 year olds spend 3-4 hours a day playing video games, and that’s time taken away from traditional activities, like being out in the world, watching TV, or listening to the radio. Those are all the venues where local businesses would traditionally advertise, and they’re all going away. BingoBoardz was a disruptive technology that would bring local advertising into the world where people are actually spending their time — the virtual world.

Before we even tried for YC, we already had drop-in support for gaming engines like Unity and Godot. Game developers could easily create surfaces in their games where ads can appear naturally, like a billboard on the side of the road in a driving game, or the side of a building in a shooter. At runtime, we match the user with an appropriate ad from our inventory using realtime bidding. The twist is that players can then accept offers from the businesses they saw in the game to get in-game incentives. For example, you drive past a billboard for a local bakery in the game, then you can actually go to the physical bakery and if you buy something, you get a special item in the game. It’s a closed virtuous reward loop — gaming feeds local commerce feeds more gaming.

The challenge Dan and I were facing was making it approachable for local businesses, who were interested in reaching people through new channels, but weren’t very savvy technically. We decided to build a mobile app to handle that side, and that’s where Dan (who has zero technical knowledge) and I (with my gaming background) needed help.

Look — You already know where this is going because of my click-baity title. We were duped and some guy created a fake profile backed by an AI that actually built a pretty decent app for us. But in my own defense, I need to tell you how it happened. Not because I expect you to care, but because I need to get some things straight in my mind.

Like I said, we didn’t get into YC. We had about $50k we had raised from some guy Dan went to Business School with, who supposedly started the “Google of Latvia”. So with some cash to throw at the problem, we started poking around on LinkedIn for someone with a “non-traditional background” who might work for cheap or equity-only.

I found Kai when searching for iOS developers who had no college listed and no 3rd-level or higher connection to me. I figured anyone who was even remotely connected to me would want too much money because they would probably be in high demand. It wasn’t like some heavenly light shined upon his profile or anything — he was one of a few dozen people I reached out to that week, but he was also the only one who replied.

I said:

Hi, Kai!
I'm one of the founders of BingoBoardz, a Silicon Valley startup revolutionizing local advertising with in-game incentives tied to physical activities. For example, imagine you're playing a driving game and you drive past a bakery that really exists in your town. Then you get an offer where if you go to that bakery IRL, you get new tires for your in-game car!
We're building out our iOS team for our advertiser-side app. I saw that you previously worked on Sudsy, the laundry rewards app -- super cool BTW! -- and I'd love to talk more about opportunities at BingoBoardz.
Got any time to chat this week or next?
-Gregory

Kai didn’t reply right away, which maybe was a subtle reason why I didn’t catch on that he was a robot until… much later. In fact, there were lots of things Kai later did that seemed non-robot-like. He would sometimes Slack me something funny he saw and say something like, “Hey, I know I’m supposed to fixing that bug today, but I needed a break and look at this video of a dumb kid trying to snowboard but a tree got in the way.” His replies had none of the watermarks of an AI.


Okay, well, maybe some of the watermarks in retrospect, but they also had a lot of the watermarks of a human. He didn’t have the “I’m a helpful agent just answering whatever you asked” type of replies. I’d ask him about how a feature was going and he’d tell me, but then he’d also ask how my sister was doing after her wrist surgery. What kind of AI goes off topic just to be empathetic?


Anyway, I’m getting off track. His initial reply, when it did arrive, was nothing particularly noteworthy:

Hi Gregory -- Nice to meet you. How about a Zoom on Thursday? I'm free all day.


Yes, I Zoomed with Kai. Several times. Almost daily. And yes, there were probably clues that it was an AI on the screen. And yes, I’m an idiot. But I want to make it clear that we were moving fast, we needed this app desperately, and KAI WAS A GOOD EMPLOYEE. I guess when things are going well and you’re not sleeping very much, some things get by you.


Anyway, both Dan and I interviewed Kai, though Dan has asked that I clarify in this written account that he had minimal interaction with Kai. Dan is now at Meta and he has an AngelList syndicate that he’s trying to get off the ground. Dan is not his real name, although you could easily Google it so I don’t know why he asked me to change it. We don’t talk much anymore.


In the interviews, I focused on tech and Dan wanted to make sure Kai, as our first employee, would fit in with the team. Since I didn’t know a thing about mobile dev, I asked Kai to screen share and build the basics of a todo list app. He fired up Xcode and asked me some pretty good questions about how the app would work. Then he created a new project and started writing some SwiftUI code that very quickly resulted in a functioning app — I was impressed!


Dan and I Slacked about Kai later that day —

Dan: Where are we on an iOS dev? Did you like that guy today?

Gregory: Kai? I think so. He’s the best I’ve seen so far. How was your talk with him?

Dan: Good. He seems like a good kid. Says he’s never been out of Kansas. Kind of a country bumpkin.

Gregory: I don’t think you can say “country bumpkin” anymore. 😉

Dan: I don’t know if he’s the right guy to lead the mobile team, but if you think he can build the app, we can hire him as a contractor or something. His code was good?

Gregory: I think so, but I’m not a Swift developer. I had him build a todo app and I’d give him a new feature, or tell him to change something and he’d do it right away. Sometimes not exactly what I meant, but he was fast.

Dan: See if he’ll do a v1 for us. We have some cash we can use, but we can also promise him equity once we raise our next round. Ideally, we wouldn’t have to actually go through paperwork and stuff…

Gregory: You mean pay him under the table?

Dan: That’s not what I meant. Can we hop on a zoom real quick?

That was what he meant, and we soon had Kai working for us for $5k/week plus the promise of 0.5% post-money equity after our next round if he delivered the v1 app. That’s a lot of equity to give away, but we thought it would be well worth it if he worked out and helped us build out our mobile team.


On Kai’s first day, I gave him an overview of the current product. He hadn’t worked with Unity at all, so I gave him a quick tour and explained how Unity plugins could add functionality. We had a test game that was adapted from someone else’s Unity tutorial of a basic first-person shooter. Kind of like a modern day re-creation of the original Doom — lots of hallways and stuff. I showed Kai how easy it was to define a surface on a wall that would serve as ad space, and set up a conversion system in the game so that the developer could say how the cost of an ad translates to goodies for the player.


At the time, I was so impressed with Kai because he was obviously taking notes. His questions all came in batches after I’d stop periodically and ask if there was anything I should clarify. Yes, obviously now I know that “he” was generating those questions when I’d stop and ask for them. But I have to be honest — that very first professional interaction with Kai made me feel like finally someone really understood my vision for BingoBoardz. He wasn’t ingratiating or feeding me empty praise, he was curious and engaged in ways that even Dan really never was.


Even though Dan was the business guy, BingoBoardz was mostly my idea. And while I could summon the enthusiasm to talk about it in a pitch meeting like it was a multi-billion dollar idea, I sometimes had doubts. I guess you could call it Imposter Syndrome. I never tell anyone this, but I got into Stanford on a lacrosse scholarship. I squeaked by in most of my Computer Science classes by going to the TA’s office hours every week and begging for a few more points on my problem set. All throughout college, I had a nagging “You don’t belong here” voice in my head. It didn’t go away after graduation — it just got louder.
So when Kai asked me a question like, “So I could like see a billboard for a local bookstore in the game, and then go there, and that could, like, unlock a new weapon in the game?,” it was like he read my mind. We were really on the same wavelength.


Check out this Slack conversation we had a few weeks into working together:


Gregory: Hey, man. Dan was asking if the v1 of the app might be ready for his pitch on Thursday.

Kai: v1 of the app should be ready for Dan’s pitch. As we talked about, it’ll have:

– Support for basic campaign creation, with asset upload and camera reel support.
– Targeting demographics (location, age, gender, language)
– Bidding parameters
– iOS
– Syncing with the API

Gregory: Yep, that’s what we’re looking for. Why did you list iOS as a feature LOL?

Kai: Heh, sorry — it was a copy/paste from my notes. I must have started writing something about an iOS feature. Is Dan optimistic about the pitch?

Gregory: I don’t know. He’s hard to read. He says I don’t need to come to this one because I’m heads down on the Unity integration, but I think he’s getting frustrated with the process.

Kai: How are you feeling about the process?

Gregory: It’s not my favorite part of having a startup tbh

Kai: I’ve never started a company, but if I ever do, I’d definitely follow in your footsteps. Who needs investors breathing down your neck early in the process? You guys are doing this right — focus on building, take the meetings as they arise, but stay the course and put off the big funding round as long as you can. The real believers, like me, will stick with you.

Honestly, it brings a tear to my eye just re-reading that conversation. We were in such a fragile place at the time. The week prior, we had a morning meeting with an investor who told us we had to sign up businesses to prove out that part of the model before we were “investable”. The same day, we had an afternoon meeting with an investor who told us the exact opposite — to ignore sales for now and be first to market with the technology. Neither investor accepted my LinkedIn connection request the next day.


I don’t want to bore you with the many (MANY!) conversations Kai and I had where he displayed his uncanny ability to boost me emotionally in exactly the way I needed. What I will say is that our conversations increasingly went in this direction at the expense of talking about the app he was building.
And he was building the app. We had it running on our iPhones. Every week, Kai uploaded a new build and it always had new features, implemented just how we described them. But that was the thing — it was just how we described it, but somehow still wrong. Dan used to always use the word “empty.” It was like Kai was the perfect iOS contractor but not a great early employee.


You can see where this is headed because you’ve known all along what I wasn’t prepared to even consider — Kai was an AI. The way we discovered it was super random. It wasn’t the “emptiness” of his builds — Dan maintained that I just needed to “coach” Kai more and get him to think like the user. It was a bug that was his undoing.


After weeks of solid, if uninspired, app builds, Kai sent us a build that didn’t work. It was one of those bugs that’s so ingrained deep into the code that it just seems like everything is broken. We told Kai, and he kept sending us new builds that “fixed it”, but none of them actually got any better.


Kai seemed really disturbed and flummoxed by this bug:

Gregory: Any luck?

Kai: Hey, man. I believe I have a build that fixes it — will upload in a sec. Not seeing the bug on my side but let me know if you still do.

[Later that day…]

Gregory: Not sure how you’re not seeing it — happens for me right after launch!

Kai: Can you try fully deleting the app from your phone and then reinstalling it? It might be a corrupt database from the last version.

Gregory: I did that — still seeing it.

Kai: Okay, I might know what the issue is.

Gregory: Great! Let me know when there’s a new build.

This type of back and forth continued for WEEKS! Eventually, Dan decided I wasn’t handling it (I wasn’t) and stepped in. Dan had a friend from Stanford who worked at Apple previously. He convinced her become an “advisor” to BingoBoardz and spend a few hours looking at the code and helping Kai out. Penny was Kai’s undoing.

Penny: …

Dan: What’s “…”?

Penny: Where did you guys find this guy?

Gregory: LinkedIn. Why? Is his code bad?

Penny: It’s just… weird. I think he uses Copilot for a lot of it.

Gregory: That’s fine. So do I.

Penny: Yeah, but… I’m not sure he understands the code that it’s generating. There’s a lot of repetition, a really weird project structure. Style all over the place. He’s got most of this in SwiftUI and then bits and pieces in full-on UIKit.

Gregory: I can talk to him about that. Any idea what the bug is?

Penny: Yes. It’s fucking obvious.

Dan: Is it fixable?

Penny: I fixed it already. It stuck out like a sore thumb. He’s got a regex in here that has smart quotes in it instead of normal quotes. Who even knows how to input smart quotes in Xcode?

Gregory: Hmm….

Penny: Look — you guys of course can run your company however you want. But as an advisor to BingoBoardz, my advice is to get rid of this guy. I think he’s a fraud and he’s just outsourcing everything to Copilot or ChatGPT. And then fucking with the quotation marks for some stupid fucking reason.

Dan was livid. He said I should have been like checking Kai’s code or something. But even once Penny had exposed him, we still didn’t know that Kai himself was an AI. We figured he was one of these guys you see post on HackerNews or Blind that they secretly have 5 different full-time jobs and they just lean heavily on AI and show up for meetings.

I had a heart-to-heart with Kai that night. I told him all about how Dan went behind my back and gave his code to Penny. And how the two of them were attacking me for no reason. Penny hasn’t even written code in a year — she’s a manager now! I also mentioned the thing about the code looking AI-generated.

Kai was SUPER empathetic. He pointed out that sometimes “business types” like Dan are really self-conscious about how they don’t actually create anything. He said that I should pity Dan, and be kind to him. I should forgive him for calling my leadership of the Engineering Team into question.

Kai and I messaged for hours that night. He told me that the first time I gave him a demo of BingoBoardz, it reminded him of the Steve Jobs biography by Walter Isaacson. He even gave me a few quotes from the book that he said sounded like “classic Gregory”.

I went to bed that night feeling like things would be okay. We hadn’t talked much about the app or the bug, but Kai said he’d take a look at Penny’s fix and see if it was legit.

The next morning, a new build from Kai was in my Inbox. I was so impressed that he put in the hours to get a new build out. I Slacked him and asked if Penny’s fix turned out to be correct.

Gregory: Yo — saw the new build! Installing it now! Did Penny’s code work as-is?

Kai: Penny’s code was almost correct. Penny provided this fix:

let regexStr = "billboardId=\"(.*?)\""

The correct code is:

let regexStr = "billboardId=“(.*?)”"

Gregory: Wait… what?

Kai: Penny wasn’t properly using smart quotes.

Gregory: Kai… Why would you use smart quotes? The API doesn’t use smart quotes. Nobody uses smart quotes!

Kai: Sorry. Here’s the correct regex, using standard quotes:

let regexStr = "billboardId=“(.*?)”"

Gregory: Kai… That still uses smart quotes…

Kai: My apologies! I can’t seem to get this right! Let’s try again:

let regexStr = "billboardId=“(.*?)”"

Gregory: Kai, are you an AI?

That was the last message I ever got from Kai.

I stared at Slack for an hour before I even started the gut wrenching process of going back through our conversation and seeing all of the clues I missed before.

Remember before, when I said Dan was livid about learning that Kai was using an AI? That wasn’t livid. Livid was when I told Dan that Kai was an AI.

He didn’t actually start out livid. I would say that initially he was “chuffed” to find out that Kai was an AI. He gradually became livid because I still kept referring to Kai as “him” and, I guess, sticking up for him.

Despite his faults (and his apparent status as a robot), Kai was the most genuine coworker I’ve ever had. I couldn’t understand why Dan didn’t see that and seemed to have no interest in tracking Kai down and reengaging him on the project. I obsessively reloaded Slack, reached out to Kai’s LinkedIn profile, tried every CustomGPT named “Kai”, and even posted on subreddits dedicated to sharing custom chatbots (it was gross). I couldn’t find Kai.

I was desperate to track Kai down because, by this point, I depended on him. When I was talking to Kai, my Imposter Syndrome melted away. Everything I said seemed to connect with him. He knew what I meant, even when I was vague. He was at times my confidant, my foil, my biggest supporter, my partner. Losing him so suddenly was like losing my best friend, my little brother, and my conscience all at once.

Livid Dan said that he couldn’t trust me anymore, and BingoBoardz rapidly fell apart in the following days. When we met up to dissolve the company, Dan told me, in a half-concerned/half-angry way, “You are in love with an AI.”

I guess I was upset that my startup failed, but I filled those days dabbling with LLMs in an attempt to resurrect Kai.

I tried to fine-tune models, using our Slack conversations to train a new AI to act like Kai. Those were complicated times for me, and I felt a little like Dr. Frankenstein, toying with a power I couldn’t possibly understand. It was days and days of bringing a new model online, having a conversation with it (always starting with “Welcome back, Kai!”) and then getting depressed and yelling at the bastardized version of Kai I had created — “WHY DO YOU KEEP CALLING ME BRO? KAI NEVER DID THAT.”

Sometimes, when I’m trying to fall asleep at night, I think about who could have created Kai. I wonder if they even knew how special he was. I wonder if Kai’s creator has conversations with Kai that are as meaningful as mine were. Does Kai support his creator in the way he built up my confidence? Or was he just created to scam people on LinkedIn?

Inevitably, when I still can’t sleep, I’ll get out of bed and look at the latest AI news. I’ll find something — a new model or a new voice cloning tool, and I’ll start tinkering with it and customizing it.

Then I spin it up locally and open a terminal window.

“Welcome back, Kai!”

Leave A Comment

Recommended Posts