devpost-scraper 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/.env.example +5 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/.gitignore +1 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/PKG-INFO +1 -1
- devpost_scraper-0.2.0/emails/variant-a.html +115 -0
- devpost_scraper-0.2.0/emails/variant-b.html +134 -0
- devpost_scraper-0.2.0/emails/variant-c.html +115 -0
- devpost_scraper-0.2.0/emails/variant-d.html +115 -0
- devpost_scraper-0.2.0/emails/variant-e.html +45 -0
- devpost_scraper-0.2.0/emails/variant-f.html +47 -0
- devpost_scraper-0.2.0/emails/variant-g.html +50 -0
- devpost_scraper-0.2.0/emails/variant-h.html +50 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/pyproject.toml +2 -1
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/src/devpost_scraper/cli.py +250 -1
- devpost_scraper-0.2.0/src/devpost_scraper/customerio.py +87 -0
- devpost_scraper-0.2.0/src/devpost_scraper/db.py +194 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/src/devpost_scraper/models.py +30 -1
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/src/devpost_scraper/scraper.py +53 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/README.md +0 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/src/devpost_scraper/__init__.py +0 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/src/devpost_scraper/backboard_client.py +0 -0
- {devpost_scraper-0.1.0 → devpost_scraper-0.2.0}/src/devpost_scraper/csv_export.py +0 -0
|
@@ -11,3 +11,8 @@ DEVPOST_SESSION=
|
|
|
11
11
|
# GitHub personal access token for higher API rate limits (5000/hr vs 60/hr)
|
|
12
12
|
# Generate at https://github.com/settings/tokens (no scopes needed, public data only)
|
|
13
13
|
GITHUB_TOKEN=
|
|
14
|
+
|
|
15
|
+
# Customer.io Track API credentials (required for --emit-events)
|
|
16
|
+
# Find at https://fly.customer.io/settings/api_credentials
|
|
17
|
+
CUSTOMERIO_SITE_ID=
|
|
18
|
+
CUSTOMERIO_API_KEY=
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<!-- Subject: nice work at {{event.hackathon_title}} -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
8
|
+
<meta name="x-apple-disable-message-reformatting">
|
|
9
|
+
<meta name="color-scheme" content="light dark">
|
|
10
|
+
<meta name="supported-color-schemes" content="light dark">
|
|
11
|
+
<title>nice work at the hackathon</title>
|
|
12
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
14
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
|
|
15
|
+
<style>
|
|
16
|
+
html, body { margin: 0 auto !important; padding: 0 !important; height: 100% !important; width: 100% !important; font-family: 'Inter', sans-serif; background-color: #F9FAFB; }
|
|
17
|
+
* { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
|
|
18
|
+
div[style*="margin: 16px 0"] { margin: 0 !important; }
|
|
19
|
+
table { border-spacing: 0 !important; border-collapse: collapse !important; table-layout: fixed !important; margin: 0 auto !important; }
|
|
20
|
+
img { -ms-interpolation-mode: bicubic; }
|
|
21
|
+
a { text-decoration: none; }
|
|
22
|
+
*[x-apple-data-detectors], .unstyle-auto-detected-links *, .aBn { border-bottom: 0 !important; cursor: default !important; color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
23
|
+
.a6S { display: none !important; opacity: 0.01 !important; }
|
|
24
|
+
.im { color: inherit !important; }
|
|
25
|
+
a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
26
|
+
.button-primary { background-color: #007ACC; border-radius: 4px; color: #ffffff !important; display: inline-block; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 700; line-height: 50px; text-align: center; text-decoration: none !important; text-transform: uppercase; width: 100%; -webkit-text-size-adjust: none; }
|
|
27
|
+
.accent-link { color: #007ACC !important; text-decoration: none; font-weight: 600; }
|
|
28
|
+
.footer-link { color: #9CA3AF !important; text-decoration: none; font-weight: 400; }
|
|
29
|
+
.divider-color { background-color: #E5E7EB; }
|
|
30
|
+
@media only screen and (min-device-width: 601px) { .email-container { width: 600px !important; } }
|
|
31
|
+
@media only screen and (max-width: 600px) { .mobile-padding { padding-left: 20px !important; padding-right: 20px !important; } }
|
|
32
|
+
</style>
|
|
33
|
+
</head>
|
|
34
|
+
<body width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #F9FAFB;">
|
|
35
|
+
<center style="width: 100%; background-color: #F9FAFB;">
|
|
36
|
+
<div style="max-width: 600px; margin: 0 auto;" class="email-container">
|
|
37
|
+
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
|
38
|
+
|
|
39
|
+
<tr>
|
|
40
|
+
<td style="padding: 40px 20px 36px 20px; text-align: center;">
|
|
41
|
+
<img src="https://userimg-assets.customeriomail.com/images/client-env-202259/1763816974078_Asset%201%20copy_01KANTY9V72CGQ2EB5EE3Q9EK0.png" width="180" alt="Backboard.io" border="0" style="width: 180px; max-width: 100%; height: auto; color: #111827;">
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
|
|
45
|
+
<tr>
|
|
46
|
+
<td class="mobile-padding" style="padding: 0 40px 36px 40px;">
|
|
47
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
|
|
51
|
+
<tr>
|
|
52
|
+
<td class="mobile-padding" style="padding: 0 40px 0 40px; font-family: 'Inter', sans-serif;">
|
|
53
|
+
|
|
54
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
55
|
+
Hey {{customer.first_name}}, </p><p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #6B7280;">Great work on your hackathon submission for {{event.hackathon_title}}. The projects coming from these events are incredible.
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #6B7280;">
|
|
59
|
+
As a thank you to hackathon participants, we’ve created a free tier on Backboard.io with dev credits already pre-loaded for you. State management, memory routing, and tool-calling — all included.
|
|
60
|
+
</p>
|
|
61
|
+
|
|
62
|
+
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-bottom: 32px;">
|
|
63
|
+
<tr>
|
|
64
|
+
<td>
|
|
65
|
+
<a href="https://app.backboard.io/signup" class="button-primary">CLAIM YOUR FREE ACCOUNT</a>
|
|
66
|
+
</td>
|
|
67
|
+
</tr>
|
|
68
|
+
</table>
|
|
69
|
+
|
|
70
|
+
<p style="margin: 0 0 22px 0; font-size: 15px; line-height: 24px; color: #6B7280;">
|
|
71
|
+
Want to see how to set up your full AI stack in minutes? Check out <a href="https://www.youtube.com/watch?v=_9z105gqLqE" class="accent-link">Jasmine’s Hackathon demo</a>.
|
|
72
|
+
</p>
|
|
73
|
+
|
|
74
|
+
<p style="margin: 0 0 40px 0; font-size: 15px; line-height: 24px; color: #6B7280;">
|
|
75
|
+
If you’re unfamiliar with Backboard.io, we give you a unified API for your entire AI stack. Make any LLM provider stateful, bring your own API key, and everything scales from weekend builds to production. If you try it out, we’d love to hear your feedback.
|
|
76
|
+
</p>
|
|
77
|
+
|
|
78
|
+
<p style="margin: 0 0 40px 0; font-size: 15px; line-height: 24px; color: #6B7280;">
|
|
79
|
+
Thanks again and keep building!
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
|
|
85
|
+
<tr>
|
|
86
|
+
<td class="mobile-padding" style="padding: 0 40px 28px 40px;">
|
|
87
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
88
|
+
</td>
|
|
89
|
+
</tr>
|
|
90
|
+
|
|
91
|
+
<tr>
|
|
92
|
+
<td class="mobile-padding" style="padding: 0 40px 40px 40px; font-family: 'Inter', sans-serif;">
|
|
93
|
+
<p style="margin: 0 0 24px 0; font-size: 15px; line-height: 24px; color: #6B7280;">— Maya</p>
|
|
94
|
+
<p style="margin: 0 0 18px 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
95
|
+
<a href="https://app.backboard.io/quickstart" class="accent-link">Quickstart SDK</a>
|
|
96
|
+
|
|
|
97
|
+
<a href="https://backboard.io/#pricing" class="footer-link">Pricing</a>
|
|
98
|
+
|
|
|
99
|
+
<a href="https://backboard.io/changelog" class="footer-link">Changelog</a>
|
|
100
|
+
</p>
|
|
101
|
+
<p style="margin: 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
102
|
+
<a href="https://x.com/backboardio" class="footer-link">X (Twitter)</a>
|
|
103
|
+
|
|
|
104
|
+
<a href="https://www.reddit.com/r/BackboardIO/" class="footer-link">Reddit</a>
|
|
105
|
+
|
|
|
106
|
+
<a href="https://github.com/Backboard-io" class="footer-link">GitHub</a>
|
|
107
|
+
</p>
|
|
108
|
+
</td>
|
|
109
|
+
</tr>
|
|
110
|
+
|
|
111
|
+
</table>
|
|
112
|
+
</div>
|
|
113
|
+
</center>
|
|
114
|
+
</body>
|
|
115
|
+
</html>
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<!-- Subject: {{customer.first_name}}, a thank you from the hackathon community -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
8
|
+
<meta name="x-apple-disable-message-reformatting">
|
|
9
|
+
<meta name="color-scheme" content="light dark">
|
|
10
|
+
<meta name="supported-color-schemes" content="light dark">
|
|
11
|
+
<title>quick question about your hackathon project</title>
|
|
12
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
14
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
|
|
15
|
+
<style>
|
|
16
|
+
html, body { margin: 0 auto !important; padding: 0 !important; height: 100% !important; width: 100% !important; font-family: 'Inter', sans-serif; background-color: #F9FAFB; }
|
|
17
|
+
* { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
|
|
18
|
+
div[style*="margin: 16px 0"] { margin: 0 !important; }
|
|
19
|
+
table { border-spacing: 0 !important; border-collapse: collapse !important; table-layout: fixed !important; margin: 0 auto !important; }
|
|
20
|
+
img { -ms-interpolation-mode: bicubic; }
|
|
21
|
+
a { text-decoration: none; }
|
|
22
|
+
*[x-apple-data-detectors], .unstyle-auto-detected-links *, .aBn { border-bottom: 0 !important; cursor: default !important; color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
23
|
+
.a6S { display: none !important; opacity: 0.01 !important; }
|
|
24
|
+
.im { color: inherit !important; }
|
|
25
|
+
a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
26
|
+
.button-primary { background-color: #007ACC; border-radius: 4px; color: #ffffff !important; display: inline-block; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 700; line-height: 50px; text-align: center; text-decoration: none !important; text-transform: uppercase; width: 100%; -webkit-text-size-adjust: none; }
|
|
27
|
+
.accent-link { color: #007ACC !important; text-decoration: none; font-weight: 600; }
|
|
28
|
+
.footer-link { color: #9CA3AF !important; text-decoration: none; font-weight: 400; }
|
|
29
|
+
.divider-color { background-color: #E5E7EB; }
|
|
30
|
+
@media only screen and (min-device-width: 601px) { .email-container { width: 600px !important; } }
|
|
31
|
+
@media only screen and (max-width: 600px) { .mobile-padding { padding-left: 20px !important; padding-right: 20px !important; } }
|
|
32
|
+
</style>
|
|
33
|
+
</head>
|
|
34
|
+
<body width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #F9FAFB;">
|
|
35
|
+
<center style="width: 100%; background-color: #F9FAFB;">
|
|
36
|
+
<div style="max-width: 600px; margin: 0 auto;" class="email-container">
|
|
37
|
+
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
|
38
|
+
|
|
39
|
+
<tr>
|
|
40
|
+
<td style="padding: 40px 20px 36px 20px; text-align: center;">
|
|
41
|
+
<img src="https://userimg-assets.customeriomail.com/images/client-env-202259/1763816974078_Asset%201%20copy_01KANTY9V72CGQ2EB5EE3Q9EK0.png" width="180" alt="Backboard.io" border="0" style="width: 180px; max-width: 100%; height: auto; color: #111827;">
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
|
|
45
|
+
<tr>
|
|
46
|
+
<td class="mobile-padding" style="padding: 0 40px 36px 40px;">
|
|
47
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
|
|
51
|
+
<tr>
|
|
52
|
+
<td class="mobile-padding" style="padding: 0 40px 0 40px; font-family: 'Inter', sans-serif;">
|
|
53
|
+
|
|
54
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
55
|
+
Hey {{customer.first_name}},
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
59
|
+
Thank you for being part of {{event.hackathon_title}}. People who show up and build things are what make the hackathon community great.
|
|
60
|
+
</p>
|
|
61
|
+
|
|
62
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #6B7280;">
|
|
63
|
+
We want to support that. Every hackathon participant gets a free Backboard.io account with dev credits pre-loaded — our way of giving back to builders. Here’s what’s included:
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-bottom: 28px;">
|
|
67
|
+
<tr>
|
|
68
|
+
<td style="padding: 0 0 10px 0; font-size: 16px; line-height: 26px; color: #111827; font-family: 'Inter', sans-serif;">
|
|
69
|
+
• Persistent memory and state management
|
|
70
|
+
</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td style="padding: 0 0 10px 0; font-size: 16px; line-height: 26px; color: #111827; font-family: 'Inter', sans-serif;">
|
|
74
|
+
• Threads, assistants, and tool-calling via one API
|
|
75
|
+
</td>
|
|
76
|
+
</tr>
|
|
77
|
+
<tr>
|
|
78
|
+
<td style="padding: 0 0 10px 0; font-size: 16px; line-height: 26px; color: #111827; font-family: 'Inter', sans-serif;">
|
|
79
|
+
• Works with any LLM provider (bring your own key)
|
|
80
|
+
</td>
|
|
81
|
+
</tr>
|
|
82
|
+
<tr>
|
|
83
|
+
<td style="padding: 0 0 10px 0; font-size: 16px; line-height: 26px; color: #111827; font-family: 'Inter', sans-serif;">
|
|
84
|
+
• Scales from hackathon prototype to production
|
|
85
|
+
</td>
|
|
86
|
+
</tr>
|
|
87
|
+
</table>
|
|
88
|
+
|
|
89
|
+
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-bottom: 32px;">
|
|
90
|
+
<tr>
|
|
91
|
+
<td>
|
|
92
|
+
<a href="https://app.backboard.io/signup" class="button-primary">CLAIM YOUR FREE ACCOUNT</a>
|
|
93
|
+
</td>
|
|
94
|
+
</tr>
|
|
95
|
+
</table>
|
|
96
|
+
|
|
97
|
+
<p style="margin: 0 0 40px 0; font-size: 15px; line-height: 24px; color: #6B7280;">
|
|
98
|
+
See it in action: <a href="https://www.youtube.com/watch?v=_9z105gqLqE" class="accent-link">Jasmine’s Hackathon demo</a> (3 min).
|
|
99
|
+
</p>
|
|
100
|
+
|
|
101
|
+
</td>
|
|
102
|
+
</tr>
|
|
103
|
+
|
|
104
|
+
<tr>
|
|
105
|
+
<td class="mobile-padding" style="padding: 0 40px 28px 40px;">
|
|
106
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
107
|
+
</td>
|
|
108
|
+
</tr>
|
|
109
|
+
|
|
110
|
+
<tr>
|
|
111
|
+
<td class="mobile-padding" style="padding: 0 40px 40px 40px; font-family: 'Inter', sans-serif;">
|
|
112
|
+
<p style="margin: 0 0 24px 0; font-size: 15px; line-height: 24px; color: #6B7280;">— Maya</p>
|
|
113
|
+
<p style="margin: 0 0 18px 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
114
|
+
<a href="https://app.backboard.io/quickstart" class="accent-link">Quickstart SDK</a>
|
|
115
|
+
|
|
|
116
|
+
<a href="https://backboard.io/#pricing" class="footer-link">Pricing</a>
|
|
117
|
+
|
|
|
118
|
+
<a href="https://backboard.io/changelog" class="footer-link">Changelog</a>
|
|
119
|
+
</p>
|
|
120
|
+
<p style="margin: 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
121
|
+
<a href="https://x.com/backboardio" class="footer-link">X (Twitter)</a>
|
|
122
|
+
|
|
|
123
|
+
<a href="https://www.reddit.com/r/BackboardIO/" class="footer-link">Reddit</a>
|
|
124
|
+
|
|
|
125
|
+
<a href="https://github.com/Backboard-io" class="footer-link">GitHub</a>
|
|
126
|
+
</p>
|
|
127
|
+
</td>
|
|
128
|
+
</tr>
|
|
129
|
+
|
|
130
|
+
</table>
|
|
131
|
+
</div>
|
|
132
|
+
</center>
|
|
133
|
+
</body>
|
|
134
|
+
</html>
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<!-- Subject: the missing piece for your AI project -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
8
|
+
<meta name="x-apple-disable-message-reformatting">
|
|
9
|
+
<meta name="color-scheme" content="light dark">
|
|
10
|
+
<meta name="supported-color-schemes" content="light dark">
|
|
11
|
+
<title>the missing piece for your AI project</title>
|
|
12
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
14
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
|
|
15
|
+
<style>
|
|
16
|
+
html, body { margin: 0 auto !important; padding: 0 !important; height: 100% !important; width: 100% !important; font-family: 'Inter', sans-serif; background-color: #F9FAFB; }
|
|
17
|
+
* { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
|
|
18
|
+
div[style*="margin: 16px 0"] { margin: 0 !important; }
|
|
19
|
+
table { border-spacing: 0 !important; border-collapse: collapse !important; table-layout: fixed !important; margin: 0 auto !important; }
|
|
20
|
+
img { -ms-interpolation-mode: bicubic; }
|
|
21
|
+
a { text-decoration: none; }
|
|
22
|
+
*[x-apple-data-detectors], .unstyle-auto-detected-links *, .aBn { border-bottom: 0 !important; cursor: default !important; color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
23
|
+
.a6S { display: none !important; opacity: 0.01 !important; }
|
|
24
|
+
.im { color: inherit !important; }
|
|
25
|
+
a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
26
|
+
.button-primary { background-color: #007ACC; border-radius: 4px; color: #ffffff !important; display: inline-block; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 700; line-height: 50px; text-align: center; text-decoration: none !important; text-transform: uppercase; width: 100%; -webkit-text-size-adjust: none; }
|
|
27
|
+
.accent-link { color: #007ACC !important; text-decoration: none; font-weight: 600; }
|
|
28
|
+
.footer-link { color: #9CA3AF !important; text-decoration: none; font-weight: 400; }
|
|
29
|
+
.divider-color { background-color: #E5E7EB; }
|
|
30
|
+
@media only screen and (min-device-width: 601px) { .email-container { width: 600px !important; } }
|
|
31
|
+
@media only screen and (max-width: 600px) { .mobile-padding { padding-left: 20px !important; padding-right: 20px !important; } }
|
|
32
|
+
</style>
|
|
33
|
+
</head>
|
|
34
|
+
<body width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #F9FAFB;">
|
|
35
|
+
<center style="width: 100%; background-color: #F9FAFB;">
|
|
36
|
+
<div style="max-width: 600px; margin: 0 auto;" class="email-container">
|
|
37
|
+
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
|
38
|
+
|
|
39
|
+
<tr>
|
|
40
|
+
<td style="padding: 40px 20px 36px 20px; text-align: center;">
|
|
41
|
+
<img src="https://userimg-assets.customeriomail.com/images/client-env-202259/1763816974078_Asset%201%20copy_01KANTY9V72CGQ2EB5EE3Q9EK0.png" width="180" alt="Backboard.io" border="0" style="width: 180px; max-width: 100%; height: auto; color: #111827;">
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
|
|
45
|
+
<tr>
|
|
46
|
+
<td class="mobile-padding" style="padding: 0 40px 36px 40px;">
|
|
47
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
|
|
51
|
+
<tr>
|
|
52
|
+
<td class="mobile-padding" style="padding: 0 40px 0 40px; font-family: 'Inter', sans-serif;">
|
|
53
|
+
|
|
54
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
55
|
+
Hi {{customer.first_name}},
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
59
|
+
You just built something at {{event.hackathon_title}}. That’s the hard part. Shipping it into a real product? That’s where most projects stall.
|
|
60
|
+
</p>
|
|
61
|
+
|
|
62
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #6B7280;">
|
|
63
|
+
The biggest friction we see: developers re-inventing the memory and state layer every time they build an AI feature. Thread management, conversation history, tool orchestration — all the stuff that isn’t your core idea, but eats most of your time.
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
<p style="margin: 0 0 32px 0; font-size: 17px; line-height: 28px; color: #6B7280;">
|
|
67
|
+
Backboard.io is a single API that handles all of it. Persistent memory, assistants, threads, streaming tool-calls. You plug it in, and your AI actually remembers.
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-bottom: 32px;">
|
|
71
|
+
<tr>
|
|
72
|
+
<td>
|
|
73
|
+
<a href="https://app.backboard.io/quickstart" class="button-primary">SEE THE QUICKSTART</a>
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
76
|
+
</table>
|
|
77
|
+
|
|
78
|
+
<p style="margin: 0 0 40px 0; font-size: 15px; line-height: 24px; color: #6B7280;">
|
|
79
|
+
Go from hackathon demo to production-ready in an afternoon. Just reply if you have questions — happy to help.
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
|
|
85
|
+
<tr>
|
|
86
|
+
<td class="mobile-padding" style="padding: 0 40px 28px 40px;">
|
|
87
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
88
|
+
</td>
|
|
89
|
+
</tr>
|
|
90
|
+
|
|
91
|
+
<tr>
|
|
92
|
+
<td class="mobile-padding" style="padding: 0 40px 40px 40px; font-family: 'Inter', sans-serif;">
|
|
93
|
+
<p style="margin: 0 0 24px 0; font-size: 15px; line-height: 24px; color: #6B7280;">— Maya</p>
|
|
94
|
+
<p style="margin: 0 0 18px 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
95
|
+
<a href="https://app.backboard.io/quickstart" class="accent-link">Quickstart SDK</a>
|
|
96
|
+
|
|
|
97
|
+
<a href="https://backboard.io/#pricing" class="footer-link">Pricing</a>
|
|
98
|
+
|
|
|
99
|
+
<a href="https://backboard.io/changelog" class="footer-link">Changelog</a>
|
|
100
|
+
</p>
|
|
101
|
+
<p style="margin: 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
102
|
+
<a href="https://x.com/backboardio" class="footer-link">X (Twitter)</a>
|
|
103
|
+
|
|
|
104
|
+
<a href="https://www.reddit.com/r/BackboardIO/" class="footer-link">Reddit</a>
|
|
105
|
+
|
|
|
106
|
+
<a href="https://github.com/Backboard-io" class="footer-link">GitHub</a>
|
|
107
|
+
</p>
|
|
108
|
+
</td>
|
|
109
|
+
</tr>
|
|
110
|
+
|
|
111
|
+
</table>
|
|
112
|
+
</div>
|
|
113
|
+
</center>
|
|
114
|
+
</body>
|
|
115
|
+
</html>
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<!-- Subject: {{customer.first_name}} — 2 min to persistent AI memory -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width">
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
8
|
+
<meta name="x-apple-disable-message-reformatting">
|
|
9
|
+
<meta name="color-scheme" content="light dark">
|
|
10
|
+
<meta name="supported-color-schemes" content="light dark">
|
|
11
|
+
<title>2 min to persistent AI memory</title>
|
|
12
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
14
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
|
|
15
|
+
<style>
|
|
16
|
+
html, body { margin: 0 auto !important; padding: 0 !important; height: 100% !important; width: 100% !important; font-family: 'Inter', sans-serif; background-color: #F9FAFB; }
|
|
17
|
+
* { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
|
|
18
|
+
div[style*="margin: 16px 0"] { margin: 0 !important; }
|
|
19
|
+
table { border-spacing: 0 !important; border-collapse: collapse !important; table-layout: fixed !important; margin: 0 auto !important; }
|
|
20
|
+
img { -ms-interpolation-mode: bicubic; }
|
|
21
|
+
a { text-decoration: none; }
|
|
22
|
+
*[x-apple-data-detectors], .unstyle-auto-detected-links *, .aBn { border-bottom: 0 !important; cursor: default !important; color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
23
|
+
.a6S { display: none !important; opacity: 0.01 !important; }
|
|
24
|
+
.im { color: inherit !important; }
|
|
25
|
+
a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }
|
|
26
|
+
.button-primary { background-color: #007ACC; border-radius: 4px; color: #ffffff !important; display: inline-block; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 700; line-height: 50px; text-align: center; text-decoration: none !important; text-transform: uppercase; width: 100%; -webkit-text-size-adjust: none; }
|
|
27
|
+
.accent-link { color: #007ACC !important; text-decoration: none; font-weight: 600; }
|
|
28
|
+
.footer-link { color: #9CA3AF !important; text-decoration: none; font-weight: 400; }
|
|
29
|
+
.divider-color { background-color: #E5E7EB; }
|
|
30
|
+
@media only screen and (min-device-width: 601px) { .email-container { width: 600px !important; } }
|
|
31
|
+
@media only screen and (max-width: 600px) { .mobile-padding { padding-left: 20px !important; padding-right: 20px !important; } }
|
|
32
|
+
</style>
|
|
33
|
+
</head>
|
|
34
|
+
<body width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #F9FAFB;">
|
|
35
|
+
<center style="width: 100%; background-color: #F9FAFB;">
|
|
36
|
+
<div style="max-width: 600px; margin: 0 auto;" class="email-container">
|
|
37
|
+
<table align="center" role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin: auto;">
|
|
38
|
+
|
|
39
|
+
<tr>
|
|
40
|
+
<td style="padding: 40px 20px 36px 20px; text-align: center;">
|
|
41
|
+
<img src="https://userimg-assets.customeriomail.com/images/client-env-202259/1763816974078_Asset%201%20copy_01KANTY9V72CGQ2EB5EE3Q9EK0.png" width="180" alt="Backboard.io" border="0" style="width: 180px; max-width: 100%; height: auto; color: #111827;">
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
|
|
45
|
+
<tr>
|
|
46
|
+
<td class="mobile-padding" style="padding: 0 40px 36px 40px;">
|
|
47
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
|
|
51
|
+
<tr>
|
|
52
|
+
<td class="mobile-padding" style="padding: 0 40px 0 40px; font-family: 'Inter', sans-serif;">
|
|
53
|
+
|
|
54
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
55
|
+
Hey {{customer.first_name}},
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #111827;">
|
|
59
|
+
Spotted you at {{event.hackathon_title}}. Short pitch, no fluff:
|
|
60
|
+
</p>
|
|
61
|
+
|
|
62
|
+
<p style="margin: 0 0 22px 0; font-size: 17px; line-height: 28px; color: #6B7280;">
|
|
63
|
+
Backboard.io gives your LLM app persistent memory with one API call. Threads, assistants, tool-calling, multi-model support — all included.
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
<p style="margin: 0 0 32px 0; font-size: 17px; line-height: 28px; color: #6B7280;">
|
|
67
|
+
Free to start. Two minutes to your first working call.
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-bottom: 32px;">
|
|
71
|
+
<tr>
|
|
72
|
+
<td>
|
|
73
|
+
<a href="https://app.backboard.io/signup" class="button-primary">GET YOUR API KEY</a>
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
76
|
+
</table>
|
|
77
|
+
|
|
78
|
+
<p style="margin: 0 0 40px 0; font-size: 15px; line-height: 24px; color: #6B7280;">
|
|
79
|
+
Reply if you want to talk shop — always happy to hear what hackers are building.
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
|
|
85
|
+
<tr>
|
|
86
|
+
<td class="mobile-padding" style="padding: 0 40px 28px 40px;">
|
|
87
|
+
<div class="divider-color" style="height: 1px; line-height: 1px; width: 100%;"> </div>
|
|
88
|
+
</td>
|
|
89
|
+
</tr>
|
|
90
|
+
|
|
91
|
+
<tr>
|
|
92
|
+
<td class="mobile-padding" style="padding: 0 40px 40px 40px; font-family: 'Inter', sans-serif;">
|
|
93
|
+
<p style="margin: 0 0 24px 0; font-size: 15px; line-height: 24px; color: #6B7280;">— Maya</p>
|
|
94
|
+
<p style="margin: 0 0 18px 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
95
|
+
<a href="https://app.backboard.io/quickstart" class="accent-link">Quickstart SDK</a>
|
|
96
|
+
|
|
|
97
|
+
<a href="https://backboard.io/#pricing" class="footer-link">Pricing</a>
|
|
98
|
+
|
|
|
99
|
+
<a href="https://backboard.io/changelog" class="footer-link">Changelog</a>
|
|
100
|
+
</p>
|
|
101
|
+
<p style="margin: 0; font-size: 13px; line-height: 22px; color: #9CA3AF;">
|
|
102
|
+
<a href="https://x.com/backboardio" class="footer-link">X (Twitter)</a>
|
|
103
|
+
|
|
|
104
|
+
<a href="https://www.reddit.com/r/BackboardIO/" class="footer-link">Reddit</a>
|
|
105
|
+
|
|
|
106
|
+
<a href="https://github.com/Backboard-io" class="footer-link">GitHub</a>
|
|
107
|
+
</p>
|
|
108
|
+
</td>
|
|
109
|
+
</tr>
|
|
110
|
+
|
|
111
|
+
</table>
|
|
112
|
+
</div>
|
|
113
|
+
</center>
|
|
114
|
+
</body>
|
|
115
|
+
</html>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- Subject: nice work at {{event.hackathon_title}} -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>Hackathon Follow-Up</title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
10
|
+
color: #222;
|
|
11
|
+
background: #fff;
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: 24px;
|
|
14
|
+
}
|
|
15
|
+
p {
|
|
16
|
+
margin-bottom: 16px;
|
|
17
|
+
line-height: 1.55;
|
|
18
|
+
text-align: left;
|
|
19
|
+
}
|
|
20
|
+
a {
|
|
21
|
+
color: #065fd4;
|
|
22
|
+
word-break: break-all;
|
|
23
|
+
}
|
|
24
|
+
strong {
|
|
25
|
+
font-weight: 600;
|
|
26
|
+
}
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<p>Hey {{customer.first_name}}, great work on your hackathon submission for {{event.hackathon_title}}. The projects coming from these events are incredible.</p>
|
|
31
|
+
<p>
|
|
32
|
+
As a past participant, we've created a free tier for all hackers on Backboard.io—past, present, and future—so you get state management and memory routing included.
|
|
33
|
+
With a couple clicks, you can claim your account and we've already pre-loaded dev credits for you.
|
|
34
|
+
</p>
|
|
35
|
+
<p>
|
|
36
|
+
<strong><a href="https://app.backboard.io/signup">Claim your free Backboard.io developer account</a></strong>
|
|
37
|
+
</p>
|
|
38
|
+
<p>
|
|
39
|
+
Want to see how to set up your full AI stack in minutes? Check out <a href="https://www.youtube.com/watch?v=_9z105gqLqE">Jasmine's Hackathon demo</a>.
|
|
40
|
+
</p>
|
|
41
|
+
<p>
|
|
42
|
+
If you're unfamiliar with Backboard.io, we give you a unified API for your entire AI stack. You can make any LLM provider stateful (just bring your own API key), and everything's built on message-level memory so it scales as your projects grow—from weekend builds to production. If you try it out, we'd love to hear your feedback.
|
|
43
|
+
</p>
|
|
44
|
+
</body>
|
|
45
|
+
</html>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- Subject: {{customer.first_name}}, free dev credits from {{event.hackathon_title}} -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>Hackathon Follow-Up</title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
10
|
+
color: #222;
|
|
11
|
+
background: #fff;
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: 24px;
|
|
14
|
+
}
|
|
15
|
+
p {
|
|
16
|
+
margin-bottom: 16px;
|
|
17
|
+
line-height: 1.55;
|
|
18
|
+
text-align: left;
|
|
19
|
+
}
|
|
20
|
+
a {
|
|
21
|
+
color: #065fd4;
|
|
22
|
+
word-break: break-all;
|
|
23
|
+
}
|
|
24
|
+
strong {
|
|
25
|
+
font-weight: 600;
|
|
26
|
+
}
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<p>Hey {{customer.first_name}}, saw your submission for {{event.hackathon_title}}—really solid work.</p>
|
|
31
|
+
<p>
|
|
32
|
+
We're giving every hackathon participant a free Backboard.io account with dev credits pre-loaded. It's our way of supporting builders who ship under pressure.
|
|
33
|
+
</p>
|
|
34
|
+
<p>
|
|
35
|
+
<strong><a href="https://app.backboard.io/signup">Claim your free account</a></strong>
|
|
36
|
+
</p>
|
|
37
|
+
<p>
|
|
38
|
+
Quick context if Backboard.io is new to you: it's a unified API that makes any LLM stateful. Persistent memory, threads, tool-calling—all included. Bring your own API key, and your AI remembers everything across sessions.
|
|
39
|
+
</p>
|
|
40
|
+
<p>
|
|
41
|
+
Here's a 3-minute walkthrough: <a href="https://www.youtube.com/watch?v=_9z105gqLqE">Jasmine's Hackathon demo</a>.
|
|
42
|
+
</p>
|
|
43
|
+
<p>
|
|
44
|
+
Built for weekend hacks, scales to production. Would love to hear what you think if you give it a spin.
|
|
45
|
+
</p>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|