markform 0.1.3 → 0.1.4

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