You're not forced to use that comment, you can pass the event however you like, if you satisfy the event.Any interface (by having the method EventName() string).
I prefer that comment because Go doesn't have native sum types, and I believe that by using the framework in combination with the gochecksumtype linter, you get the best developer experience and type safety (you DO have tab autocomplete with the events for recordThat - the type system helps because of the sealed interface).
But again, if you don't want to use the linter, no problem. You can create constructors for the events however you like, just like in your example.
This story is similar to the guys at senja.io: tech founder => marketing/growth person joins => business skyrockets to 1M ARR. It looks to me like a combination of having a product with some revenue and havingthe luck of someone like Jon joining.
I'd be more interested on how to find people like Jon tbh.
"We were gonna ask 1399 euros for this (overpriced already) but we think that some people might want to give us more money if we market it as an experiment"
Look, we can talk endlessly about what these toys are supposed to cost, but fact is that you couldn’t even buy a second-hand Field for 1399 before this month. This really is “cheap” to the degree that I’m surprised scalpers haven’t emptied their stock in a week.