đź“Š AngelStat - The Portfolio CoPilot for Angel Investors

Hi friends,

I’m sharing my project for the showcase, AngelStat.

AngelStat can be used by angel investors to track portfolio performance and metrics, particularly when they invest across platforms. Many angels invest directly in startups, or via platforms like AngelList and have to use a spreadsheet, Notion doc, or other means to track their portfolio performance and metrics. I built this tool after modeling my personal spreadsheet as a SaaS application, and I use it for all of my deal flow management and portfolio investments.

The app has a homepage hosted on Carrd which is very cheap and easy to maintain, and the app itself is hosted at a custom subdomain via Glide. I use some custom CSS for a few of the tab views along the top, and to customize the dashboard columns width to show more information. The app showcases a few ways to use Glide tables for lightweight data science, with more use cases I hope to add in the near future.

The app has paid components; I leverage a Make.com scenario to listen to Stripe checkout events and make an API call to update the user to premium.

Things I wish existed for this (maybe others have solved, please share if so!):

  • Some timestamp and webhook action attached to a new user row creation (eg., at signup)

Right now I have to poll the user table every 60 minutes in make.com and find new users to send welcome emails. I also have a custom action hidden in the first button interaction that also notifies me via email of a new user, but they have to click that button in order for this to fire.

  • A smoother Stripe integration that supports monetization of applications

I hacked together this polling mechanism in make.com, it works but something officially supported would be great.

  • subfolder domain hosting

This app has thousands of companies stored in the database, each with enriched company profiles and information. I’d love to host the app via a subfolder instead of subdomain, primarily because I could build a large SEO presence with that data. Unfortunately, Glide doesn’t support this. An alternative is that I move my home/landing page hosting to Glide, but it changes how users can interact with various parts of the application. I am thinking about this quite a bit and how to solve, including deploying separate apps and having tab buttons link out to them somehow. This part is very annoying and may make me move to other hosting in the future depending on user feedback and potential value of this data as it grows.

  • The ability to restrict some components with a blur view

I think I can do this with custom CSS, but I need to read whether or not the user is paid or not. Not 100% clear how to do this right now, but it gives the app a more professional approach by showing users the power and potential of a paid plan (my app is super cheap), and entices upgrade. If you know how to put a blur overlay and an upgrade button on top of certain components that is interesting. I will do some CSS work to see if I can make it happen.

Probably more things I cannot remember right now.

Please ask questions, test drive the app if you’re so inclined, and give me feedback!

Cheers and thanks to the community for so many solutions and help!

7 Likes

I think if you have an onboarding flow, you can build this into the action(s) that the user has to trigger at the end of onboarding.

If you can add a helper component to the related view and give it a custom class, you can then blur the original component if only the helper component exists. Hide it when the user is premium, for example.

Thanks for your reply and general help to everyone here!

You can’t really do this reliably though, which is my chief complaint. The app has an onboarding flow, but some users will churn before they ever get started. Because those users have taken no action to onboard themselves, you can’t take any action on them unless you poll the user table for new rows. Something like a webhook trigger or even a simple date/time stamp on the user row for when that row would added would be more powerful than what exists now.

Another use case for this is a trial period. I can 100% offer my users a trial in Stripe, but that’s only if they commit well enough to look into paying (the steepest conversion step in a funnel). If I have a timestamp for when that row was added exposed in the db, I can give them a trial that automatically counts up to some interval (15 days for example), and then blocks the paid features until upgrade. Very hard to do this right now.

I will try this, it is along the lines of what I was thinking. I was also thinking to add a blur component and use CSS to overlay them, and only show the blur component if the user’s paid status is false (unchecked).

thanks again!

If you care about churning users, maybe a scheduled workflow will be what you need (e.g: running every hour, for users who doesn’t have a “welcome email sent” timestamp). Glide is working on something like that.

For timestamp when the row is added, I believe that’s very useful, but not something I have heard Glide working on.

To be more specific, it would use :has.

Very helpful, thanks again.

For future readers visiting this thread, another aspect I would like to see is app analytics. I would like to see user usage patterns and behaviors, I believe I would need to instrument all flows manually with custom actions firing API calls to some events service, but I need to look into it more. If there was an Amplitude or similar integration that could be really helpful.

I have never used it, but we have Google Analytics.

Yes, I am playing with custom events. Google Analytics is a bit cumbersome with this but I will see what I can do with it.

Update: I realized we have a Mixpanel integration available, and their free tier is very useful at 2M events, so I am working on integration analytics into custom actions within my app. Will update accordingly when I have a few things figured out.

3 Likes