Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default async function Home() {
for (const slug of slugs) {
const doc = await getStartup<any>(slug)
const rawName = (doc.data?.name as string) || slug
const shortName = (doc.data?.shortName as string) || undefined
const baseName = (rawName.split(/[-–—]/)[0] || rawName).trim()
const name = baseName.split(/[\s-]+/).slice(0, 4).join(' ')
const description =
Expand All @@ -25,6 +26,7 @@ export default async function Home() {
items.push({
id: slug,
name,
shortName,
description,
category,
})
Expand Down
6 changes: 4 additions & 2 deletions components/startup-card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ export function StartupCard({ item, onReveal }: { item: StartupItem; onReveal?:
const toSlug = (s: string) => s.toLowerCase().trim().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)+/g, '')
const derivedHref = `/${toSlug(item.name)}`

const displayName = item.shortName || item.name

// Match Navbar's deterministic variant styling based on the URL segment (slug)
const logoVariantIndex = React.useMemo(() => {
const s = toSlug(item.name || '')
Expand Down Expand Up @@ -67,12 +69,12 @@ export function StartupCard({ item, onReveal }: { item: StartupItem; onReveal?:
onKeyDown={handleKeyDown}
onMouseLeave={handleMouseLeave}
className='group group/item block cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-md'
aria-label={item.ariaLabel || item.name}
aria-label={item.ariaLabel || displayName}
>
<Card className='relative min-h-[260px] rounded-md border bg-card/60 transition-colors hover:bg-card overflow-hidden motion-safe:group-hover:scale-[1.01] motion-reduce:transition-none'>
{/* randomized text effect */}
<div className='absolute inset-0 flex items-center justify-center p-4 text-center'>
<div className={nameClass}>{item.name}</div>
<div className={nameClass}>{displayName}</div>
</div>

<div
Expand Down
1 change: 1 addition & 0 deletions lib/ai/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export { landingFeatures2 } from './landingFeatures2'
export { landingPricing } from './landingPricing'
export { landingFaq } from './landingFaq'
export { generateLandingSections } from './generateLandingSections'
export { updateContent } from './updateContent'

export const openai = createOpenAI({
apiKey: process.env.OPENAI_API_KEY,
Expand Down
25 changes: 25 additions & 0 deletions lib/ai/updateContent.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { generateObject } from 'ai'
import { openai } from '.'
import { z } from 'zod'

export const updateContent = async (name: string) => {
return generateObject({
model: openai.responses('gpt-5'),
prompt: `Given this startup name: "${name}"

Create a short, concise shortName that captures the essence of the business in no more than 3 words.
The shortName should be:
- Maximum 3 words
- Catchy and memorable
- Captures the core business concept
- Suitable for branding/marketing use

Examples:
- "Candling AI: Fertility & Early Mortality Estimator" → "Candling AI"
- "Batch Traceability Platform" → "Batch Trace"
- "SoleScript AI" → "SoleScript AI"`,
schema: z.object({
shortName: z.string().describe('Short name for the startup, maximum 3 words'),
}),
})
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"test:watch": "vitest",
"test:devin": "tsx scripts/test-devin-session.ts",
"ideate": "tsx scripts/ideate.ts",
"ideate:persist": "tsx scripts/ideate-persist.ts"
"ideate:persist": "tsx scripts/ideate-persist.ts",
"update-shortname": "tsx scripts/updateContentShortName.ts"
},
"dependencies": {
"@ai-sdk/openai": "^2.0.8",
Expand Down
51 changes: 51 additions & 0 deletions scripts/updateContentShortName.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { listStartups } from '../lib/startups/listStartups'
import { getStartup } from '../lib/startups/getStartup'
import { setStartup } from '../lib/startups/setStartup'
import { updateContent } from '../lib/ai/updateContent'

async function updateAllStartupsWithShortName() {
console.log('Starting to update all startups with shortName field...')

const startups = await listStartups({ limit: 1000 })
console.log(`Found ${startups.length} startups to update`)

let updated = 0
let skipped = 0

for (const slug of startups) {
try {
console.log(`Processing ${slug}...`)

const startup = await getStartup(slug)

if (startup.data.shortName) {
console.log(` Skipping ${slug} - shortName already exists: ${startup.data.shortName}`)
skipped++
continue
}

const name = startup.data.name as string
if (!name) {
console.log(` Skipping ${slug} - no name field found`)
skipped++
continue
}

const result = await updateContent(name)
const shortName = result.object.shortName

const updatedData = { ...startup.data, shortName }
await setStartup(slug, { data: updatedData, content: startup.content })

console.log(` Updated ${slug} with shortName: "${shortName}"`)
updated++

} catch (error) {
console.error(`Error processing ${slug}:`, error)
}
}

console.log(`\nCompleted! Updated: ${updated}, Skipped: ${skipped}`)
}

updateAllStartupsWithShortName().catch(console.error)
1 change: 1 addition & 0 deletions startups/213verify.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ landingPage:
- Approve or edit suggested remedial actions and slow orders.
- One-click create and sync work orders to your EAM/CMMS.
- Monitor compliance status and export audit-ready 213.241 records.
shortName: 213Verify AI
---
# 213Verify AI — FRA Part 213 Track Inspection Log Auto‑Validator

Expand Down
1 change: 1 addition & 0 deletions startups/abovefold.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ landingPage:
- 'Tweak copy, imagery, and layout as needed.'
- Export CSS and assets or share for review.
- Implement and A/B test variants.
shortName: AboveFold AI
---
# AboveFold AI — Responsive Hero/Banner Suite

Expand Down
1 change: 1 addition & 0 deletions startups/accupack.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ landingPage:
inline.
- Export to PLM or PDF and share a vendor link.
- Collect vendor feedback and auto-update revisions.
shortName: AccuPack AI
---

# AccuPack AI — Tech Pack Auto‑Builder for Accessories
Expand Down
126 changes: 76 additions & 50 deletions startups/acme-claims.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,84 +3,110 @@ name: Acme Auto Claims AI
slug: acme-claims
domain: acmeclaims.ai
naics:
primary: "524291"
occupations: ["Claims Adjuster"]
primary: '524291'
occupations:
- Claims Adjuster
score:
remote_on_laptop: 0.9
model_capability: 0.8
overall: 0.85
vmv:
vision: "Zero-touch auto claims in minutes."
mission: "Automate FNOL to payout with AI and human-in-the-loop."
purpose: "Faster, fairer claim experiences."
vision: Zero-touch auto claims in minutes.
mission: Automate FNOL to payout with AI and human-in-the-loop.
purpose: 'Faster, fairer claim experiences.'
leanCanvas:
problem:
- "Claims processing is slow and manual"
- "Fraud/leakage increases costs"
- "Poor claimant experience"
- Claims processing is slow and manual
- Fraud/leakage increases costs
- Poor claimant experience
solution:
- "Agentic workflow from intake to payout"
- "Document parsing + fraud risk scoring"
- "Human-in-the-loop for edge cases"
uniqueValueProp: "Minutes-to-payout with better accuracy"
unfairAdvantage: "Proprietary claims patterns + insurer integrations"
customerSegments: ["Auto insurers", "Third-party administrators"]
channels: ["Broker partnerships", "Direct sales"]
revenueStreams: ["Per-claim", "SaaS"]
costStructure: ["LLM", "Infra", "Integrations"]
keyMetrics: ["Time-to-payout", "Fraud rate", "CSAT"]
- Agentic workflow from intake to payout
- Document parsing + fraud risk scoring
- Human-in-the-loop for edge cases
uniqueValueProp: Minutes-to-payout with better accuracy
unfairAdvantage: Proprietary claims patterns + insurer integrations
customerSegments:
- Auto insurers
- Third-party administrators
channels:
- Broker partnerships
- Direct sales
revenueStreams:
- Per-claim
- SaaS
costStructure:
- LLM
- Infra
- Integrations
keyMetrics:
- Time-to-payout
- Fraud rate
- CSAT
okrs:
- objective: "Reduce average claim cycle time"
- objective: Reduce average claim cycle time
keyResults:
- metric: "Cycle time"
target: "≤ 5 minutes"
- objective: "Maintain or improve accuracy"
- metric: Cycle time
target: ≤ 5 minutes
- objective: Maintain or improve accuracy
keyResults:
- metric: "Accuracy"
target: "≥ 99%"
- metric: Accuracy
target: ≥ 99%
storyBrand:
character: "Claims leaders"
problem: "Backlogs and leakage"
guide: "Agentic copilot"
plan: "Pilot → Integrate → Scale"
callToAction: "Start a pilot"
success: "Minutes to payout"
failure: "Status quo delays"
character: Claims leaders
problem: Backlogs and leakage
guide: Agentic copilot
plan: Pilot → Integrate → Scale
callToAction: Start a pilot
success: Minutes to payout
failure: Status quo delays
branding:
nameIdeas: ["ClaimSpark", "Adjustly"]
colors: { primary: "#0A84FF", secondary: "#111827" }
fonts: { heading: "Geist", body: "Inter" }
logoPrompt: "Simple spark + shield logo"
nameIdeas:
- ClaimSpark
- Adjustly
colors:
primary: '#0A84FF'
secondary: '#111827'
fonts:
heading: Geist
body: Inter
logoPrompt: Simple spark + shield logo
pricing:
plans:
- id: startup
name: "Startup"
name: Startup
price: 199
interval: monthly
features: ["Up to 1k claims/mo", "Email support"]
features:
- Up to 1k claims/mo
- Email support
- id: growth
name: "Growth"
name: Growth
price: 999
interval: monthly
features: ["Up to 10k claims/mo", "Priority support"]
features:
- Up to 10k claims/mo
- Priority support
stripe:
productId: ""
productId: ''
priceIds: {}
prd:
summary: "Automate FNOL → triage → adjudication → payout"
summary: Automate FNOL → triage → adjudication → payout
scopeMVP:
- "Intake web form and API"
- "Document parsing (OCR + extraction)"
- "Risk scoring (fraud propensity)"
- "Human review step"
- "Decision + payout initiation"
- Intake web form and API
- Document parsing (OCR + extraction)
- Risk scoring (fraud propensity)
- Human review step
- Decision + payout initiation
experiments:
- hypothesis: "Automated triage reduces cycle time by 50%"
metric: "Cycle time"
- hypothesis: Automated triage reduces cycle time by 50%
metric: Cycle time
variantCount: 3
variants:
- name: "Self-serve insurers"
changes: ["No human-in-loop", "Lower limits"]
- name: Self-serve insurers
changes:
- No human-in-loop
- Lower limits
shortName: Acme Claims AI
---

export default function Page() {
Expand Down
1 change: 1 addition & 0 deletions startups/adjusure.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ landingPage:
- Run tests and compare to baselines or expected results.
- Review impact and defect reports; assign fixes and re-run.
- Gate releases via CI/CD and monitor ongoing rule changes.
shortName: AdjuSure AI
---
# AdjuSure AI — Claims Rule Regression Tester

Expand Down
1 change: 1 addition & 0 deletions startups/advisory.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ landingPage:
- Generate the advisory pack and export to EFB/PDF.
- 'PIC reviews, validates, and records acceptance per company procedures.'
- Archive the pack with notes for post-flight audit.
shortName: Dispatch Pack
---
# Advisory Dispatch Pack Generator (OFP‑Lite)

Expand Down
1 change: 1 addition & 0 deletions startups/aeolianguard.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,7 @@ landingPage:
- 'Configure limits, baselines, geofences, and alert routes'
- 'Go live: view real-time maps, receive exceedance alerts, act fast'
- Review automated reports; tune operations and thresholds over time
shortName: AeolianGuard AI
---
# AeolianGuard — Dust & Noise Compliance Analytics

Expand Down
1 change: 1 addition & 0 deletions startups/aerofrat.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ landingPage:
- >-
Monitor for changes, auto re‑score, and export to your SMS or audit
package.
shortName: AeroFRAT AI
---
# AeroFRAT AI

Expand Down
1 change: 1 addition & 0 deletions startups/aerogrid.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,7 @@ landingPage:
- >-
Continuous optimization: weekly tuning, reports, and ongoing operator
support.
shortName: AeroGrid
---
# AeroGrid Advisor

Expand Down
1 change: 1 addition & 0 deletions startups/allegrorent.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ landingPage:
condition photos.
- Recurring billing runs automatically; smart dunning handles failures.
- 'Track returns, swaps, and repairs; renew or convert to purchase.'
shortName: AllegroRent AI
---
# AllegroRent AI

Expand Down
1 change: 1 addition & 0 deletions startups/allergen.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,7 @@ landingPage:
- >-
Scale: add lines/plants, refine rules, and integrate with ERP/label
systems.
shortName: Allergen Copilot
---
# Allergen Cross-Contact Compliance Copilot (AC4) for Roasted Nuts & Peanut Butter

Expand Down
1 change: 1 addition & 0 deletions startups/annealing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ landingPage:
- Approve and apply via HMI\/PLC or export run sheets.
- Monitor KPIs; auto-adjust as heat load and ambient shift.
- 'Review ROI on scrap, breakage, and kWh\/m²; scale to other lines.'
shortName: LehrPilot
---
# Annealing Lehr Profile Optimizer (ALPO)

Expand Down
1 change: 1 addition & 0 deletions startups/anomalywatch.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ landingPage:
- >-
Learn: Capture outcomes, reduce false positives, and maintain an audit
trail.
shortName: AnomalyWatch Payments
---
# AnomalyWatch RTGS/ACH

Expand Down
Loading