Upon getting started with a self-hosted install I wanted to create a new project. I selected the drop-down at the top and selected "Create a new project".

<img width="403" alt="Screen Shot 2021-06-29 at 11 12 24" src="https://user-images.githubusercontent.com/328367/123799033-b28fb080-d8df-11eb-8423-40d7b978af1b.png">

This then took me through a flow to request a license.

https://user-images.githubusercontent.com/328367/123798516-27aeb600-d8df-11eb-873d-826e13e4e224.mp4

After chatting to @marcushyett-ph I realised that there's a banner at the top of the page that has a "Go to setup" CTA that lets me create a new project. I'm a little embarrassed that I didn't notice this 😊 But I'm assuming other people may not see it either or just see it as some sort of success banner.

<img width="1311" alt="Screen Shot 2021-06-29 at 11 12 45" src="https://user-images.githubusercontent.com/328367/123798988-a6a3ee80-d8df-11eb-9e1d-88aa1e23a7f8.png">

Could the top drop-down also let me go through this flow? Could this result in people failing to get started and instead thinking they have to request a license?

## Describe the solution you'd like

Could the top project drop-down be aware of the context of the user: that they have not yet created their first project? And if that's the case then run them through the setup process?

posthog/api/organization.py
serializer_class = OrganizationInviteSignupSerializer
    permission_classes = (permissions.AllowAny,)
    def get(self, request, *args, **kwargs):
        """
        Pre-validates an invite code.
        """
        invite_id = kwargs.get("invite_id")
        if not invite_id:
            raise exceptions.ValidationError("Please provide an invite ID to continue.")
        try:
            invite: OrganizationInvite = OrganizationInvite.objects.get(id=invite_id)
        except (OrganizationInvite.DoesNotExist, ValidationError):
            raise serializers.ValidationError("The provided invite ID is not valid.")
        user = request.user if request.user.is_authenticated else None
        invite.validate(user=user)
        return response.Response(
            {
                "id": str(invite.id),
                "target_email": mask_email_address(invite.target_email),
                "first_name": invite.first_name,
                "organization_name": invite.organization.name,
            }
        )
class OrganizationOnboardingViewset(StructuredViewSetMixin, viewsets.GenericViewSet):