markform 0.1.20 → 0.1.22

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.
Files changed (58) hide show
  1. package/README.md +44 -12
  2. package/dist/ai-sdk.d.mts +1 -1
  3. package/dist/ai-sdk.mjs +2 -2
  4. package/dist/{apply-DIvm1b1s.mjs → apply-C7mO7VkZ.mjs} +158 -95
  5. package/dist/apply-C7mO7VkZ.mjs.map +1 -0
  6. package/dist/bin.mjs +1 -1
  7. package/dist/{cli-FFMoEhFS.mjs → cli-C8F9yDsv.mjs} +102 -1225
  8. package/dist/cli-C8F9yDsv.mjs.map +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/{coreTypes-CkxML8g2.d.mts → coreTypes-BlsJkU1w.d.mts} +28 -2
  11. package/dist/{coreTypes-CPKXf2dc.mjs → coreTypes-CTLr-NGd.mjs} +24 -3
  12. package/dist/coreTypes-CTLr-NGd.mjs.map +1 -0
  13. package/dist/fillRecord-DTl5lnK0.d.mts +345 -0
  14. package/dist/fillRecordRenderer-CruJrLkj.mjs +1256 -0
  15. package/dist/fillRecordRenderer-CruJrLkj.mjs.map +1 -0
  16. package/dist/index.d.mts +22 -342
  17. package/dist/index.mjs +5 -5
  18. package/dist/render.d.mts +74 -0
  19. package/dist/render.mjs +4 -0
  20. package/dist/{session-CK0x28RO.mjs → session-BCcltrLA.mjs} +2 -2
  21. package/dist/{session-CK0x28RO.mjs.map → session-BCcltrLA.mjs.map} +1 -1
  22. package/dist/{session-ZHBi3LVQ.mjs → session-VeSkVrck.mjs} +1 -1
  23. package/dist/{shared-DwdyWmvE.mjs → shared-CsdT2T7k.mjs} +1 -1
  24. package/dist/{shared-DwdyWmvE.mjs.map → shared-CsdT2T7k.mjs.map} +1 -1
  25. package/dist/{shared-BTR35aMz.mjs → shared-fb0nkzQi.mjs} +1 -1
  26. package/dist/{src-wR7GoftB.mjs → src-CbRnGzMK.mjs} +205 -138
  27. package/dist/src-CbRnGzMK.mjs.map +1 -0
  28. package/dist/urlFormat-lls7CsEP.mjs +71 -0
  29. package/dist/urlFormat-lls7CsEP.mjs.map +1 -0
  30. package/docs/markform-apis.md +53 -0
  31. package/examples/movie-research/movie-deep-research-mock-filled.form.md +320 -343
  32. package/examples/movie-research/movie-deep-research.form.md +273 -308
  33. package/examples/movie-research/movie-research-demo.form.md +27 -41
  34. package/examples/parallel/parallel-research.form.md +33 -29
  35. package/examples/parallel/parallel-research.mock.filled.form.md +88 -0
  36. package/examples/rejection-test/rejection-test-mock-filled.form.md +21 -16
  37. package/examples/rejection-test/rejection-test-mock-filled.schema.json +1 -1
  38. package/examples/rejection-test/rejection-test.form.md +17 -15
  39. package/examples/rejection-test/rejection-test.session.yaml +88 -60
  40. package/examples/simple/simple-mock-filled.form.md +113 -126
  41. package/examples/simple/simple-mock-filled.schema.json +2 -3
  42. package/examples/simple/simple-skipped-filled.form.md +112 -129
  43. package/examples/simple/simple-skipped-filled.report.md +8 -8
  44. package/examples/simple/simple-skipped-filled.schema.json +2 -3
  45. package/examples/simple/simple-tags-syntax.form.md +32 -0
  46. package/examples/simple/simple-with-skips.session.yaml +663 -627
  47. package/examples/simple/simple.form.md +97 -113
  48. package/examples/simple/simple.schema.json +2 -3
  49. package/examples/simple/simple.session.yaml +663 -627
  50. package/examples/startup-deep-research/startup-deep-research.form.md +191 -235
  51. package/examples/startup-research/startup-research-mock-filled.form.md +128 -147
  52. package/examples/startup-research/startup-research.form.md +90 -129
  53. package/examples/twitter-thread/twitter-thread.form.md +373 -0
  54. package/package.json +5 -1
  55. package/dist/apply-DIvm1b1s.mjs.map +0 -1
  56. package/dist/cli-FFMoEhFS.mjs.map +0 -1
  57. package/dist/coreTypes-CPKXf2dc.mjs.map +0 -1
  58. package/dist/src-wR7GoftB.mjs.map +0 -1
@@ -2,491 +2,447 @@
2
2
  markform:
3
3
  spec: MF/0.1
4
4
  title: Startup Deep Research
5
- description: Comprehensive startup intelligence gathering with company info, founders, funding, competitors, social media, and community presence.
5
+ description: Comprehensive startup intelligence gathering with company info, founders,
6
+ funding, competitors, social media, and community presence.
6
7
  run_mode: research
7
- roles:
8
- - user
9
- - agent
8
+ harness:
9
+ max_patches_per_turn: 10
10
+ max_issues_per_turn: 5
10
11
  role_instructions:
11
- user: "Enter the startup name and any clarifying details (website, founder names, etc.)."
12
- agent: |
12
+ user: Enter the startup name and any clarifying details (website, founder names, etc.).
13
+ agent: >
13
14
  Research and fill in all fields for the specified startup.
15
+
14
16
  Guidelines:
17
+
15
18
  1. Start with the company website and Crunchbase for basic info
16
- 2. Cross-reference funding data with multiple sources (Crunchbase, PitchBook, press releases)
19
+
20
+ 2. Cross-reference funding data with multiple sources (Crunchbase, PitchBook,
21
+ press releases)
22
+
17
23
  3. Search Hacker News via hn.algolia.com for discussions and launches
24
+
18
25
  4. Check Product Hunt for product launches
26
+
19
27
  5. Use LinkedIn for founder backgrounds
28
+
20
29
  6. Search each social media platform directly for official accounts
30
+
21
31
  7. Include source URLs for every piece of information
32
+
22
33
  8. Leave unknown fields empty - don't guess or fabricate
34
+
23
35
  9. Keep descriptions concise (50-150 words max)
24
- harness:
25
- max_issues_per_turn: 5
26
- max_patches_per_turn: 10
27
36
  ---
28
- {% form id="startup_deep_research" title="Startup Deep Research" %}
29
37
 
30
- {% description ref="startup_deep_research" %}
38
+ <!-- form id="startup_deep_research" title="Startup Deep Research" -->
39
+
40
+ <!-- description ref="startup_deep_research" -->
31
41
  A comprehensive research form for gathering intelligence on startups including company
32
42
  basics, founders, funding, competitors, social media presence, and community signals.
33
- {% /description %}
43
+ <!-- /description -->
34
44
 
35
- {% group id="user_input" title="Company to Research" %}
45
+ <!-- group id="user_input" title="Company to Research" -->
36
46
 
37
- {% field kind="string" id="company_name" label="Company Name" role="user" required=true minLength=1 maxLength=200 %}{% /field %}
47
+ <!-- field kind="string" id="company_name" role="user" label="Company Name" maxLength=200 minLength=1 required=true --><!-- /field -->
38
48
 
39
- {% instructions ref="company_name" %}
49
+ <!-- instructions ref="company_name" -->
40
50
  Enter the startup name exactly as it’s commonly known (e.g., “Stripe”, “Notion”,
41
51
  “Figma”).
42
- {% /instructions %}
43
-
44
- {% field kind="string" id="additional_context" label="Additional Context" role="user" maxLength=1000 %}{% /field %}
52
+ <!-- /instructions -->
45
53
 
46
- {% instructions ref="additional_context" %}
47
- Optional but helpful: Include any details or sources you already have to aid research:
48
- - Website URL or social media links
49
- - Founder names or key people you know of
50
- - Approximate founding year or location
51
- - Links to articles, posts, or announcements you’ve seen
52
- - Any context to disambiguate (e.g., “the AI code assistant, not the cosmetics brand”)
53
- - Specific aspects you’re most interested in researching
54
+ <!-- field kind="string" id="additional_context" role="user" label="Additional Context" maxLength=1000 --><!-- /field -->
54
55
 
55
- The more context you provide, the more accurate and relevant the research will be.
56
- {% /instructions %}
56
+ <!-- instructions ref="additional_context" -->
57
+ Optional but helpful: Include any details or sources you already have to aid research:Website URL or social media linksFounder names or key people you know ofApproximate founding year or locationLinks to articles, posts, or announcements you’ve seenAny context to disambiguate (e.g., “the AI code assistant, not the cosmetics brand”)Specific aspects you’re most interested in researchingThe more context you provide, the more accurate and relevant the research will be.
58
+ <!-- /instructions -->
57
59
 
58
- {% /group %}
60
+ <!-- /group -->
59
61
 
60
- {% group id="basic_info" title="Company Overview" %}
62
+ <!-- group id="basic_info" title="Company Overview" -->
61
63
 
62
- {% field kind="url" id="website" label="Website URL" %}{% /field %}
64
+ <!-- field kind="url" id="website" label="Website URL" --><!-- /field -->
63
65
 
64
- {% instructions ref="website" %}
66
+ <!-- instructions ref="website" -->
65
67
  Primary company website.
66
68
  Source: Direct web search or crunchbase.com.
67
- {% /instructions %}
69
+ <!-- /instructions -->
68
70
 
69
- {% field kind="string" id="one_liner" label="One-Line Description" maxLength=200 %}{% /field %}
71
+ <!-- field kind="string" id="one_liner" label="One-Line Description" maxLength=200 --><!-- /field -->
70
72
 
71
- {% instructions ref="one_liner" %}
73
+ <!-- instructions ref="one_liner" -->
72
74
  Brief description of what the company does.
73
75
  Source: Company website tagline, crunchbase.com summary, or linkedin.com/company page.
74
- {% /instructions %}
76
+ <!-- /instructions -->
75
77
 
76
- {% field kind="string" id="founded_date" label="Founded Date" pattern="^\\d{4}(-\\d{2})?(-\\d{2})?$" %}{% /field %}
78
+ <!-- field kind="string" id="founded_date" label="Founded Date" pattern="^\\d{4}(-\\d{2})?(-\\d{2})?$" --><!-- /field -->
77
79
 
78
- {% instructions ref="founded_date" %}
80
+ <!-- instructions ref="founded_date" -->
79
81
  Format: YYYY or YYYY-MM or YYYY-MM-DD. Source: crunchbase.com, company About page, or
80
82
  press releases.
81
- {% /instructions %}
83
+ <!-- /instructions -->
82
84
 
83
- {% field kind="string" id="headquarters" label="Headquarters" %}{% /field %}
85
+ <!-- field kind="string" id="headquarters" label="Headquarters" --><!-- /field -->
84
86
 
85
- {% instructions ref="headquarters" %}
87
+ <!-- instructions ref="headquarters" -->
86
88
  Format: City, State/Country.
87
89
  Source: crunchbase.com, linkedin.com/company page, or website footer.
88
- {% /instructions %}
90
+ <!-- /instructions -->
89
91
 
90
- {% field kind="string" id="company_status" label="Company Status" %}{% /field %}
92
+ <!-- field kind="string" id="company_status" label="Company Status" --><!-- /field -->
91
93
 
92
- {% instructions ref="company_status" %}
94
+ <!-- instructions ref="company_status" -->
93
95
  Current status: Active, Acquired (by whom, when), IPO (ticker, date), Shutdown, etc.
94
96
  Source: crunchbase.com, press releases.
95
- {% /instructions %}
97
+ <!-- /instructions -->
96
98
 
97
- {% field kind="string" id="employee_count" label="Employee Count" %}{% /field %}
99
+ <!-- field kind="string" id="employee_count" label="Employee Count" --><!-- /field -->
98
100
 
99
- {% instructions ref="employee_count" %}
101
+ <!-- instructions ref="employee_count" -->
100
102
  Approximate headcount or range (e.g., “50-100”, “500+”). Source: linkedin.com/company
101
103
  page, crunchbase.com, or company website.
102
- {% /instructions %}
104
+ <!-- /instructions -->
103
105
 
104
- {% field kind="string" id="description" label="Company Description" maxLength=1000 %}{% /field %}
106
+ <!-- field kind="string" id="description" label="Company Description" maxLength=1000 --><!-- /field -->
105
107
 
106
- {% instructions ref="description" %}
108
+ <!-- instructions ref="description" -->
107
109
  2-3 paragraph summary of the company, product, and market.
108
110
  Source: Company website About page, crunchbase.com, Wikipedia if notable.
109
- {% /instructions %}
111
+ <!-- /instructions -->
110
112
 
111
- {% field kind="url_list" id="basic_info_sources" label="Company Overview Sources" %}{% /field %}
113
+ <!-- field kind="url_list" id="basic_info_sources" label="Company Overview Sources" --><!-- /field -->
112
114
 
113
- {% instructions ref="basic_info_sources" %}
115
+ <!-- instructions ref="basic_info_sources" -->
114
116
  URLs used as sources for this section.
115
117
  One URL per line.
116
- {% /instructions %}
117
-
118
- {% /group %}
119
-
120
- {% group id="founders_section" title="Founders & Key People" %}
118
+ <!-- /instructions -->
121
119
 
122
- {% field kind="table" id="founders" label="Founders" columnIds=["name", "title", "linkedin", "background"] columnLabels=["Name", "Title", "LinkedIn URL", "Background"] columnTypes=["string", "string", "url", "string"] minRows=1 maxRows=6 %}
120
+ <!-- /group -->
123
121
 
124
- | Name | Title | LinkedIn URL | Background |
125
- |------|-------|--------------|------------|
122
+ <!-- group id="founders_section" title="Founders & Key People" -->
126
123
 
127
- {% /field %}
124
+ <!-- field kind="table" id="founders" columnIds=["name", "title", "linkedin", "background"] columnLabels=["Name", "Title", "LinkedIn URL", "Background"] columnTypes=["string", "string", "url", "string"] label="Founders" maxRows=6 minRows=1 --><!-- /field -->
128
125
 
129
- {% instructions ref="founders" %}
126
+ <!-- instructions ref="founders" -->
130
127
  List founders and co-founders.
131
128
  Include name, current title, LinkedIn profile URL, and brief background (prior
132
129
  companies, notable roles, education).
133
130
  Sources: Company website Team/About page, linkedin.com profiles, crunchbase.com people
134
131
  section.
135
- {% /instructions %}
132
+ <!-- /instructions -->
136
133
 
137
- {% field kind="url_list" id="founders_sources" label="Founders Sources" %}{% /field %}
134
+ <!-- field kind="url_list" id="founders_sources" label="Founders Sources" --><!-- /field -->
138
135
 
139
- {% instructions ref="founders_sources" %}
136
+ <!-- instructions ref="founders_sources" -->
140
137
  URLs used as sources for this section.
141
138
  One URL per line.
142
- {% /instructions %}
139
+ <!-- /instructions -->
143
140
 
144
- {% /group %}
141
+ <!-- /group -->
145
142
 
146
- {% group id="funding_section" title="Funding History" %}
143
+ <!-- group id="funding_section" title="Funding History" -->
147
144
 
148
- {% field kind="string" id="total_funding" label="Total Funding Raised" %}{% /field %}
145
+ <!-- field kind="string" id="total_funding" label="Total Funding Raised" --><!-- /field -->
149
146
 
150
- {% instructions ref="total_funding" %}
147
+ <!-- instructions ref="total_funding" -->
151
148
  Total known funding (e.g., “$150M”). Source: crunchbase.com, pitchbook.com, or press
152
149
  releases.
153
- {% /instructions %}
150
+ <!-- /instructions -->
154
151
 
155
- {% field kind="string" id="last_valuation" label="Last Known Valuation" %}{% /field %}
152
+ <!-- field kind="string" id="last_valuation" label="Last Known Valuation" --><!-- /field -->
156
153
 
157
- {% instructions ref="last_valuation" %}
154
+ <!-- instructions ref="last_valuation" -->
158
155
  Most recent valuation if publicly known (e.g., “$1.5B”). Source: Press releases,
159
156
  crunchbase.com, pitchbook.com.
160
- {% /instructions %}
157
+ <!-- /instructions -->
161
158
 
162
- {% field kind="table" id="funding_rounds" label="Funding Rounds" columnIds=["round_type", "date", "amount", "lead_investors", "source_url"] columnTypes=["string", "string", "string", "string", "url"] %}
159
+ <!-- field kind="table" id="funding_rounds" columnIds=["round_type", "date", "amount", "lead_investors", "source_url"] columnLabels=["Round Type", "Date", "Amount", "Lead Investor(s)", "Source URL"] columnTypes=["string", "string", "string", "string", "url"] label="Funding Rounds" --><!-- /field -->
163
160
 
164
- | Round Type | Date | Amount | Lead Investor(s) | Source URL |
165
- |------------|------|--------|------------------|------------|
166
-
167
- {% /field %}
168
-
169
- {% instructions ref="funding_rounds" %}
161
+ <!-- instructions ref="funding_rounds" -->
170
162
  Most recent first. Date format: YYYY-MM Example: Series B | 2023-06 | $50M | Sequoia
171
163
  Capital | https://techcrunch.com/... Source: crunchbase.com funding rounds,
172
164
  pitchbook.com, techcrunch.com, company press releases.
173
- {% /instructions %}
165
+ <!-- /instructions -->
174
166
 
175
- {% field kind="url_list" id="funding_sources" label="Funding Sources" %}{% /field %}
167
+ <!-- field kind="url_list" id="funding_sources" label="Funding Sources" --><!-- /field -->
176
168
 
177
- {% instructions ref="funding_sources" %}
169
+ <!-- instructions ref="funding_sources" -->
178
170
  URLs used as sources for this section.
179
171
  One URL per line.
180
- {% /instructions %}
172
+ <!-- /instructions -->
181
173
 
182
- {% /group %}
174
+ <!-- /group -->
183
175
 
184
- {% group id="competitors_section" title="Competitors & Market Position" %}
176
+ <!-- group id="competitors_section" title="Competitors & Market Position" -->
185
177
 
186
- {% field kind="string" id="market_category" label="Market Category" %}{% /field %}
178
+ <!-- field kind="string" id="market_category" label="Market Category" --><!-- /field -->
187
179
 
188
- {% instructions ref="market_category" %}
180
+ <!-- instructions ref="market_category" -->
189
181
  Primary market/category (e.g., “Developer Tools”, “HR Tech”, “FinTech - Payments”).
190
182
  Source: crunchbase.com categories, g2.com categories.
191
- {% /instructions %}
192
-
193
- {% field kind="table" id="competitors" label="Key Competitors" minRows=0 maxRows=5 columnIds=["company_name", "website", "one_liner", "funding_stage", "source_url"] columnTypes=["string", "url", "string", "string", "url"] %}
183
+ <!-- /instructions -->
194
184
 
195
- | Company Name | Website | One-liner | Funding/Stage | Source URL |
196
- |--------------|---------|-----------|---------------|------------|
185
+ <!-- field kind="table" id="competitors" columnIds=["company_name", "website", "one_liner", "funding_stage", "source_url"] columnLabels=["Company Name", "Website", "One-liner", "Funding/Stage", "Source URL"] columnTypes=["string", "url", "string", "string", "url"] label="Key Competitors" maxRows=5 minRows=0 --><!-- /field -->
197
186
 
198
- {% /field %}
199
-
200
- {% instructions ref="competitors" %}
187
+ <!-- instructions ref="competitors" -->
201
188
  List 3-5 main competitors.
202
189
  Example: Notion | https://notion.so | All-in-one workspace | $275M Series C |
203
190
  https://crunchbase.com/... Source: crunchbase.com competitors section, g2.com
204
191
  alternatives, company investor decks, press comparisons.
205
- {% /instructions %}
192
+ <!-- /instructions -->
206
193
 
207
- {% field kind="string" id="competitive_positioning" label="Competitive Positioning" maxLength=500 %}{% /field %}
194
+ <!-- field kind="string" id="competitive_positioning" label="Competitive Positioning" maxLength=500 --><!-- /field -->
208
195
 
209
- {% instructions ref="competitive_positioning" %}
196
+ <!-- instructions ref="competitive_positioning" -->
210
197
  How does this company differentiate?
211
198
  Key advantages/disadvantages vs competitors.
212
199
  Source: Company website, product pages, press interviews, g2.com reviews.
213
- {% /instructions %}
200
+ <!-- /instructions -->
214
201
 
215
- {% field kind="url_list" id="competitors_sources" label="Competitors Sources" %}{% /field %}
202
+ <!-- field kind="url_list" id="competitors_sources" label="Competitors Sources" --><!-- /field -->
216
203
 
217
- {% instructions ref="competitors_sources" %}
204
+ <!-- instructions ref="competitors_sources" -->
218
205
  URLs used as sources for this section.
219
206
  One URL per line.
220
- {% /instructions %}
221
-
222
- {% /group %}
207
+ <!-- /instructions -->
223
208
 
224
- {% group id="social_media_section" title="Social Media Presence" %}
209
+ <!-- /group -->
225
210
 
226
- {% description ref="social_media_section" %}
227
- Search each platform directly for official company accounts.
228
- Note follower counts and activity level.
229
- {% /description %}
211
+ <!-- group id="social_media_section" title="Social Media Presence" -->
230
212
 
231
- {% field kind="string" id="twitter_x" label="Twitter/X" %}{% /field %}
213
+ <!-- field kind="string" id="twitter_x" label="Twitter/X" --><!-- /field -->
232
214
 
233
- {% instructions ref="twitter_x" %}
215
+ <!-- instructions ref="twitter_x" -->
234
216
  Format: “@handle | Followers | Last post date | URL” Example: "@stripe | 850K followers
235
217
  | Active daily | https://twitter.com/stripe" Source: Search x.com (twitter.com) directly
236
218
  for company name.
237
- {% /instructions %}
219
+ <!-- /instructions -->
238
220
 
239
- {% field kind="string" id="linkedin_company" label="LinkedIn Company Page" %}{% /field %}
221
+ <!-- field kind="string" id="linkedin_company" label="LinkedIn Company Page" --><!-- /field -->
240
222
 
241
- {% instructions ref="linkedin_company" %}
223
+ <!-- instructions ref="linkedin_company" -->
242
224
  Format: “Followers | Employees on LinkedIn | URL” Example: "500K followers | 2,500
243
225
  employees | https://linkedin.com/company/stripe" Source: Search linkedin.com/company/
244
226
  for company name.
245
- {% /instructions %}
227
+ <!-- /instructions -->
246
228
 
247
- {% field kind="string" id="youtube" label="YouTube" %}{% /field %}
229
+ <!-- field kind="string" id="youtube" label="YouTube" --><!-- /field -->
248
230
 
249
- {% instructions ref="youtube" %}
231
+ <!-- instructions ref="youtube" -->
250
232
  Format: “Channel name | Subscribers | Videos | URL” Example: "Stripe | 45K subscribers |
251
233
  150 videos | https://youtube.com/@stripe" Source: Search youtube.com for company name.
252
234
  Note if no official channel exists.
253
- {% /instructions %}
235
+ <!-- /instructions -->
254
236
 
255
- {% field kind="string" id="instagram" label="Instagram" %}{% /field %}
237
+ <!-- field kind="string" id="instagram" label="Instagram" --><!-- /field -->
256
238
 
257
- {% instructions ref="instagram" %}
239
+ <!-- instructions ref="instagram" -->
258
240
  Format: “@handle | Followers | URL” or “Not found” Source: Search instagram.com for
259
241
  company name. Many B2B companies don’t have Instagram presence.
260
- {% /instructions %}
242
+ <!-- /instructions -->
261
243
 
262
- {% field kind="string" id="tiktok" label="TikTok" %}{% /field %}
244
+ <!-- field kind="string" id="tiktok" label="TikTok" --><!-- /field -->
263
245
 
264
- {% instructions ref="tiktok" %}
246
+ <!-- instructions ref="tiktok" -->
265
247
  Format: “@handle | Followers | URL” or “Not found” Source: Search tiktok.com for company
266
248
  name. Primarily relevant for consumer-facing companies.
267
- {% /instructions %}
249
+ <!-- /instructions -->
268
250
 
269
- {% field kind="string" id="facebook" label="Facebook" %}{% /field %}
251
+ <!-- field kind="string" id="facebook" label="Facebook" --><!-- /field -->
270
252
 
271
- {% instructions ref="facebook" %}
253
+ <!-- instructions ref="facebook" -->
272
254
  Format: “Page name | Followers | URL” or “Not found” Source: Search facebook.com for
273
255
  company name.
274
- {% /instructions %}
256
+ <!-- /instructions -->
275
257
 
276
- {% field kind="string" id="discord" label="Discord" %}{% /field %}
258
+ <!-- field kind="string" id="discord" label="Discord" --><!-- /field -->
277
259
 
278
- {% instructions ref="discord" %}
260
+ <!-- instructions ref="discord" -->
279
261
  Format: “Server name | Members | Invite URL” or “Not found” Source: Check company
280
262
  website footer/community links, or web search “company name discord”.
281
- {% /instructions %}
263
+ <!-- /instructions -->
282
264
 
283
- {% field kind="string" id="reddit" label="Reddit Presence" %}{% /field %}
265
+ <!-- field kind="string" id="reddit" label="Reddit Presence" --><!-- /field -->
284
266
 
285
- {% instructions ref="reddit" %}
267
+ <!-- instructions ref="reddit" -->
286
268
  Format: “r/subreddit | Members | URL” or “No official subreddit” Also note if there are
287
269
  significant discussions in related subreddits.
288
270
  Source: Search reddit.com for company name, check for official subreddit.
289
- {% /instructions %}
271
+ <!-- /instructions -->
290
272
 
291
- {% field kind="url_list" id="social_media_sources" label="Social Media Sources" %}{% /field %}
273
+ <!-- field kind="url_list" id="social_media_sources" label="Social Media Sources" --><!-- /field -->
292
274
 
293
- {% instructions ref="social_media_sources" %}
275
+ <!-- instructions ref="social_media_sources" -->
294
276
  URLs used as sources for this section.
295
277
  One URL per line.
296
- {% /instructions %}
278
+ <!-- /instructions -->
297
279
 
298
- {% /group %}
280
+ <!-- /group -->
299
281
 
300
- {% group id="hacker_news_section" title="Hacker News Presence" %}
282
+ <!-- group id="hacker_news_section" title="Hacker News Presence" -->
301
283
 
302
- {% field kind="table" id="hn_posts" label="Notable Hacker News Posts" minRows=0 maxRows=5 columnIds=["title", "date", "points", "comments", "url"] columnTypes=["string", "date", "number", "number", "url"] %}
284
+ <!-- field kind="table" id="hn_posts" columnIds=["title", "date", "points", "comments", "url"] columnLabels=["Title", "Date", "Points", "Comments", "URL"] columnTypes=["string", "date", "number", "number", "url"] label="Notable Hacker News Posts" maxRows=5 minRows=0 --><!-- /field -->
303
285
 
304
- | Title | Date | Points | Comments | URL |
305
- |-------|------|--------|----------|-----|
306
-
307
- {% /field %}
308
-
309
- {% instructions ref="hn_posts" %}
286
+ <!-- instructions ref="hn_posts" -->
310
287
  List top 3-5 HN posts by points/relevance.
311
288
  Include: Show HN launches, funding announcements, major discussions about the company.
312
289
  Source: Search hn.algolia.com for company name, product name, and founder names.
313
- {% /instructions %}
290
+ <!-- /instructions -->
314
291
 
315
- {% field kind="url_list" id="hacker_news_sources" label="Hacker News Sources" %}{% /field %}
292
+ <!-- field kind="url_list" id="hacker_news_sources" label="Hacker News Sources" --><!-- /field -->
316
293
 
317
- {% instructions ref="hacker_news_sources" %}
294
+ <!-- instructions ref="hacker_news_sources" -->
318
295
  URLs used as sources for this section.
319
296
  One URL per line.
320
- {% /instructions %}
321
-
322
- {% /group %}
297
+ <!-- /instructions -->
323
298
 
324
- {% group id="product_hunt_section" title="Product Hunt Presence" %}
299
+ <!-- /group -->
325
300
 
326
- {% field kind="table" id="ph_launches" label="Product Hunt Launches" columnIds=["product_name", "date", "upvotes", "badges", "url"] columnTypes=["string", "date", "number", "string", "url"] %}
301
+ <!-- group id="product_hunt_section" title="Product Hunt Presence" -->
327
302
 
328
- | Product Name | Date | Upvotes | Badges | URL |
329
- |--------------|------|---------|--------|-----|
303
+ <!-- field kind="table" id="ph_launches" columnIds=["product_name", "date", "upvotes", "badges", "url"] columnLabels=["Product Name", "Date", "Upvotes", "Badges", "URL"] columnTypes=["string", "date", "number", "string", "url"] label="Product Hunt Launches" --><!-- /field -->
330
304
 
331
- {% /field %}
332
-
333
- {% instructions ref="ph_launches" %}
305
+ <!-- instructions ref="ph_launches" -->
334
306
  Note any badges: Product of the Day/Week/Month, Golden Kitty, etc.
335
307
  Source: Search producthunt.com for company name and product names.
336
- {% /instructions %}
308
+ <!-- /instructions -->
337
309
 
338
- {% field kind="url_list" id="product_hunt_sources" label="Product Hunt Sources" %}{% /field %}
310
+ <!-- field kind="url_list" id="product_hunt_sources" label="Product Hunt Sources" --><!-- /field -->
339
311
 
340
- {% instructions ref="product_hunt_sources" %}
312
+ <!-- instructions ref="product_hunt_sources" -->
341
313
  URLs used as sources for this section.
342
314
  One URL per line.
343
- {% /instructions %}
344
-
345
- {% /group %}
315
+ <!-- /instructions -->
346
316
 
347
- {% group id="deep_intel_section" title="Deep Intelligence Sources" %}
317
+ <!-- /group -->
348
318
 
349
- {% description ref="deep_intel_section" %}
350
- Alternative sources for deeper startup intelligence beyond standard databases.
351
- {% /description %}
319
+ <!-- group id="deep_intel_section" title="Deep Intelligence Sources" -->
352
320
 
353
- {% field kind="string" id="tech_stack" label="Tech Stack" maxLength=500 %}{% /field %}
321
+ <!-- field kind="string" id="tech_stack" label="Tech Stack" maxLength=500 --><!-- /field -->
354
322
 
355
- {% instructions ref="tech_stack" %}
323
+ <!-- instructions ref="tech_stack" -->
356
324
  Known technologies used (frameworks, infrastructure, tools).
357
325
  Source: builtwith.com, wappalyzer.com, stackshare.io, job postings, engineering blog.
358
- {% /instructions %}
326
+ <!-- /instructions -->
359
327
 
360
- {% field kind="string" id="github_presence" label="GitHub Presence" %}{% /field %}
328
+ <!-- field kind="string" id="github_presence" label="GitHub Presence" --><!-- /field -->
361
329
 
362
- {% instructions ref="github_presence" %}
330
+ <!-- instructions ref="github_presence" -->
363
331
  Format: “Org URL | Public repos | Total stars | Notable repos” Example:
364
332
  “github.com/stripe | 150 repos | 50K+ stars | stripe-js (5K stars)” Source: Search
365
333
  github.com for company name.
366
334
  Check for open source projects, SDKs, developer tools.
367
- {% /instructions %}
335
+ <!-- /instructions -->
368
336
 
369
- {% field kind="string" id="product_reviews" label="Product Reviews (G2/Capterra)" %}{% /field %}
337
+ <!-- field kind="string" id="product_reviews" label="Product Reviews (G2/Capterra)" --><!-- /field -->
370
338
 
371
- {% instructions ref="product_reviews" %}
339
+ <!-- instructions ref="product_reviews" -->
372
340
  Format: “Platform | Rating | # Reviews | URL” Example: "G2 | 4.5/5 | 1,200 reviews |
373
341
  https://g2.com/products/..." Source: g2.com, capterra.com, trustradius.com (primarily
374
342
  for B2B SaaS).
375
- {% /instructions %}
343
+ <!-- /instructions -->
376
344
 
377
- {% field kind="string" id="app_store_presence" label="App Store Presence" %}{% /field %}
345
+ <!-- field kind="string" id="app_store_presence" label="App Store Presence" --><!-- /field -->
378
346
 
379
- {% instructions ref="app_store_presence" %}
347
+ <!-- instructions ref="app_store_presence" -->
380
348
  Format: “iOS: Rating (# reviews) | Android: Rating (# reviews) | URLs” Example: “iOS:
381
349
  4.8 (50K reviews) | Android: 4.6 (100K reviews)” Source: Apple App Store
382
350
  (apps.apple.com), Google Play Store (play.google.com).
383
351
  Note if no mobile apps exist.
384
- {% /instructions %}
352
+ <!-- /instructions -->
385
353
 
386
- {% field kind="string" id="glassdoor_rating" label="Glassdoor Rating" %}{% /field %}
354
+ <!-- field kind="string" id="glassdoor_rating" label="Glassdoor Rating" --><!-- /field -->
387
355
 
388
- {% instructions ref="glassdoor_rating" %}
356
+ <!-- instructions ref="glassdoor_rating" -->
389
357
  Format: “Rating | # Reviews | CEO Approval | URL” Example: "4.2/5 | 500 reviews | 85%
390
358
  CEO approval | https://glassdoor.com/..." Source: glassdoor.com.
391
359
  Provides employee sentiment and culture insights.
392
- {% /instructions %}
360
+ <!-- /instructions -->
393
361
 
394
- {% field kind="table" id="hiring_signals" label="Hiring Signals" columnIds=["department", "roles", "notable_positions"] columnTypes=["string", "string", "string"] %}
362
+ <!-- field kind="table" id="hiring_signals" columnIds=["department", "roles", "notable_positions"] columnLabels=["Department", "Roles", "Notable Positions"] columnTypes=["string", "string", "string"] label="Hiring Signals" --><!-- /field -->
395
363
 
396
- | Department | Roles | Notable Positions |
397
- |------------|-------|-------------------|
398
-
399
- {% /field %}
400
-
401
- {% instructions ref="hiring_signals" %}
364
+ <!-- instructions ref="hiring_signals" -->
402
365
  Current job openings that indicate growth areas.
403
366
  Example: Engineering | 25 roles | Staff ML Engineer, Platform Lead Source: Company
404
367
  careers page, linkedin.com/company/jobs, lever.co, greenhouse.io job boards.
405
- {% /instructions %}
368
+ <!-- /instructions -->
406
369
 
407
- {% field kind="string" id="patents" label="Patents" %}{% /field %}
370
+ <!-- field kind="string" id="patents" label="Patents" --><!-- /field -->
408
371
 
409
- {% instructions ref="patents" %}
372
+ <!-- instructions ref="patents" -->
410
373
  Format: “# Patents filed/granted | Key patent areas | Source” Example: “12 patents
411
374
  granted | NLP, recommendation systems | patents.google.com” Source: patents.google.com,
412
375
  USPTO (uspto.gov), Espacenet.
413
376
  Search for company name and founder names.
414
- {% /instructions %}
415
-
416
- {% field kind="table" id="podcast_interviews" label="Podcast/Video Interviews" columnIds=["title", "podcast_show", "date", "url"] columnTypes=["string", "string", "string", "url"] %}
377
+ <!-- /instructions -->
417
378
 
418
- | Title | Podcast/Show | Date | URL |
419
- |-------|--------------|------|-----|
379
+ <!-- field kind="table" id="podcast_interviews" columnIds=["title", "podcast_show", "date", "url"] columnLabels=["Title", "Podcast/Show", "Date", "URL"] columnTypes=["string", "string", "string", "url"] label="Podcast/Video Interviews" --><!-- /field -->
420
380
 
421
- {% /field %}
422
-
423
- {% instructions ref="podcast_interviews" %}
381
+ <!-- instructions ref="podcast_interviews" -->
424
382
  Notable founder or exec interviews.
425
383
  Example: Building Stripe | How I Built This | 2021-03 | https://youtube.com/... Source:
426
384
  youtube.com, Spotify, Apple Podcasts.
427
385
  Search for founder names + “interview” or “podcast”.
428
- {% /instructions %}
386
+ <!-- /instructions -->
429
387
 
430
- {% field kind="string" id="wayback_history" label="Company Evolution (Wayback)" %}{% /field %}
388
+ <!-- field kind="string" id="wayback_history" label="Company Evolution (Wayback)" --><!-- /field -->
431
389
 
432
- {% instructions ref="wayback_history" %}
390
+ <!-- instructions ref="wayback_history" -->
433
391
  Notable pivots or changes observed from historical website snapshots.
434
392
  Example: “2019: Originally 'PaymentsAPI' focused on SMB; 2021: Rebranded, pivoted to
435
393
  enterprise” Source: web.archive.org - search for company domain, review snapshots from
436
394
  different years.
437
- {% /instructions %}
395
+ <!-- /instructions -->
438
396
 
439
- {% field kind="url_list" id="deep_intel_sources" label="Deep Intel Sources" %}{% /field %}
397
+ <!-- field kind="url_list" id="deep_intel_sources" label="Deep Intel Sources" --><!-- /field -->
440
398
 
441
- {% instructions ref="deep_intel_sources" %}
399
+ <!-- instructions ref="deep_intel_sources" -->
442
400
  URLs used as sources for this section.
443
401
  One URL per line.
444
- {% /instructions %}
445
-
446
- {% /group %}
402
+ <!-- /instructions -->
447
403
 
448
- {% group id="press_section" title="Notable Press Coverage" %}
404
+ <!-- /group -->
449
405
 
450
- {% field kind="table" id="press_coverage" label="Press Articles" minRows=0 maxRows=5 columnIds=["title", "publication", "date", "url"] columnTypes=["string", "string", "date", "url"] %}
406
+ <!-- group id="press_section" title="Notable Press Coverage" -->
451
407
 
452
- | Title | Publication | Date | URL |
453
- |-------|-------------|------|-----|
408
+ <!-- field kind="table" id="press_coverage" columnIds=["title", "publication", "date", "url"] columnLabels=["Title", "Publication", "Date", "URL"] columnTypes=["string", "string", "date", "url"] label="Press Articles" maxRows=5 minRows=0 --><!-- /field -->
454
409
 
455
- {% /field %}
456
-
457
- {% instructions ref="press_coverage" %}
410
+ <!-- instructions ref="press_coverage" -->
458
411
  List 3-5 most notable press articles.
459
412
  Focus on: funding announcements, major product launches, company profiles, notable
460
413
  interviews. Source: techcrunch.com, theinformation.com, bloomberg.com, forbes.com,
461
414
  wired.com, venturebeat.com, company Press page.
462
- {% /instructions %}
415
+ <!-- /instructions -->
463
416
 
464
- {% field kind="url_list" id="press_sources" label="Press Coverage Sources" %}{% /field %}
417
+ <!-- field kind="url_list" id="press_sources" label="Press Coverage Sources" --><!-- /field -->
465
418
 
466
- {% instructions ref="press_sources" %}
419
+ <!-- instructions ref="press_sources" -->
467
420
  URLs used as sources for this section.
468
421
  One URL per line.
469
- {% /instructions %}
422
+ <!-- /instructions -->
470
423
 
471
- {% /group %}
424
+ <!-- /group -->
472
425
 
473
- {% group id="sources_section" title="Research Metadata" %}
426
+ <!-- group id="sources_section" title="Research Metadata" -->
474
427
 
475
- {% field kind="date" id="research_date" label="Research Date" required=true %}{% /field %}
428
+ <!-- field kind="date" id="research_date" label="Research Date" required=true --><!-- /field -->
476
429
 
477
- {% instructions ref="research_date" %}
430
+ <!-- instructions ref="research_date" -->
478
431
  Date this research was conducted.
479
432
  Important for tracking data freshness.
480
- {% /instructions %}
433
+ <!-- /instructions -->
481
434
 
482
- {% field kind="string" id="research_notes" label="Research Notes" maxLength=1000 %}{% /field %}
435
+ <!-- field kind="string" id="research_notes" label="Research Notes" maxLength=1000 --><!-- /field -->
483
436
 
484
- {% instructions ref="research_notes" %}
437
+ <!-- instructions ref="research_notes" -->
485
438
  Any caveats, limitations, or notes about the research (e.g., “PitchBook access
486
439
  unavailable”, “Company is in stealth mode”, “Limited public information available”,
487
440
  “Paywalled sources not accessed”).
488
- {% /instructions %}
441
+ <!-- /instructions -->
442
+
443
+ <!-- /group -->
444
+
445
+ <!-- /form -->
446
+
489
447
 
490
- {% /group %}
491
448
 
492
- {% /form %}