File size: 5,715 Bytes
6002e49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
"""

Usage tracking for Premium Taste model

Tracks daily usage limits for HuggingFace Space users

"""
import streamlit as st
from datetime import datetime, date
import json

class UsageTracker:
    def __init__(self):
        """Initialize usage tracking for premium taste model"""
        self.today = date.today().isoformat()
        self.daily_email_limit = 5
        self.daily_scrape_limit = 2
        self.daily_export_limit = 1
        self.init_session_state()
    
    def init_session_state(self):
        """Initialize session state for usage tracking"""
        if 'usage_data' not in st.session_state:
            st.session_state.usage_data = {
                'date': self.today,
                'emails_generated': 0,
                'linkedin_scrapes': 0,
                'bulk_exports': 0,
                'email_address': None,
                'premium_features_used': []
            }
        
        # Reset counters if new day
        if st.session_state.usage_data['date'] != self.today:
            st.session_state.usage_data = {
                'date': self.today,
                'emails_generated': 0,
                'linkedin_scrapes': 0,
                'bulk_exports': 0,
                'email_address': st.session_state.usage_data.get('email_address'),
                'premium_features_used': []
            }
    
    def get_emails_generated(self):
        """Get current email count"""
        return st.session_state.usage_data['emails_generated']
    
    def can_generate_email(self):
        """Check if user can generate more emails (5/day limit)"""
        return st.session_state.usage_data['emails_generated'] < 5
    
    def can_scrape_linkedin(self):
        """Check if user can scrape LinkedIn (2/day limit)"""
        return st.session_state.usage_data['linkedin_scrapes'] < 2
    
    def can_bulk_export(self):
        """Check if user can export bulk data (1/day limit)"""
        return st.session_state.usage_data['bulk_exports'] < 1
    
    def increment_email_generation(self):
        """Track email generation"""
        st.session_state.usage_data['emails_generated'] += 1
    
    def increment_linkedin_scrape(self):
        """Track LinkedIn scraping"""
        st.session_state.usage_data['linkedin_scrapes'] += 1
    
    def increment_bulk_export(self):
        """Track bulk export"""
        st.session_state.usage_data['bulk_exports'] += 1
    
    def add_premium_feature_used(self, feature_name):
        """Track which premium features user tried"""
        if feature_name not in st.session_state.usage_data['premium_features_used']:
            st.session_state.usage_data['premium_features_used'].append(feature_name)
    
    def get_remaining_emails(self):
        """Get remaining email generations"""
        return max(0, 5 - st.session_state.usage_data['emails_generated'])
    
    def get_remaining_scrapes(self):
        """Get remaining LinkedIn scrapes"""
        return max(0, 2 - st.session_state.usage_data['linkedin_scrapes'])
    
    def show_upgrade_prompt(self, feature_name):
        """Show upgrade prompt when limits reached"""
        st.error(f"""

        πŸš€ **You've reached your daily {feature_name} limit!**

        

        **Want unlimited access to all premium features?**

        

        βœ… Unlimited email generation  

        βœ… Unlimited LinkedIn scraping  

        βœ… Unlimited bulk processing  

        βœ… Advanced quality insights  

        βœ… A/B subject line testing  

        βœ… Follow-up sequence templates  

        

        **🎯 Get Lifetime Access for Just $19**

        """)
        
        col1, col2 = st.columns([1, 1])
        with col1:
            if st.button("πŸš€ Get Unlimited Access", use_container_width=True, type="primary"):
                st.markdown("**[πŸ”— Get Cold Email Assistant Pro β†’](https://gumroad.com/l/cold-email-assistant)**")
        with col2:
            if st.button("πŸ“§ Get Notified of Updates", use_container_width=True):
                email = st.text_input("Enter your email for updates:")
                if email:
                    st.session_state.usage_data['email_address'] = email
                    st.success("βœ… We'll notify you of new features!")
    
    def show_usage_sidebar(self):
        """Show usage stats in sidebar"""
        st.sidebar.markdown("---")
        st.sidebar.subheader("πŸ“Š Today's Usage")
        
        # Email generation
        emails_remaining = self.get_remaining_emails()
        if emails_remaining > 0:
            st.sidebar.success(f"πŸ“§ {emails_remaining}/5 emails remaining")
        else:
            st.sidebar.error("πŸ“§ Daily email limit reached")
        
        # LinkedIn scraping
        scrapes_remaining = self.get_remaining_scrapes()
        if scrapes_remaining > 0:
            st.sidebar.success(f"πŸ” {scrapes_remaining}/2 LinkedIn scrapes remaining")
        else:
            st.sidebar.error("πŸ” Daily LinkedIn limit reached")
        
        # Bulk export
        if self.can_bulk_export():
            st.sidebar.success("πŸ“Š 1 bulk export available")
        else:
            st.sidebar.error("πŸ“Š Daily bulk export used")
        
        # Upgrade CTA
        st.sidebar.markdown("---")
        st.sidebar.markdown("### πŸš€ Upgrade to Pro")
        st.sidebar.info("Remove all limits + get exclusive features!")
        if st.sidebar.button("Get Unlimited Access", use_container_width=True):
            st.sidebar.markdown("**[πŸ”— Cold Email Assistant Pro β†’](https://gumroad.com/l/cold-email-assistant)**")