From ff1941b35fb0f9700755ad701bf6f336559e8297 Mon Sep 17 00:00:00 2001 From: Prashant Sridharan <914007+CoolAssPuppy@users.noreply.github.com> Date: Tue, 30 Jun 2026 01:35:40 +0100 Subject: [PATCH] Revise State of Startups landing page (#47335) --- .../StateOfStartups2026Content.tsx | 176 +- .../components/CohortToggle.tsx | 42 + .../components/SectionCallout.tsx | 32 + .../components/SurveyChannelMixChart.tsx | 93 + .../components/SurveyChapterSection.tsx | 353 +- .../components/SurveyChart.tsx | 565 +- .../components/SurveyChartShell.tsx | 76 + .../components/SurveyCompareStatCard.tsx | 38 + .../components/SurveyCrossTabChart.tsx | 179 + .../components/SurveyPullQuoteGrid.tsx | 50 + .../components/SurveyStatCard.tsx | 83 +- .../components/SurveySummarizedAnswer.tsx | 2 + .../components/SurveyWordCloud.tsx | 1 + .../charts/AICodebasePercentChart.tsx | 33 - .../components/charts/AICodingToolsChart.tsx | 53 - .../components/charts/AIModelsChart.tsx | 48 - .../charts/AcceleratorParticipationChart.tsx | 36 - .../components/charts/AuthProviderChart.tsx | 48 - .../charts/BiggestChallengeChart.tsx | 34 - .../components/charts/BuildingAgentsChart.tsx | 26 - .../components/charts/DatabasesChart.tsx | 45 - .../components/charts/FundingStageChart.tsx | 33 - .../components/charts/IndustryChart.tsx | 36 - .../charts/InitialPayingCustomersChart.tsx | 46 - .../components/charts/LocationChart.tsx | 24 - .../components/charts/MCPAdoptionChart.tsx | 26 - .../components/charts/NewIdeasChart.tsx | 48 - .../charts/PaidSubscriptionsChart.tsx | 48 - .../charts/RegularSocialMediaUseChart.tsx | 49 - .../components/charts/RoleChart.tsx | 32 - .../components/charts/SalesToolsChart.tsx | 45 - .../components/charts/WorldOutlookChart.tsx | 24 - .../components/survey-data-context.tsx | 141 - .../components/use-distribution.ts | 25 + .../components/year-context.tsx | 4 - .../lib/preload-survey-data.ts | 215 - .../app/state-of-startups/lib/survey-key.ts | 49 + .../app/state-of-startups/lib/survey-keys.ts | 87 + .../app/state-of-startups/lib/survey-sql.ts | 75 + apps/www/app/state-of-startups/page.tsx | 19 +- .../data/surveys/state-of-startups-2026.tsx | 1891 +- .../data/surveys/state-of-startups-data.json | 21744 ++++++++++++++++ .../surveys/state-of-startups-participants.ts | 336 + .../generate-state-of-startups-data.ts | 228 + 44 files changed, 24456 insertions(+), 2782 deletions(-) create mode 100644 apps/www/app/state-of-startups/components/CohortToggle.tsx create mode 100644 apps/www/app/state-of-startups/components/SectionCallout.tsx create mode 100644 apps/www/app/state-of-startups/components/SurveyChannelMixChart.tsx create mode 100644 apps/www/app/state-of-startups/components/SurveyChartShell.tsx create mode 100644 apps/www/app/state-of-startups/components/SurveyCompareStatCard.tsx create mode 100644 apps/www/app/state-of-startups/components/SurveyCrossTabChart.tsx create mode 100644 apps/www/app/state-of-startups/components/SurveyPullQuoteGrid.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/AICodebasePercentChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/AICodingToolsChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/AIModelsChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/AcceleratorParticipationChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/AuthProviderChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/BiggestChallengeChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/BuildingAgentsChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/DatabasesChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/FundingStageChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/IndustryChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/InitialPayingCustomersChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/LocationChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/MCPAdoptionChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/NewIdeasChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/PaidSubscriptionsChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/RegularSocialMediaUseChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/RoleChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/SalesToolsChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/charts/WorldOutlookChart.tsx delete mode 100644 apps/www/app/state-of-startups/components/survey-data-context.tsx create mode 100644 apps/www/app/state-of-startups/components/use-distribution.ts delete mode 100644 apps/www/app/state-of-startups/lib/preload-survey-data.ts create mode 100644 apps/www/app/state-of-startups/lib/survey-key.ts create mode 100644 apps/www/app/state-of-startups/lib/survey-keys.ts create mode 100644 apps/www/app/state-of-startups/lib/survey-sql.ts create mode 100644 apps/www/data/surveys/state-of-startups-data.json create mode 100644 apps/www/data/surveys/state-of-startups-participants.ts create mode 100644 apps/www/scripts/generate-state-of-startups-data.ts diff --git a/apps/www/app/state-of-startups/StateOfStartups2026Content.tsx b/apps/www/app/state-of-startups/StateOfStartups2026Content.tsx index b8e53c9e977..58841f11ded 100644 --- a/apps/www/app/state-of-startups/StateOfStartups2026Content.tsx +++ b/apps/www/app/state-of-startups/StateOfStartups2026Content.tsx @@ -10,16 +10,10 @@ import { Button, cn } from 'ui' import { ParticipantsCarousel } from './components/ParticipantsCarousel' import { StateOfStartupsAuroraHeader } from './components/StateOfStartupsAuroraHeader' -import { - SurveyDataProvider, - type SurveyDataCache, - type SurveyStatCache, -} from './components/survey-data-context' import { SurveyChapter } from './components/SurveyChapter' import { SurveyChapterSection } from './components/SurveyChapterSection' import { SurveySectionBreak } from './components/SurveySectionBreak' import { YearProvider } from './components/year-context' -import { YearToggle } from './components/YearToggle' interface FloatingTocProps { tocRef: RefObject @@ -121,13 +115,7 @@ function FloatingTableOfContents({ ) } -export default function StateOfStartups2026Content({ - preloadedData, - preloadedStats, -}: { - preloadedData: SurveyDataCache - preloadedStats: SurveyStatCache -}) { +export default function StateOfStartups2026Content() { const [showFloatingToc, setShowFloatingToc] = useState(false) const [isTocOpen, setIsTocOpen] = useState(false) const [activeChapter, setActiveChapter] = useState(1) @@ -200,104 +188,78 @@ export default function StateOfStartups2026Content({ return ( - - - - {showFloatingToc && ( - - - - - + + + {showFloatingToc && ( + + + - )} - - {/* Intro section */} -
- - -
- {/* Intro text */} -
-

{pageData.heroSection.subheader}

-

{pageData.heroSection.cta}

-
- - {/* Table of contents */} -
    - {pageData.pageChapters.map((chapter, chapterIndex) => ( -
  1. - - - {chapterIndex + 1} - {' '} - {chapter.shortTitle} - -
  2. - ))} -
+ + )} + + {/* Intro section */} +
+ + +
+ {/* Intro text */} +
+

{pageData.heroSection.subheader}

+

{pageData.heroSection.cta}

- -
- - {pageData.pageChapters.map((chapter, chapterIndex) => ( - [0]['pullQuoteCarousel'] - } - ).pullQuoteCarousel - } - > - {chapter.sections.map((section, sectionIndex) => ( - [0]['pullQuote'] - } - ).pullQuote - } - newInYear={(section as { newInYear?: 2025 | 2026 }).newInYear} - /> + {/* Table of contents */} +
    + {pageData.pageChapters.map((chapter, chapterIndex) => ( +
  1. + + + {chapterIndex + 1} + {' '} + {chapter.shortTitle} + +
  2. ))} - - ))} - - - - +
+
+ + +
+ + {pageData.pageChapters.map((chapter, chapterIndex) => ( + + {chapter.sections.map((section, sectionIndex) => ( + + ))} + + ))} + + +
) } diff --git a/apps/www/app/state-of-startups/components/CohortToggle.tsx b/apps/www/app/state-of-startups/components/CohortToggle.tsx new file mode 100644 index 00000000000..56751b15282 --- /dev/null +++ b/apps/www/app/state-of-startups/components/CohortToggle.tsx @@ -0,0 +1,42 @@ +'use client' + +export interface CohortToggleOption { + label: string + filter: string | string[] | null +} + +interface CohortToggleProps { + eyebrow: string + options: CohortToggleOption[] + value: string + onValueChange: (label: string) => void +} + +export function CohortToggle({ eyebrow, options, value, onValueChange }: CohortToggleProps) { + return ( +
+ + {eyebrow} + +
+ {options.map((option) => { + const isActive = option.label === value + return ( + + ) + })} +
+
+ ) +} diff --git a/apps/www/app/state-of-startups/components/SectionCallout.tsx b/apps/www/app/state-of-startups/components/SectionCallout.tsx new file mode 100644 index 00000000000..641700a83b9 --- /dev/null +++ b/apps/www/app/state-of-startups/components/SectionCallout.tsx @@ -0,0 +1,32 @@ +import { ArrowUpRight } from 'lucide-react' +import Link from 'next/link' + +export interface SectionCalloutData { + eyebrow: string + body: string + href: string + cta: string + external?: boolean +} + +export function SectionCallout({ eyebrow, body, href, cta, external }: SectionCalloutData) { + return ( +
+
+ + {eyebrow} + +

{body}

+ + {cta} + + +
+
+ ) +} diff --git a/apps/www/app/state-of-startups/components/SurveyChannelMixChart.tsx b/apps/www/app/state-of-startups/components/SurveyChannelMixChart.tsx new file mode 100644 index 00000000000..0b7b9fc65b8 --- /dev/null +++ b/apps/www/app/state-of-startups/components/SurveyChannelMixChart.tsx @@ -0,0 +1,93 @@ +'use client' + +import { useMemo } from 'react' + +import { distributionPercent, getDistribution } from '../lib/survey-keys' +import { ChartLegend, SurveyChartShell } from './SurveyChartShell' +import { useYear } from './year-context' + +export interface ChannelCohort { + label: string + filter: string + tone: 'accent' | 'muted' +} + +export interface ChannelRow { + target: string + display: string +} + +interface SurveyChannelMixChartProps { + title: string + eyebrow?: string + column: string + cohortColumn: string + cohorts: ChannelCohort[] + rows: ChannelRow[] +} + +export function SurveyChannelMixChart({ + title, + eyebrow, + column, + cohortColumn, + cohorts, + rows, +}: SurveyChannelMixChartProps) { + const { year } = useYear() + + const data = useMemo(() => { + const cohortDists = cohorts.map((c) => + getDistribution(year, column, 'multi', { [cohortColumn]: c.filter }) + ) + return rows.map((row) => ({ + display: row.display, + values: cohorts.map((_, ci) => distributionPercent(cohortDists[ci], row.target)), + })) + }, [year, column, cohortColumn, cohorts, rows]) + + const hasData = data.some((r) => r.values.some((v) => v !== null)) + + return ( + +
+ ({ label: c.label, tone: c.tone, variant: 'dot' }))} + /> + +
+ {data.map((row) => ( +
+ + {row.display} + +
+ {row.values.map((v, ci) => ( +
+
+
+
+
+ + {v === null ? '—' : `${v}%`} + +
+ ))} +
+
+ ))} +
+
+ + ) +} diff --git a/apps/www/app/state-of-startups/components/SurveyChapterSection.tsx b/apps/www/app/state-of-startups/components/SurveyChapterSection.tsx index ddab6a06257..766829481f5 100644 --- a/apps/www/app/state-of-startups/components/SurveyChapterSection.tsx +++ b/apps/www/app/state-of-startups/components/SurveyChapterSection.tsx @@ -1,172 +1,221 @@ 'use client' -import { useAccent } from './accent-context' -import { AcceleratorParticipationChart } from './charts/AcceleratorParticipationChart' -import { AICodebasePercentChart } from './charts/AICodebasePercentChart' -import { AICodingToolsChart } from './charts/AICodingToolsChart' -import { AIModelsChart } from './charts/AIModelsChart' -import { AuthProviderChart } from './charts/AuthProviderChart' -import { BiggestChallengeChart } from './charts/BiggestChallengeChart' -import { BuildingAgentsChart } from './charts/BuildingAgentsChart' -import { DatabasesChart } from './charts/DatabasesChart' -import { FundingStageChart } from './charts/FundingStageChart' -import { IndustryChart } from './charts/IndustryChart' -import { InitialPayingCustomersChart } from './charts/InitialPayingCustomersChart' -import { LocationChart } from './charts/LocationChart' -import { MCPAdoptionChart } from './charts/MCPAdoptionChart' -import { NewIdeasChart } from './charts/NewIdeasChart' -import { PaidSubscriptionsChart } from './charts/PaidSubscriptionsChart' -import { RegularSocialMediaUseChart } from './charts/RegularSocialMediaUseChart' -import { RoleChart } from './charts/RoleChart' -import { SalesToolsChart } from './charts/SalesToolsChart' -import { WorldOutlookChart } from './charts/WorldOutlookChart' +import type { SurveySection } from '~/data/surveys/state-of-startups-2026' +import { useMemo, useState } from 'react' + +import { getDistribution } from '../lib/survey-keys' +import type { Aggregation, SurveyFilters } from '../lib/survey-keys' +import { CohortToggle } from './CohortToggle' +import { SectionCallout } from './SectionCallout' +import { SurveyChannelMixChart } from './SurveyChannelMixChart' +import { SurveyChart } from './SurveyChart' +import { SurveyCrossTabChart } from './SurveyCrossTabChart' import { SurveyPullQuote } from './SurveyPullQuote' +import { SurveyPullQuoteGrid } from './SurveyPullQuoteGrid' import { SurveyRankedAnswersPair } from './SurveyRankedAnswersPair' import { SurveySectionBreak } from './SurveySectionBreak' -import { SurveyStatCard, type SurveyStatSource } from './SurveyStatCard' +import { SurveyStatCard } from './SurveyStatCard' import { SurveySummarizedAnswer } from './SurveySummarizedAnswer' import { SurveyWordCloud } from './SurveyWordCloud' -import { useYear, type SurveyYear } from './year-context' +import { YearProvider } from './year-context' +import { YearToggle } from './YearToggle' -interface SurveyChapterSectionProps { - title: string - description: string - stats?: Array<{ percent: number; label: string; source?: SurveyStatSource }> - charts?: string[] +export function SurveyChapterSection({ section }: { section: SurveySection }) { + const { + id, + eyebrow, + title, + description, + statsHeading, + stats, + charts, + pullQuote, + pullQuotes, + cohortToggle, + callout, + wordCloud, + summarizedAnswer, + rankedAnswersPair, + } = section - wordCloud?: { - label: string - words: { text: string; count: number }[] - } - summarizedAnswer?: { - label: string - answers: string[] - } - rankedAnswersPair?: Array<{ label: string; answers: string[] }> - pullQuote?: { - quote: string - author: string - authorPosition?: string - authorAvatar?: string - } - /** - * Set when an entire section's data first appeared in a given survey year. - * If the user toggles the page to an earlier year, the section body is - * replaced with a "Not available in " placeholder while the - * title and description still render. - */ - newInYear?: SurveyYear - children?: React.ReactNode -} + const [cohortLabel, setCohortLabel] = useState(cohortToggle?.defaultLabel ?? '') -export function SurveyChapterSection({ - title, - description, - stats, - charts, - wordCloud, - summarizedAnswer, - rankedAnswersPair, - pullQuote, - newInYear, - children, -}: SurveyChapterSectionProps) { - const accent = useAccent() - const { year } = useYear() - const isAvailableForYear = !newInYear || year >= newInYear + // The active cohort toggle option merges its filter into every stat and bar + // chart in the section. Cross-tab and channel-mix carry their own cohorts. + const cohortFilter: SurveyFilters | undefined = useMemo(() => { + if (!cohortToggle) return undefined + const option = cohortToggle.options.find((o) => o.label === cohortLabel) + if (!option || option.filter === null) return undefined + return { [cohortToggle.key]: option.filter } + }, [cohortToggle, cohortLabel]) const eyebrowColor = 'text-brand-link dark:text-brand' - const chartComponents = { - AcceleratorParticipationChart, - AICodebasePercentChart, - AICodingToolsChart, - AIModelsChart, - AuthProviderChart, - BiggestChallengeChart, - BuildingAgentsChart, - DatabasesChart, - FundingStageChart, - IndustryChart, - InitialPayingCustomersChart, - LocationChart, - MCPAdoptionChart, - NewIdeasChart, - PaidSubscriptionsChart, - RegularSocialMediaUseChart, - RoleChart, - SalesToolsChart, - WorldOutlookChart, - } + // A section can be compared across years only if it has any 2025 data. New-in- + // 2026 questions (share of codebase, auth, agents, MCP, the AI-codebase + // cross-tabs) have no 2025 baseline, so we hide the year toggle for them. + const hasComparison = useMemo(() => { + const probe = (col: string, agg: Aggregation, f?: SurveyFilters) => + getDistribution(2025, col, agg, f) !== undefined + if (stats.some((s) => s.query && probe(s.query.column, s.query.aggregation, s.query.filters))) + return true + return charts.some((c) => { + if (c.kind === 'cross-tab') { + return c.cohorts.some((co) => + c.series.some((s) => + probe(s.query.column, s.query.aggregation, { [c.axisColumn]: co.filter }) + ) + ) + } + if (c.kind === 'channel-mix') { + return c.cohorts.some((co) => probe(c.column, 'multi', { [c.cohortColumn]: co.filter })) + } + return probe(c.column, c.aggregation, c.filters) + }) + }, [stats, charts]) + // Each section keeps its own 2025/2026 state so a reader can compare a single + // section's stats and charts without affecting the rest of the page. return ( -
-
-
-

- {title} -

-

- {description} -

-
- - {isAvailableForYear ? ( - <> - {stats && ( - - )} - - {charts?.map((chartName, index) => { - const ChartComponent = chartComponents[chartName as keyof typeof chartComponents] - return ChartComponent ? : null - })} - - {rankedAnswersPair && } - - {wordCloud && } - - {summarizedAnswer && ( - - )} - - {children} - - ) : ( -
-

Not available in {year}.

-

- This question was added to the {newInYear} survey. Switch the year toggle to{' '} - {newInYear} to view. + +

+
+
+
+

+ {eyebrow} +

+

{title}

+
+

+ {description}

-
+ + + {/* Section-level year comparison control, sitting just above the data. + Hidden for new-in-2026 sections that have no 2025 baseline. */} + {hasComparison && ( +
+ + Compare year + + +
+ )} + + {cohortToggle && ( + + )} + + {/* Optional question header describing the stat cards below as the + answer to a specific survey question. */} + {statsHeading && ( +
+

+ {'Q&A'} +

+

+ {statsHeading.title} + {statsHeading.note && ( + + ({statsHeading.note}) + + )} +

+
+ )} + + {stats.length > 0 && ( + + )} + + {charts.map((chart, index) => { + if (chart.kind === 'cross-tab') { + return ( + + ) + } + if (chart.kind === 'channel-mix') { + return ( + + ) + } + return ( + + ) + })} + + {rankedAnswersPair && rankedAnswersPair.length > 0 && ( + + )} + + {wordCloud && } + + {summarizedAnswer && ( + + )} + + {callout && } +
+ + {pullQuote && ( + )} + + {pullQuotes && pullQuotes.length > 0 && } + +
- - {pullQuote && isAvailableForYear && ( - - )} - - -
+ ) } diff --git a/apps/www/app/state-of-startups/components/SurveyChart.tsx b/apps/www/app/state-of-startups/components/SurveyChart.tsx index 7bdc9195e9c..adc3063053e 100644 --- a/apps/www/app/state-of-startups/components/SurveyChart.tsx +++ b/apps/www/app/state-of-startups/components/SurveyChart.tsx @@ -2,489 +2,166 @@ import CodeBlock from '~/components/CodeBlock/CodeBlock' import { motion } from 'framer-motion' -import { ChevronsUpDown } from 'lucide-react' -import { useCallback, useEffect, useMemo, useState } from 'react' -import { - Button, - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from 'ui' +import { useMemo, useState } from 'react' +import { Button } from 'ui' -import { useAccent } from './accent-context' -import { useSurveyDataCache, type ChartDataItem } from './survey-data-context' +import type { Aggregation, SurveyFilters } from '../lib/survey-key' +import { distributionToBars, getDistribution, mergeFilters } from '../lib/survey-keys' +import { buildSurveySql } from '../lib/survey-sql' +import { SurveyChartShell } from './SurveyChartShell' import TwoOptionToggle from './TwoOptionToggle' -import { rpcNameForYear, useYear, type SurveyYear } from './year-context' - -// Sentinel for “no filter” -const NO_FILTER = 'unset' - -interface FilterOption { - value: string - label: string -} - -interface FilterConfig { - label: string - options: FilterOption[] -} - -interface Filters { - [key: string]: FilterConfig -} - -interface FilterColumnConfig { - label: string - options: string[] -} - -// Sometimes the label doesn't match the value, so we need to map them -// Also, our options aren't always in a predicatable order, so we need to map them too -const FILTER_COLUMN_CONFIGS: Record = { - team_size: { - label: 'Team Size', - options: ['1–10', '11–50', '51–100', '101–250', '250+'], - }, - money_raised: { - label: 'Money Raised', - options: ['USD $0–10M', 'USD $11–50M', 'USD $51–100M', 'USD $100M+'], - }, - person_age: { - label: 'Age', - options: ['18–21', '22–29', '30–39', '40–49', '50–59', '60+'], - }, - location: { - label: 'Location', - options: [ - 'Africa', - 'Asia', - 'Europe', - 'Middle East', - 'North America', - 'South America', - 'Remote', - ], - }, -} - -function useFilterOptions(filterColumns: string[]) { - // Build filters synchronously since everything is predefined - const filters: Filters = {} - - for (const column of filterColumns) { - const config = FILTER_COLUMN_CONFIGS[column] - - if (!config) { - console.warn(`No configuration found for filter column: ${column}`) - continue - } - - filters[column] = { - label: config.label, - options: config.options.map((option) => ({ value: option, label: option })), - } - } - - return { filters } -} +import { useYear } from './year-context' interface SurveyChartProps { title: string - targetColumn: string - filterColumns: string[] - generateSQLQuery?: (activeFilters: Record) => string - /** - * Base RPC name without a year suffix (e.g. `get_role_stats`). The chart - * appends `_` based on the active year context. - */ - functionName: string - /** - * Year in which this question was first asked. When the user views an - * earlier year, the chart shows a "new question" empty state instead of - * fetching. - */ - newInYear?: SurveyYear + /** Smaller parenthetical under the title clarifying how the question was asked. */ + note?: string + column: string + aggregation: Aggregation + /** Static filters baked into the chart config (e.g. location = North America). */ + filters?: SurveyFilters + /** Section-level cohort toggle filter, merged on top of `filters`. */ + cohortFilter?: SurveyFilters + maxBars?: number } +const accentBarFg = 'bg-brand' +const accentBarText = 'text-brand-link dark:text-brand' + export function SurveyChart({ title, - targetColumn, // Used for SQL query generation when generateSQLQuery is provided - filterColumns, - generateSQLQuery, - functionName, - newInYear, + note, + column, + aggregation, + filters, + cohortFilter, + maxBars, }: SurveyChartProps) { const { year } = useYear() - const isAvailableForYear = !newInYear || year >= newInYear - const resolvedFunctionName = rpcNameForYear(functionName, year) - const { get, fetchAndCache } = useSurveyDataCache() - const accent = useAccent() - const accentBg = 'hsl(var(--brand-300))' - const accentBarFg = 'bg-brand' - const accentBarText = 'text-brand-link dark:text-brand' - // Each chart uses a subset of available filters, defined below - const { filters } = useFilterOptions(filterColumns) - - // Start with all filters unset (showing "all") - const [activeFilters, setActiveFilters] = useState( - filterColumns.reduce( - (acc: Record, col: string) => ({ ...acc, [col]: NO_FILTER }), - {} - ) + const effectiveFilters = useMemo( + () => mergeFilters(filters, cohortFilter), + [filters, cohortFilter] ) - // Build function parameters based on filterColumns - const buildFunctionParams = useCallback((filterValues: Record) => { - const params: Record = {} - if (filterValues.person_age && filterValues.person_age !== NO_FILTER) { - params.person_age_filter = [filterValues.person_age] - } - if (filterValues.location && filterValues.location !== NO_FILTER) { - params.location_filter = [filterValues.location] - } - if (filterValues.money_raised && filterValues.money_raised !== NO_FILTER) { - params.money_raised_filter = [filterValues.money_raised] - } - if (filterValues.team_size && filterValues.team_size !== NO_FILTER) { - params.team_size_filter = [filterValues.team_size] - } - return params - }, []) - - const params = useMemo( - () => buildFunctionParams(activeFilters), - [activeFilters, buildFunctionParams] - ) - - const cached = isAvailableForYear ? get(resolvedFunctionName, params) : undefined - const [chartData, setChartData] = useState(cached ?? []) - const [isLoading, setIsLoading] = useState(!cached && isAvailableForYear) - const [dataError, setDataError] = useState(null) - - // Sync data with cache + on-demand fetch when year/filters change - useEffect(() => { - if (!isAvailableForYear) { - setChartData([]) - setIsLoading(false) - setDataError(null) - return - } - - const next = get(resolvedFunctionName, params) - if (next) { - setChartData(next) - setIsLoading(false) - setDataError(null) - return - } - - let cancelled = false - setIsLoading(true) - setDataError(null) - fetchAndCache(resolvedFunctionName, params) - .then((data) => { - if (cancelled) return - setChartData(data) - setIsLoading(false) - }) - .catch((err: any) => { - if (cancelled) return - setDataError(err?.message ?? 'Error fetching data') - setIsLoading(false) - }) - - return () => { - cancelled = true - } - }, [resolvedFunctionName, params, isAvailableForYear, get, fetchAndCache]) + const chartData = useMemo(() => { + const dist = getDistribution(year, column, aggregation, effectiveFilters) + return distributionToBars(dist, maxBars) + }, [year, column, aggregation, effectiveFilters, maxBars]) const [view, setView] = useState<'chart' | 'sql'>('chart') + const [isExpanded, setIsExpanded] = useState(false) - // Handle both view change and expansion via a wrapper function const handleViewChange = (newView: 'chart' | 'sql') => { setView(newView) setIsExpanded(true) } - const setFilterValue = (filterKey: string, value: string) => { - setActiveFilters((prev: Record) => ({ - ...prev, - [filterKey]: value, - })) - } - - // Find the maximum value for scaling the bars const maxValue = chartData.length > 0 ? Math.max(...chartData.map((item) => item.value)) : 0 - // State for expand/collapse button - const [isExpanded, setIsExpanded] = useState(false) - - // Fixed height for all states (loading, error, loaded collapsed) const FIXED_HEIGHT = 300 // px const BUTTON_AREA_HEIGHT = 40 // px const CHART_HEIGHT = FIXED_HEIGHT - BUTTON_AREA_HEIGHT // px + const sql = useMemo( + () => buildSurveySql(year, column, aggregation, effectiveFilters, maxBars), + [year, column, aggregation, effectiveFilters, maxBars] + ) + return ( -
-
-

Q&A

-

{title}

-
- -
- {/* Filters and toggle */} -
- {filters && activeFilters && setFilterValue && ( -
- {Object.entries(filters).map(([filterKey, filterConfig]) => ( - - ))} -
- )} -
- -
+ +
+
+
- - {!isAvailableForYear ? ( -
-

- This question was added to the {newInYear} survey. -

-

- Switch the year to {newInYear} to view results. -

-
- ) : dataError ? ( -
-

Error: {dataError}

-
- ) : view === 'chart' ? ( +
+ + {view === 'chart' ? ( +
- {chartData.length > 0 ? ( -
- {chartData.map((item, index) => ( -
- {/* Text above the bar */} -
- {item.label} - {item.value < 1 ? '<1%' : `${item.value}%`} -
+ {chartData.map((item, index) => ( +
+ {/* Text above the bar */} +
+ {item.label} + {item.value < 1 ? '<1%' : `${item.value}%`} +
- {/* Progress bar */} -
- {/* Background pattern for the entire bar */} -
- - {/* Filled portion of the bar */} -
- {/* Foreground pattern for the filled portion */} -
-
-
-
- ))} -
- ) : ( -
-

- No responses match those filters. Maybe next year? -

- +
+
+
+
+
- )} + ))}
- ) : ( -
- {generateSQLQuery ? ( - {generateSQLQuery(activeFilters)} - ) : ( - - {`// Function call: ${resolvedFunctionName}(${JSON.stringify(buildFunctionParams(activeFilters), null, 2)})`} - - )} -
- )} - - {/* Expand button overlay - only show for chart view */} - {view === 'chart' && !isExpanded && !dataError && chartData.length > 3 && ( -
- -
- )} - -
-
- ) -} - -// Helper to build SQL WHERE clauses from active filters -// Accepts optional initialClauses for charts that need extra constraints -// (e.g., "column IS NOT NULL") -// Note: This function is used by chart components that generate SQL queries -export function buildWhereClause( - activeFilters: Record, - initialClauses: string[] = [] -) { - const whereClauses: string[] = [...initialClauses] - - for (const [column, value] of Object.entries(activeFilters)) { - if (value && value !== NO_FILTER) { - whereClauses.push(`${column} = '${value}'`) - } - } - - return whereClauses.length > 0 ? `WHERE ${whereClauses.join('\n AND ')}` : '' -} - -// Dropdown filter component -function SurveyFilter({ - filterKey, - filterConfig, - selectedValue, - setFilterValue, -}: { - filterKey: string - filterConfig: { - label: string - options: { value: string; label: string }[] - } - selectedValue: string - setFilterValue: (filterKey: string, value: string) => void -}) { - return ( - - - - - - {filterConfig.options - .filter((opt) => opt.value !== NO_FILTER) - .map((option) => ( - setFilterValue(filterKey, option.value)} - className={selectedValue === option.value ? 'text-brand-600' : ''} - > - {option.label} - - ))} - - {selectedValue !== NO_FILTER && ( -
- setFilterValue(filterKey, NO_FILTER)} - className="text-foreground-lighter" - > - Clear - + ) : ( +
+ {sql}
)} - - + + {view === 'chart' && !isExpanded && chartData.length > 3 && ( +
+ +
+ )} + + ) } diff --git a/apps/www/app/state-of-startups/components/SurveyChartShell.tsx b/apps/www/app/state-of-startups/components/SurveyChartShell.tsx new file mode 100644 index 00000000000..1c02bb2ab0f --- /dev/null +++ b/apps/www/app/state-of-startups/components/SurveyChartShell.tsx @@ -0,0 +1,76 @@ +import type { ReactNode } from 'react' + +const CHART_GRADIENT = + 'radial-gradient(circle at center -150%, hsl(var(--brand-300)), transparent 80%), radial-gradient(ellipse at center 230%, hsl(var(--background-surface-200)), transparent 75%)' + +/** Shared frame for every survey chart: gradient container + Q&A/eyebrow header. + * When `isEmpty` is set (no data for the active year), renders the + * "added in 2026" placeholder instead of the chart body. */ +export function SurveyChartShell({ + eyebrow, + title, + note, + isEmpty = false, + emptyNoun = 'question', + children, +}: { + eyebrow?: string + title: string + /** Smaller parenthetical under the title clarifying how the question was asked. */ + note?: string + isEmpty?: boolean + emptyNoun?: string + children: ReactNode +}) { + return ( +
+
+ {eyebrow && ( +

+ {eyebrow} +

+ )} +

+ {title} + {note && ({note})} +

+
+ {isEmpty ? ( +
+

+ This {emptyNoun} was added to the 2026 survey. +

+

+ Switch the year to 2026 to view results. +

+
+ ) : ( + children + )} +
+ ) +} + +/** Legend swatch + caption row, shared by the cross-tab and channel-mix charts. */ +export function ChartLegend({ + items, +}: { + items: { label: string; tone: 'accent' | 'muted'; variant: 'line' | 'dot' }[] +}) { + return ( +
+ {items.map((item) => ( +
+ + + {item.label} + +
+ ))} +
+ ) +} diff --git a/apps/www/app/state-of-startups/components/SurveyCompareStatCard.tsx b/apps/www/app/state-of-startups/components/SurveyCompareStatCard.tsx new file mode 100644 index 00000000000..7ff9c754b4a --- /dev/null +++ b/apps/www/app/state-of-startups/components/SurveyCompareStatCard.tsx @@ -0,0 +1,38 @@ +'use client' + +import type { DistributionQuery } from '../lib/survey-key' +import { useDistributionPercent } from './use-distribution' + +function CompareValue({ caption, query }: { caption: string; query: DistributionQuery }) { + const percent = useDistributionPercent(query) + return ( +
+ + {caption} + + + {percent === null ? '—' : `${percent}%`} + +
+ ) +} + +export function SurveyCompareStatCard({ + label, + a, + b, +}: { + label: string + a: { caption: string; query: DistributionQuery } + b: { caption: string; query: DistributionQuery } +}) { + return ( +
+
+ + +
+

{label}

+
+ ) +} diff --git a/apps/www/app/state-of-startups/components/SurveyCrossTabChart.tsx b/apps/www/app/state-of-startups/components/SurveyCrossTabChart.tsx new file mode 100644 index 00000000000..5001b30346a --- /dev/null +++ b/apps/www/app/state-of-startups/components/SurveyCrossTabChart.tsx @@ -0,0 +1,179 @@ +'use client' + +import { useMemo } from 'react' + +import type { Aggregation } from '../lib/survey-key' +import { distributionPercent, getDistribution } from '../lib/survey-keys' +import { ChartLegend, SurveyChartShell } from './SurveyChartShell' +import { useYear } from './year-context' + +export interface CrossTabCohort { + label: string + filter: string +} + +export interface CrossTabSeries { + caption: string + tone: 'accent' | 'muted' + query: { column: string; aggregation: Aggregation; target: string | string[] } +} + +interface SurveyCrossTabChartProps { + title: string + eyebrow?: string + axisColumn: string + cohorts: CrossTabCohort[] + series: CrossTabSeries[] + xAxisLabel?: string + yAxisLabel?: string +} + +// SVG geometry +const W = 640 +const H = 300 +const PAD_LEFT = 52 +const PAD_RIGHT = 16 +const PAD_TOP = 24 +const PAD_BOTTOM = 72 + +const ACCENT = 'hsl(var(--brand-default))' +const MUTED = 'hsl(var(--foreground-light))' + +export function SurveyCrossTabChart({ + title, + eyebrow, + axisColumn, + cohorts, + series, + xAxisLabel, + yAxisLabel = '% of respondents', +}: SurveyCrossTabChartProps) { + const { year } = useYear() + + const lines = useMemo(() => { + return series.map((s) => { + const points = cohorts.map((cohort) => { + const dist = getDistribution(year, s.query.column, s.query.aggregation, { + [axisColumn]: cohort.filter, + }) + return distributionPercent(dist, s.query.target) + }) + return { ...s, points } + }) + }, [series, cohorts, axisColumn, year]) + + const hasData = lines.some((l) => l.points.some((p) => p !== null)) + + const innerW = W - PAD_LEFT - PAD_RIGHT + const innerH = H - PAD_TOP - PAD_BOTTOM + const x = (i: number) => + cohorts.length <= 1 ? PAD_LEFT + innerW / 2 : PAD_LEFT + (i * innerW) / (cohorts.length - 1) + const y = (pct: number) => PAD_TOP + (1 - pct / 100) * innerH + + return ( + +
+ ({ label: l.caption, tone: l.tone, variant: 'line' }))} + /> + + + {/* horizontal gridlines at 0/25/50/75/100% */} + {[0, 25, 50, 75, 100].map((g) => ( + + + + {g}% + + + ))} + + {/* y-axis title */} + + {yAxisLabel} + + + {/* series lines */} + {lines.map((l) => { + const pts = l.points + .map((p, i) => (p === null ? null : `${x(i)},${y(p)}`)) + .filter(Boolean) + .join(' ') + const stroke = l.tone === 'accent' ? ACCENT : MUTED + return ( + + + {l.points.map((p, i) => + p === null ? null : ( + + ) + )} + + ) + })} + + {/* x-axis cohort labels */} + {cohorts.map((c, i) => ( + + {c.label} + + ))} + + {/* x-axis title */} + {xAxisLabel && ( + + {xAxisLabel} + + )} + +
+
+ ) +} diff --git a/apps/www/app/state-of-startups/components/SurveyPullQuoteGrid.tsx b/apps/www/app/state-of-startups/components/SurveyPullQuoteGrid.tsx new file mode 100644 index 00000000000..8fdee7f3de5 --- /dev/null +++ b/apps/www/app/state-of-startups/components/SurveyPullQuoteGrid.tsx @@ -0,0 +1,50 @@ +import { SurveySectionBreak } from './SurveySectionBreak' + +export interface PullQuoteGridItem { + quote: string + author: string + authorPosition?: string + theme?: string +} + +export function SurveyPullQuoteGrid({ quotes }: { quotes: PullQuoteGridItem[] }) { + return ( + <> + + + + ) +} diff --git a/apps/www/app/state-of-startups/components/SurveyStatCard.tsx b/apps/www/app/state-of-startups/components/SurveyStatCard.tsx index 0c1f88e544d..41a30578a64 100644 --- a/apps/www/app/state-of-startups/components/SurveyStatCard.tsx +++ b/apps/www/app/state-of-startups/components/SurveyStatCard.tsx @@ -1,75 +1,42 @@ 'use client' -import { useEffect, useMemo, useRef, useState } from 'react' +import { useEffect, useRef, useState } from 'react' -import { useAccent } from './accent-context' -import { useSurveyDataCache } from './survey-data-context' +import type { DistributionQuery, SurveyFilters } from '../lib/survey-key' +import { useDistributionPercent } from './use-distribution' import { useYear } from './year-context' const ANIMATION_DURATION = 600 -// Stats are written against the 2026 narrative. If a stat declares a -// `source` ({ column, aggregation, target }), the card looks up the live -// percent for the active year in the preloaded stat cache. Otherwise it -// falls back to the static `percent` for 2026 and "—" for other years. -const NARRATIVE_YEAR = 2026 - -export interface SurveyStatSource { - column: string - /** - * 'single' | 'multi' | 'boolean'. Kept as `string` here so narrative - * literals don't need `as const` casts; preload-survey-data.ts dispatches - * on the literal value when calling the matching generic RPC. - */ - aggregation: string - /** Bucket label(s) to match in the cached stat rows. Sums when multiple. */ - target: string | string[] +export interface StatQuery extends DistributionQuery { + newIn2026?: boolean } interface SurveyStatCardProps { label: string - percent: number - source?: SurveyStatSource + /** Data-driven percent. Omit when `value` is provided. */ + query?: StatQuery + /** Static percent to display as-is (for derived/combined figures that don't + * map to a single column). Overrides `query`. */ + value?: number + /** Section-level cohort toggle filter, merged on top of the query filters. */ + cohortFilter?: SurveyFilters } -export function SurveyStatCard({ label, percent, source }: SurveyStatCardProps) { +export function SurveyStatCard({ label, query, value, cohortFilter }: SurveyStatCardProps) { const cardRef = useRef(null) - const accent = useAccent() const { year } = useYear() - const { getStat } = useSurveyDataCache() const accentBg = 'bg-brand' const accentText = 'text-brand' - // Resolve the percent to display: live value when a source is declared and - // present in the cache, otherwise fall back to the static 2026 baseline - // (with "—" on prior years). - const resolvedPercent: number | null = useMemo(() => { - if (source) { - const data = getStat(year, source.column) - if (data && data.respondentCount > 0) { - const targets = Array.isArray(source.target) ? source.target : [source.target] - let count = 0 - let matched = 0 - for (const row of data.rows) { - if (targets.includes(row.label)) { - count += row.count - matched += 1 - } - } - if (matched > 0) { - return Math.round((count / data.respondentCount) * 100) - } - // Cache present but target not in this year's rows → option didn't - // exist that year. Render "—". - return null - } - // No cache entry for this (year, column) — column likely didn't exist - // that year, or the preload errored. Fall through to the static - // fallback so the 2026 page still shows something pre-deploy. - } - return year === NARRATIVE_YEAR ? percent : null - }, [source, year, getStat, percent]) + // A static `value` wins; otherwise resolve from the embedded dataset for the + // active year. Returns null when the option/column has no data that year + // (e.g. a new-in-2026 question viewed at 2025), which renders an em dash. + const queried = useDistributionPercent(query, cohortFilter) + const resolvedPercent = value ?? queried + + const isNewThisYear = resolvedPercent === null && query?.newIn2026 && year < 2026 const [displayValue, setDisplayValue] = useState(0) const [hasAnimated, setHasAnimated] = useState(false) @@ -115,7 +82,7 @@ export function SurveyStatCard({ label, percent, source }: SurveyStatCardProps) }, [resolvedPercent, hasAnimated]) // After the initial animation, snap to the latest resolved value when the - // year toggle (or live data) changes. + // year toggle (or cohort toggle) changes. useEffect(() => { if (!hasAnimated) return if (resolvedPercent === null) { @@ -186,9 +153,13 @@ export function SurveyStatCard({ label, percent, source }: SurveyStatCardProps) ) : (

- — + {isNewThisYear ? ( + New in 2026 + ) : ( + '—' + )}

)}

{label}

diff --git a/apps/www/app/state-of-startups/components/SurveySummarizedAnswer.tsx b/apps/www/app/state-of-startups/components/SurveySummarizedAnswer.tsx index 2a79588b88d..6187fe3bb8b 100644 --- a/apps/www/app/state-of-startups/components/SurveySummarizedAnswer.tsx +++ b/apps/www/app/state-of-startups/components/SurveySummarizedAnswer.tsx @@ -1,7 +1,9 @@ 'use client' import { useEffect, useState } from 'react' + import { useAccent } from './accent-context' + import './surveyResults.css' const ROTATION_DURATION = 4000 diff --git a/apps/www/app/state-of-startups/components/SurveyWordCloud.tsx b/apps/www/app/state-of-startups/components/SurveyWordCloud.tsx index 65a4aad7731..6b36f148760 100644 --- a/apps/www/app/state-of-startups/components/SurveyWordCloud.tsx +++ b/apps/www/app/state-of-startups/components/SurveyWordCloud.tsx @@ -1,6 +1,7 @@ 'use client' import { useEffect, useState } from 'react' + import { useAccent } from './accent-context' const TIMER_DURATION = 3000 diff --git a/apps/www/app/state-of-startups/components/charts/AICodebasePercentChart.tsx b/apps/www/app/state-of-startups/components/charts/AICodebasePercentChart.tsx deleted file mode 100644 index a2b3a78f9f7..00000000000 --- a/apps/www/app/state-of-startups/components/charts/AICodebasePercentChart.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateAICodebasePercentSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters, ['ai_generated_codebase_percent IS NOT NULL']) - - return `SELECT - ai_generated_codebase_percent AS band, - COUNT(*) AS total -FROM responses_2026 -${whereClause} -GROUP BY ai_generated_codebase_percent -ORDER BY CASE - WHEN ai_generated_codebase_percent = '0%' THEN 1 - WHEN ai_generated_codebase_percent = '1-25%' THEN 2 - WHEN ai_generated_codebase_percent = '26-50%' THEN 3 - WHEN ai_generated_codebase_percent = '51-75%' THEN 4 - WHEN ai_generated_codebase_percent = '76-100%' THEN 5 - ELSE 6 - END;` -} - -export function AICodebasePercentChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/AICodingToolsChart.tsx b/apps/www/app/state-of-startups/components/charts/AICodingToolsChart.tsx deleted file mode 100644 index f81f21dc613..00000000000 --- a/apps/www/app/state-of-startups/components/charts/AICodingToolsChart.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateAICodingToolsSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH ai_coding_tools_mapping AS ( - SELECT - id, - CASE - WHEN technology IN ( - 'Cursor', - 'Windsurf', - 'Cline', - 'Visual Studio Code', - 'Lovable', - 'Bolt', - 'v0', - 'Tempo', - 'None' - ) THEN technology - WHEN LOWER(technology) LIKE '%antigravity%' THEN 'Antigravity' - WHEN LOWER(technology) LIKE '%claude%' THEN 'Claude or Claude Code' - WHEN LOWER(technology) LIKE '%codex%' - OR LOWER(technology) LIKE '%chatgpt%' - OR LOWER(technology) LIKE '%chat gpt%' - OR LOWER(technology) LIKE '%openai%' THEN 'Codex' - END AS technology_clean - FROM ( - SELECT id, unnest(ai_coding_tools) AS technology - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - technology_clean AS technology, - COUNT(DISTINCT id) AS total - FROM ai_coding_tools_mapping - WHERE technology_clean IS NOT NULL - GROUP BY technology_clean - ORDER BY total DESC;` -} - -export function AICodingToolsChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/AIModelsChart.tsx b/apps/www/app/state-of-startups/components/charts/AIModelsChart.tsx deleted file mode 100644 index 897bbd1a3a9..00000000000 --- a/apps/www/app/state-of-startups/components/charts/AIModelsChart.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateAIModelsSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH ai_models_used_mapping AS ( - SELECT - id, - CASE - WHEN technology IN ( - 'OpenAI', - 'Anthropic/Claude', - 'Hugging Face', - 'Custom models', - 'SageMaker', - 'Bedrock', - 'Cohere', - 'Mistral' - ) THEN technology - WHEN LOWER(technology) LIKE '%gemini%' THEN 'Gemini' - WHEN LOWER(technology) = 'deepseek' THEN 'DeepSeek' - ELSE 'Other' - END AS technology_clean - FROM ( - SELECT id, unnest(ai_models_used) AS technology - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - technology_clean AS technology, - COUNT(DISTINCT id) AS total - FROM ai_models_used_mapping - GROUP BY technology_clean - ORDER BY total DESC;` -} - -export function AIModelsChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/AcceleratorParticipationChart.tsx b/apps/www/app/state-of-startups/components/charts/AcceleratorParticipationChart.tsx deleted file mode 100644 index 88a9e027824..00000000000 --- a/apps/www/app/state-of-startups/components/charts/AcceleratorParticipationChart.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateAcceleratorParticipationSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters, ['accelerator_participation IS NOT NULL']) - - return `WITH accelerator_mapping AS ( - SELECT - accelerator_participation, - CASE - WHEN accelerator_participation IN ('YC', 'Techstars', 'EF', '500 Global', 'Plug and Play', 'Antler') THEN accelerator_participation - WHEN accelerator_participation = 'Did not participate in an accelerator' THEN NULL - ELSE 'Other' - END AS accelerator_clean - FROM responses_2026 - ${whereClause ? '\n ' + whereClause : ''} -) -SELECT - accelerator_clean AS accelerator_participation, - COUNT(*) AS total -FROM accelerator_mapping -WHERE accelerator_clean IS NOT NULL -GROUP BY accelerator_clean -ORDER BY total DESC;` -} - -export function AcceleratorParticipationChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/AuthProviderChart.tsx b/apps/www/app/state-of-startups/components/charts/AuthProviderChart.tsx deleted file mode 100644 index 59718681edd..00000000000 --- a/apps/www/app/state-of-startups/components/charts/AuthProviderChart.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateAuthProviderSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH auth_provider_mapping AS ( - SELECT - id, - CASE - WHEN provider IN ( - 'Supabase Auth', - 'Auth0', - 'Clerk', - 'NextAuth / Auth.js', - 'Firebase Auth', - 'AWS Cognito', - 'Stytch', - 'WorkOS', - 'Rolled our own' - ) THEN provider - ELSE 'Other' - END AS provider_clean - FROM ( - SELECT id, unnest(auth_provider) AS provider - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - provider_clean AS provider, - COUNT(DISTINCT id) AS total - FROM auth_provider_mapping - GROUP BY provider_clean - ORDER BY total DESC;` -} - -export function AuthProviderChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/BiggestChallengeChart.tsx b/apps/www/app/state-of-startups/components/charts/BiggestChallengeChart.tsx deleted file mode 100644 index 2337f098906..00000000000 --- a/apps/www/app/state-of-startups/components/charts/BiggestChallengeChart.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateBiggestChallengeSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters, ['biggest_challenge IS NOT NULL']) - - return `WITH biggest_challenge_mapping AS ( - SELECT - biggest_challenge, - CASE - WHEN biggest_challenge IN ('Customer acquisition', 'Technical complexity', 'Product-market fit', 'Product-market fit', 'Fundraising', 'Hiring', 'Other') THEN biggest_challenge - ELSE 'Other' - END AS biggest_challenge_clean - FROM responses_2026 - ${whereClause} -) -SELECT - biggest_challenge_clean AS biggest_challenge, - COUNT(*) AS total -FROM biggest_challenge_mapping -GROUP BY biggest_challenge_clean -ORDER BY total DESC;` -} - -export function BiggestChallengeChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/BuildingAgentsChart.tsx b/apps/www/app/state-of-startups/components/charts/BuildingAgentsChart.tsx deleted file mode 100644 index c278d1f848a..00000000000 --- a/apps/www/app/state-of-startups/components/charts/BuildingAgentsChart.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateBuildingAgentsSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters, ['building_ai_agents IS NOT NULL']) - - return `SELECT - building_ai_agents AS answer, - COUNT(*) AS total -FROM responses_2026 -${whereClause} -GROUP BY building_ai_agents -ORDER BY total DESC;` -} - -export function BuildingAgentsChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/DatabasesChart.tsx b/apps/www/app/state-of-startups/components/charts/DatabasesChart.tsx deleted file mode 100644 index 060f0f8a1bd..00000000000 --- a/apps/www/app/state-of-startups/components/charts/DatabasesChart.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateDatabasesSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH database_mapping AS ( - SELECT - id, - CASE - WHEN technology IN ( - 'Supabase', - 'PostgreSQL', - 'MySQL', - 'MongoDB', - 'Redis', - 'Firebase', - 'SQLite' - ) THEN technology - ELSE 'Other' - END AS technology_clean - FROM ( - SELECT id, unnest(databases) AS technology - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - technology_clean AS technology, - COUNT(DISTINCT id) AS total - FROM database_mapping - GROUP BY technology_clean - ORDER BY total DESC;` -} - -export function DatabasesChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/FundingStageChart.tsx b/apps/www/app/state-of-startups/components/charts/FundingStageChart.tsx deleted file mode 100644 index ddec045d03d..00000000000 --- a/apps/www/app/state-of-startups/components/charts/FundingStageChart.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateFundingStageSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `SELECT - funding_stage, - COUNT(*) AS total - FROM responses_2026${whereClause ? '\n' + whereClause : ''} - GROUP BY funding_stage - ORDER BY CASE - WHEN funding_stage = 'Bootstrapped' THEN 1 - WHEN funding_stage = 'Pre-seed' THEN 2 - WHEN funding_stage = 'Seed' THEN 3 - WHEN funding_stage = 'Series A' THEN 4 - WHEN funding_stage = 'Series B' THEN 5 - WHEN funding_stage = 'Series C' THEN 6 - WHEN funding_stage = 'Series D or later' THEN 7 - ELSE 8 - END;` -} - -export function FundingStageChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/IndustryChart.tsx b/apps/www/app/state-of-startups/components/charts/IndustryChart.tsx deleted file mode 100644 index bc69b2fa076..00000000000 --- a/apps/www/app/state-of-startups/components/charts/IndustryChart.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateIndustrySQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters, ['industry IS NOT NULL']) - - return `WITH industry_mapping AS ( - SELECT - industry, - CASE - WHEN industry = 'Developer tools and platforms' THEN 'Dev tools' - WHEN industry = 'AI / ML tools' THEN 'AI / ML' - WHEN industry IN ('SaaS', 'Dev tools', 'AI / ML', 'Consumer', 'Education', 'eCommerce', 'Fintech', 'Healthtech') THEN industry - ELSE 'Other' - END AS industry_clean - FROM responses_2026 - ${whereClause} -) -SELECT - industry_clean AS industry, - COUNT(*) AS total -FROM industry_mapping -GROUP BY industry_clean -ORDER BY total DESC;` -} - -export function IndustryChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/InitialPayingCustomersChart.tsx b/apps/www/app/state-of-startups/components/charts/InitialPayingCustomersChart.tsx deleted file mode 100644 index f60dd398832..00000000000 --- a/apps/www/app/state-of-startups/components/charts/InitialPayingCustomersChart.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateInitialPayingCustomersSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH customer_source_mapping AS ( - SELECT - id, - CASE - WHEN source IN ( - 'Personal/professional network', - 'Inbound from social media (Twitter, LinkedIn, etc.)', - 'Cold outreach or sales', - 'Content (blog, newsletter, SEO)', - 'Developer communities (Discord, Slack, Reddit, etc.)', - 'Open source users who converted', - 'Accelerators/incubators', - 'Hacker News or Product Hunt' - ) THEN source - ELSE 'Other' - END AS source_clean - FROM ( - SELECT id, unnest(initial_paying_customers) AS source - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - source_clean AS source, - COUNT(DISTINCT id) AS respondents - FROM customer_source_mapping - GROUP BY source_clean - ORDER BY respondents DESC;` -} - -export function InitialPayingCustomersChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/LocationChart.tsx b/apps/www/app/state-of-startups/components/charts/LocationChart.tsx deleted file mode 100644 index 877233d7acb..00000000000 --- a/apps/www/app/state-of-startups/components/charts/LocationChart.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateLocationSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `SELECT - location, - COUNT(*) AS total -FROM responses_2026${whereClause ? '\n' + whereClause : ''} -GROUP BY location -ORDER BY total DESC;` -} - -export function LocationChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/MCPAdoptionChart.tsx b/apps/www/app/state-of-startups/components/charts/MCPAdoptionChart.tsx deleted file mode 100644 index eddd45e4855..00000000000 --- a/apps/www/app/state-of-startups/components/charts/MCPAdoptionChart.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateMCPAdoptionSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters, ['mcp_adoption IS NOT NULL']) - - return `SELECT - mcp_adoption AS answer, - COUNT(*) AS total -FROM responses_2026 -${whereClause} -GROUP BY mcp_adoption -ORDER BY total DESC;` -} - -export function MCPAdoptionChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/NewIdeasChart.tsx b/apps/www/app/state-of-startups/components/charts/NewIdeasChart.tsx deleted file mode 100644 index da8ebc33666..00000000000 --- a/apps/www/app/state-of-startups/components/charts/NewIdeasChart.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateNewIdeasSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH new_ideas_mapping AS ( - SELECT - id, - CASE - WHEN avenue IN ( - 'Hacker News', - 'GitHub', - 'Product Hunt', - 'Twitter/X', - 'Reddit', - 'YouTube', - 'Podcasts', - 'Blogs / Newsletters', - 'Discord / Slack communities', - 'Conferences / Meetups' - ) THEN avenue - ELSE 'Other' - END AS avenue_clean - FROM ( - SELECT id, unnest(new_ideas) AS avenue - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - avenue_clean AS avenue, - COUNT(DISTINCT id) AS total - FROM new_ideas_mapping - GROUP BY avenue_clean - ORDER BY total DESC;` -} - -export function NewIdeasChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/PaidSubscriptionsChart.tsx b/apps/www/app/state-of-startups/components/charts/PaidSubscriptionsChart.tsx deleted file mode 100644 index c7a3af2f1db..00000000000 --- a/apps/www/app/state-of-startups/components/charts/PaidSubscriptionsChart.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generatePaidSubscriptionsSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH subscriptions_mapping AS ( - SELECT - id, - CASE - WHEN subscription IN ( - 'Claude', - 'OpenAI / ChatGPT', - 'Cursor', - 'GitHub Copilot', - 'Gemini', - 'Lovable', - 'Perplexity', - 'Vercel', - 'Supabase' - ) THEN subscription - ELSE 'Other' - END AS subscription_clean - FROM ( - SELECT id, unnest(subscriptions) AS subscription - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - subscription_clean AS subscription, - COUNT(DISTINCT id) AS total - FROM subscriptions_mapping - GROUP BY subscription_clean - ORDER BY total DESC;` -} - -export function PaidSubscriptionsChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/RegularSocialMediaUseChart.tsx b/apps/www/app/state-of-startups/components/charts/RegularSocialMediaUseChart.tsx deleted file mode 100644 index 8a8751b994b..00000000000 --- a/apps/www/app/state-of-startups/components/charts/RegularSocialMediaUseChart.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateRegularSocialMediaUseSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH regular_social_media_use_mapping AS ( - SELECT - id, - CASE - WHEN platform IN ( - 'X (Twitter)', - 'Threads', - 'BlueSky', - 'LinkedIn', - 'Reddit', - 'TikTok', - 'Instagram', - 'YouTube', - 'Mastodon', - 'Discord', - 'I’ve given up social media' - ) THEN platform - ELSE 'Other' - END AS platform_clean - FROM ( - SELECT id, unnest(regular_social_media_use) AS platform - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - platform_clean AS platform, - COUNT(DISTINCT id) AS total - FROM regular_social_media_use_mapping - GROUP BY platform_clean - ORDER BY total DESC;` -} - -export function RegularSocialMediaUseChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/RoleChart.tsx b/apps/www/app/state-of-startups/components/charts/RoleChart.tsx deleted file mode 100644 index a0d9b80a6be..00000000000 --- a/apps/www/app/state-of-startups/components/charts/RoleChart.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateRoleSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `SELECT - CASE - WHEN role = 'Founder / Co-founder' THEN 'Founder' - WHEN role IN ('Engineer', 'Founder / Co-founder') THEN role - ELSE 'Other' - END AS role, - COUNT(*) AS total -FROM responses_2026${whereClause ? '\n' + whereClause : ''} -GROUP BY CASE - WHEN role = 'Founder / Co-founder' THEN 'Founder' - WHEN role IN ('Engineer', 'Founder / Co-founder') THEN role - ELSE 'Other' - END -ORDER BY total DESC;` -} - -export function RoleChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/SalesToolsChart.tsx b/apps/www/app/state-of-startups/components/charts/SalesToolsChart.tsx deleted file mode 100644 index 3e155a814dc..00000000000 --- a/apps/www/app/state-of-startups/components/charts/SalesToolsChart.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateSalesToolsSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `WITH customer_tool_mapping AS ( - SELECT - id, - CASE - WHEN tool IN ( - 'HubSpot', - 'Salesforce', - 'Pipedrive', - 'Close.com', - 'Notion / Airtable', - 'Google Sheets', - 'We don’t have a formal CRM or sales tool yet' - ) THEN tool - ELSE 'Other' - END AS tool_clean - FROM ( - SELECT id, unnest(sales_tools) AS tool - FROM responses_2026 - ${whereClause} - ) sub - ) - SELECT - tool_clean AS tool, - COUNT(DISTINCT id) AS respondents - FROM customer_tool_mapping - GROUP BY tool_clean - ORDER BY respondents DESC;` -} - -export function SalesToolsChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/charts/WorldOutlookChart.tsx b/apps/www/app/state-of-startups/components/charts/WorldOutlookChart.tsx deleted file mode 100644 index 5ab29ac84a8..00000000000 --- a/apps/www/app/state-of-startups/components/charts/WorldOutlookChart.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { buildWhereClause, SurveyChart } from '../SurveyChart' - -function generateWorldOutlookSQL(activeFilters: Record) { - const whereClause = buildWhereClause(activeFilters) - - return `SELECT - world_outlook, - COUNT(*) AS total -FROM responses_2026${whereClause ? '\n' + whereClause : ''} -GROUP BY world_outlook -ORDER BY total DESC;` -} - -export function WorldOutlookChart() { - return ( - - ) -} diff --git a/apps/www/app/state-of-startups/components/survey-data-context.tsx b/apps/www/app/state-of-startups/components/survey-data-context.tsx deleted file mode 100644 index ac291992360..00000000000 --- a/apps/www/app/state-of-startups/components/survey-data-context.tsx +++ /dev/null @@ -1,141 +0,0 @@ -'use client' - -import { createClient } from '@supabase/supabase-js' -import { - createContext, - useCallback, - useContext, - useMemo, - useRef, - useState, - type ReactNode, -} from 'react' - -import { statKey, transformSurveyRows } from '../lib/preload-survey-data' -import type { SurveyYear } from './year-context' - -export interface ChartDataItem { - label: string - value: number - rawValue: number -} - -export type StatAggregation = 'single' | 'multi' | 'boolean' - -export interface StatColumnRow { - label: string - count: number -} - -export interface StatColumnData { - rows: StatColumnRow[] - respondentCount: number -} - -export type SurveyDataCache = Record -export type SurveyStatCache = Record - -interface SurveyDataContextValue { - /** Returns cached chart data for an (rpcName, params) combo, or undefined. */ - get: (rpcName: string, params: Record) => ChartDataItem[] | undefined - /** Returns cached stat-column data for a (year, column) pair, or undefined. */ - getStat: (year: SurveyYear, column: string) => StatColumnData | undefined - /** Fetches and caches a non-default chart filter combo. */ - fetchAndCache: (rpcName: string, params: Record) => Promise -} - -const SurveyDataContext = createContext(null) - -const surveyClient = createClient( - process.env.NEXT_PUBLIC_SURVEY_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SURVEY_SUPABASE_ANON_KEY! -) - -function paramsKey(params: Record): string { - const keys = Object.keys(params).sort() - if (keys.length === 0) return '' - return JSON.stringify(keys.map((k) => [k, params[k]])) -} - -function cacheKey(rpcName: string, params: Record): string { - return `${rpcName}::${paramsKey(params)}` -} - -export function SurveyDataProvider({ - preloadedData, - preloadedStats, - children, -}: { - preloadedData: SurveyDataCache - preloadedStats: SurveyStatCache - children: ReactNode -}) { - const [cache, setCache] = useState>(() => { - const initial = new Map() - for (const [rpcName, data] of Object.entries(preloadedData)) { - initial.set(cacheKey(rpcName, {}), data) - } - return initial - }) - - const statCache = useMemo(() => { - const map = new Map() - for (const [key, value] of Object.entries(preloadedStats)) { - map.set(key, value) - } - return map - }, [preloadedStats]) - - const inflight = useRef>>(new Map()) - - const get = useCallback( - (rpcName: string, params: Record) => cache.get(cacheKey(rpcName, params)), - [cache] - ) - - const getStat = useCallback( - (year: SurveyYear, column: string) => statCache.get(statKey(year, column)), - [statCache] - ) - - const fetchAndCache = useCallback( - async (rpcName: string, params: Record) => { - const key = cacheKey(rpcName, params) - const cached = cache.get(key) - if (cached) return cached - - const existing = inflight.current.get(key) - if (existing) return existing - - const promise = (async () => { - const { data, error } = await surveyClient.rpc(rpcName, params) - if (error) throw error - const transformed = transformSurveyRows(data ?? []) - setCache((prev) => { - const next = new Map(prev) - next.set(key, transformed) - return next - }) - return transformed - })().finally(() => { - inflight.current.delete(key) - }) - - inflight.current.set(key, promise) - return promise - }, - [cache] - ) - - const value = useMemo(() => ({ get, getStat, fetchAndCache }), [get, getStat, fetchAndCache]) - - return {children} -} - -export function useSurveyDataCache() { - const ctx = useContext(SurveyDataContext) - if (!ctx) { - throw new Error('useSurveyDataCache must be used within a SurveyDataProvider') - } - return ctx -} diff --git a/apps/www/app/state-of-startups/components/use-distribution.ts b/apps/www/app/state-of-startups/components/use-distribution.ts new file mode 100644 index 00000000000..8b6b71b55cc --- /dev/null +++ b/apps/www/app/state-of-startups/components/use-distribution.ts @@ -0,0 +1,25 @@ +'use client' + +import { useMemo } from 'react' + +import type { DistributionQuery, SurveyFilters } from '../lib/survey-key' +import { distributionPercent, getDistribution, mergeFilters } from '../lib/survey-keys' +import { useYear } from './year-context' + +/** Resolves a query to its percentage for the active year, merging an optional + * section-level cohort filter on top of the query filters. Returns null when + * the option/column has no data that year. */ +export function useDistributionPercent( + query: DistributionQuery | undefined, + cohortFilter?: SurveyFilters +): number | null { + const { year } = useYear() + return useMemo(() => { + if (!query) return null + const filters = mergeFilters(query.filters, cohortFilter) + return distributionPercent( + getDistribution(year, query.column, query.aggregation, filters), + query.target + ) + }, [year, query?.column, query?.aggregation, query?.target, query?.filters, cohortFilter]) +} diff --git a/apps/www/app/state-of-startups/components/year-context.tsx b/apps/www/app/state-of-startups/components/year-context.tsx index faed246da7c..81323d92efc 100644 --- a/apps/www/app/state-of-startups/components/year-context.tsx +++ b/apps/www/app/state-of-startups/components/year-context.tsx @@ -31,7 +31,3 @@ export function useYear() { } return ctx } - -export function rpcNameForYear(baseName: string, year: SurveyYear) { - return year === 2026 ? `${baseName}_2026` : baseName -} diff --git a/apps/www/app/state-of-startups/lib/preload-survey-data.ts b/apps/www/app/state-of-startups/lib/preload-survey-data.ts deleted file mode 100644 index 55d6f59bac2..00000000000 --- a/apps/www/app/state-of-startups/lib/preload-survey-data.ts +++ /dev/null @@ -1,215 +0,0 @@ -import { createClient } from '@supabase/supabase-js' - -import type { - ChartDataItem, - StatAggregation, - StatColumnData, - StatColumnRow, -} from '../components/survey-data-context' - -const CARRY_OVER_RPCS = [ - 'get_role_stats', - 'get_location_stats', - 'get_funding_stage_stats', - 'get_accelerator_stats', - 'get_industry_stats', - 'get_biggest_challenge_stats', - 'get_world_outlook_stats', - 'get_databases_stats', - 'get_ai_coding_tools_stats', - 'get_ai_models_stats', - 'get_initial_paying_customers_stats', - 'get_sales_tools_stats', - 'get_new_ideas_stats', - 'get_regular_social_media_use_stats', -] as const - -const NEW_IN_2026_RPCS = [ - 'get_ai_generated_codebase_percent_stats', - 'get_auth_provider_stats', - 'get_subscriptions_stats', - 'get_building_ai_agents_stats', - 'get_mcp_adoption_stats', -] as const - -// Columns referenced by stat cards across the narrative. Preloaded via the -// generic `get__stats` RPCs so the stat cards can compute live -// percentages for both 2025 and 2026 without an extra round trip in the -// browser. Adding a new stat to the narrative? Add its column here too. -const STAT_PRELOAD_QUERIES: Array<{ column: string; aggregation: StatAggregation }> = [ - // single-select - { column: 'founder_count', aggregation: 'single' }, - { column: 'person_age', aggregation: 'single' }, - { column: 'team_size', aggregation: 'single' }, - { column: 'startup_age', aggregation: 'single' }, - { column: 'funding_stage', aggregation: 'single' }, - { column: 'location', aggregation: 'single' }, - { column: 'role', aggregation: 'single' }, - { column: 'industry', aggregation: 'single' }, - { column: 'biggest_challenge', aggregation: 'single' }, - { column: 'world_outlook', aggregation: 'single' }, - { column: 'building_ai_agents', aggregation: 'single' }, - { column: 'ai_generated_codebase_percent', aggregation: 'single' }, - { column: 'mcp_adoption', aggregation: 'single' }, - { column: 'building_multi_agent_systems', aggregation: 'single' }, - { column: 'dev_community_built', aggregation: 'single' }, - { column: 'dedicated_sales_function', aggregation: 'single' }, - { column: 'describe_your_online_persona', aggregation: 'single' }, - // multi-select - { column: 'ai_coding_tools', aggregation: 'multi' }, - { column: 'subscriptions', aggregation: 'multi' }, - { column: 'ai_models_used', aggregation: 'multi' }, - { column: 'databases', aggregation: 'multi' }, - { column: 'backend_stack', aggregation: 'multi' }, - { column: 'frontend_stack', aggregation: 'multi' }, - { column: 'auth_provider', aggregation: 'multi' }, - { column: 'cloud_providers', aggregation: 'multi' }, - { column: 'ai_agents_problems', aggregation: 'multi' }, - { column: 'ai_evaluation_testing', aggregation: 'multi' }, - { column: 'sales_tools', aggregation: 'multi' }, - { column: 'observability', aggregation: 'multi' }, - { column: 'growth_tools', aggregation: 'multi' }, - { column: 'initial_paying_customers', aggregation: 'multi' }, - { column: 'user_engagement', aggregation: 'multi' }, - { column: 'pricing', aggregation: 'multi' }, - { column: 'market_model', aggregation: 'multi' }, - { column: 'regular_social_media_use', aggregation: 'multi' }, - { column: 'events', aggregation: 'multi' }, - // boolean - { column: 'founders_are_technical', aggregation: 'boolean' }, - { column: 'previous_company', aggregation: 'boolean' }, -] - -const STAT_YEARS = [2025, 2026] as const - -export type PreloadedSurveyData = Record -export type PreloadedStatData = Record - -export function transformSurveyRows(rows: any[]): ChartDataItem[] { - if (!Array.isArray(rows) || rows.length === 0) return [] - const total = rows.reduce((sum, row) => sum + parseInt(row.count ?? row.total ?? '0'), 0) - return rows.map((row) => { - const count = parseInt(row.count ?? row.total ?? '0') - const rawPercentage = total > 0 ? (count / total) * 100 : 0 - return { - label: row.label || row.value || row[Object.keys(row)[0]], - value: Math.round(rawPercentage), - rawValue: rawPercentage, - } - }) -} - -function statKey(year: number, column: string): string { - return `${year}::${column}` -} - -export { statKey } - -export async function preloadSurveyData(): Promise { - const url = process.env.NEXT_PUBLIC_SURVEY_SUPABASE_URL - const anonKey = process.env.NEXT_PUBLIC_SURVEY_SUPABASE_ANON_KEY - - if (!url || !anonKey) { - console.warn('[preloadSurveyData] survey supabase env vars missing — returning empty cache') - return {} - } - - const client = createClient(url, anonKey) - - const rpcNames: string[] = [ - ...CARRY_OVER_RPCS, - ...CARRY_OVER_RPCS.map((name) => `${name}_2026`), - ...NEW_IN_2026_RPCS.map((name) => `${name}_2026`), - ] - - const entries = await Promise.all( - rpcNames.map(async (rpcName) => { - try { - const { data, error } = await client.rpc(rpcName, {}) - if (error) { - console.error(`[preloadSurveyData] ${rpcName} failed:`, error.message) - return [rpcName, [] as ChartDataItem[]] as const - } - return [rpcName, transformSurveyRows(data ?? [])] as const - } catch (err: any) { - console.error(`[preloadSurveyData] ${rpcName} threw:`, err?.message ?? err) - return [rpcName, [] as ChartDataItem[]] as const - } - }) - ) - - return Object.fromEntries(entries) -} - -export async function preloadStatData(): Promise { - const url = process.env.NEXT_PUBLIC_SURVEY_SUPABASE_URL - const anonKey = process.env.NEXT_PUBLIC_SURVEY_SUPABASE_ANON_KEY - - if (!url || !anonKey) { - console.warn('[preloadStatData] survey supabase env vars missing — returning empty cache') - return {} - } - - const client = createClient(url, anonKey) - - const tasks = STAT_PRELOAD_QUERIES.flatMap(({ column, aggregation }) => - STAT_YEARS.map(async (year) => { - const key = statKey(year, column) - try { - const rpcName = - aggregation === 'multi' - ? 'get_multi_select_stats' - : aggregation === 'boolean' - ? 'get_boolean_stats' - : 'get_single_select_stats' - - const { data, error } = await client.rpc(rpcName, { - survey_year: year, - column_name: column, - }) - - if (error) { - // Column doesn't exist for this year (e.g. new-in-2026 column on 2025). - // Silently skip; stat card will fall back to its static value or "—". - return null - } - - const rows: StatColumnRow[] = (data ?? []).map((r: any) => ({ - label: String(r.label), - count: Number(r.count ?? 0), - })) - - let respondentCount: number - if (aggregation === 'multi') { - const { data: rcData, error: rcError } = await client.rpc( - 'get_respondent_count_for_column', - { survey_year: year, column_name: column } - ) - if (rcError) { - console.error( - `[preloadStatData] respondent_count(${year},${column}) failed:`, - rcError.message - ) - return null - } - respondentCount = Number(rcData ?? 0) - } else { - respondentCount = rows.reduce((sum, r) => sum + r.count, 0) - } - - return [key, { rows, respondentCount }] as const - } catch (err: any) { - console.error( - `[preloadStatData] ${aggregation} ${column} ${year} threw:`, - err?.message ?? err - ) - return null - } - }) - ) - - const settled = await Promise.all(tasks) - return Object.fromEntries( - settled.filter((e): e is readonly [string, StatColumnData] => e !== null) - ) -} diff --git a/apps/www/app/state-of-startups/lib/survey-key.ts b/apps/www/app/state-of-startups/lib/survey-key.ts new file mode 100644 index 00000000000..882c8b8dd52 --- /dev/null +++ b/apps/www/app/state-of-startups/lib/survey-key.ts @@ -0,0 +1,49 @@ +/** + * Canonical survey key + filter types. Dependency-free on purpose: imported by + * both the runtime data layer (survey-keys.ts) and the build-time generator + * (scripts/generate-state-of-startups-data.ts), so a single definition keeps + * generated keys and lookup keys byte-identical. + */ + +export type Aggregation = 'single' | 'multi' | 'boolean' + +/** A filter value is an exact match (string) or an IN-list (array of strings). */ +export type FilterValue = string | readonly string[] +export type SurveyFilters = Record + +/** A single distribution lookup: which option(s) of which column/aggregation, + * optionally restricted by filters. Shared by stat cards, compare cards, and + * cross-tab series. */ +export interface DistributionQuery { + column: string + aggregation: Aggregation + target: string | string[] + filters?: SurveyFilters +} + +function filterToken(filters?: SurveyFilters): string { + if (!filters) return '' + const keys = Object.keys(filters).sort() + if (keys.length === 0) return '' + return JSON.stringify(keys.map((k) => [k, filters[k]])) +} + +export function surveyKey( + year: number, + column: string, + aggregation: Aggregation, + filters?: SurveyFilters +): string { + return `${year}|${column}|${aggregation}|${filterToken(filters)}` +} + +/** Merges a base filter set with an extra cohort filter (the extra wins). + * Returns undefined when the result is empty so keys match the no-filter + * distributions. */ +export function mergeFilters( + base?: SurveyFilters, + extra?: SurveyFilters +): SurveyFilters | undefined { + const merged = { ...(base ?? {}), ...(extra ?? {}) } + return Object.keys(merged).length > 0 ? merged : undefined +} diff --git a/apps/www/app/state-of-startups/lib/survey-keys.ts b/apps/www/app/state-of-startups/lib/survey-keys.ts new file mode 100644 index 00000000000..981524ce7c7 --- /dev/null +++ b/apps/www/app/state-of-startups/lib/survey-keys.ts @@ -0,0 +1,87 @@ +/** + * Static survey dataset access. + * + * The microsite ships fully static. All survey numbers come from the committed + * JSON generated by scripts/generate-state-of-startups-data.ts — no live + * Supabase at build or runtime. Every chart, stat, cross-tab, channel-mix, and + * cohort toggle resolves to one pre-aggregated "distribution" looked up by the + * canonical (year, column, aggregation, filters) key from survey-key.ts. + */ + +import datasetJson from '../../../data/surveys/state-of-startups-data.json' +import type { SurveyYear } from '../components/year-context' +import { surveyKey, type Aggregation, type SurveyFilters } from './survey-key' + +export { surveyKey, mergeFilters } from './survey-key' +export type { Aggregation, FilterValue, SurveyFilters } from './survey-key' + +export interface DistributionRow { + label: string + count: number +} + +export interface Distribution { + rows: DistributionRow[] + respondentCount: number +} + +/** One bar in a chart: label + rounded percentage. */ +export interface ChartDataItem { + label: string + value: number +} + +interface SurveyDataset { + meta: { generatedFrom: string; years: Record; slices: number } + distributions: Record +} + +const dataset = datasetJson as SurveyDataset +const DISTRIBUTIONS = dataset.distributions + +export const surveyMeta = dataset.meta + +/** Returns the pre-aggregated distribution, or undefined when the column did + * not exist that year (e.g. a new-in-2026 question viewed at 2025). */ +export function getDistribution( + year: SurveyYear, + column: string, + aggregation: Aggregation, + filters?: SurveyFilters +): Distribution | undefined { + return DISTRIBUTIONS[surveyKey(year, column, aggregation, filters)] +} + +/** Sums the matching target rows over the respondent denominator. Returns null + * when there is no data for the year or the target option is absent. */ +export function distributionPercent( + dist: Distribution | undefined, + target: string | readonly string[] +): number | null { + if (!dist || dist.respondentCount <= 0) return null + const targets = Array.isArray(target) ? target : [target] + let count = 0 + let matched = 0 + for (const row of dist.rows) { + if (targets.includes(row.label)) { + count += row.count + matched += 1 + } + } + if (matched === 0) return null + return Math.round((count / dist.respondentCount) * 100) +} + +/** Maps a distribution to chart bars (respondent-count denominator), already + * sorted desc by the generator. Optionally caps the number of bars. */ +export function distributionToBars( + dist: Distribution | undefined, + maxBars?: number +): ChartDataItem[] { + if (!dist || dist.respondentCount <= 0) return [] + const bars = dist.rows.map((row) => ({ + label: row.label, + value: Math.round((row.count / dist.respondentCount) * 100), + })) + return maxBars ? bars.slice(0, maxBars) : bars +} diff --git a/apps/www/app/state-of-startups/lib/survey-sql.ts b/apps/www/app/state-of-startups/lib/survey-sql.ts new file mode 100644 index 00000000000..849753c7d86 --- /dev/null +++ b/apps/www/app/state-of-startups/lib/survey-sql.ts @@ -0,0 +1,75 @@ +/** + * Builds the real, pasteable aggregation SQL shown in each chart's "SQL" view. + * This mirrors what the generic RPCs actually run against responses_, so + * a reader can copy it and run it themselves: multi-select unnests the array + * and counts distinct respondents over the respondent-count denominator; + * single/boolean use a window for the share. + */ + +import type { Aggregation, SurveyFilters } from './survey-key' + +function quote(v: string): string { + return `'${v.replace(/'/g, "''")}'` +} + +function filterClauses(filters?: SurveyFilters): string[] { + if (!filters) return [] + return Object.entries(filters).map(([col, val]) => + Array.isArray(val) + ? `${col} = any(array[${val.map(quote).join(', ')}])` + : `${col} = ${quote(val as string)}` + ) +} + +export function buildSurveySql( + year: number, + column: string, + aggregation: Aggregation, + filters?: SurveyFilters, + maxBars?: number +): string { + const table = `responses_${year}` + const extra = filterClauses(filters) + const limit = maxBars ? `\nlimit ${maxBars}` : '' + + if (aggregation === 'multi') { + const where = [`r.${column} is not null`, ...extra].join('\n and ') + return `-- % of respondents who selected each option +with answered as ( + select count(*)::numeric as total + from ${table} r + where ${where} +) +select + tag as label, + count(distinct r.id) as count, + round(100 * count(distinct r.id) / + (select total from answered), 1) as pct +from ${table} r, unnest(r.${column}) as tag +where ${where} +group by tag +order by count desc${limit};` + } + + if (aggregation === 'boolean') { + const where = [`${column} is not null`, ...extra].join('\n and ') + return `select + case when ${column} then 'Yes' else 'No' end as label, + count(*) as count, + round(100 * count(*) / sum(count(*)) over (), 1) as pct +from ${table} +where ${where} +group by ${column} +order by label;` + } + + const where = [`${column} is not null`, ...extra].join('\n and ') + return `select + ${column} as label, + count(*) as count, + round(100 * count(*) / sum(count(*)) over (), 1) as pct +from ${table} +where ${where} +group by ${column} +order by count desc${limit};` +} diff --git a/apps/www/app/state-of-startups/page.tsx b/apps/www/app/state-of-startups/page.tsx index a7c0f0394f3..391e0caf8b8 100644 --- a/apps/www/app/state-of-startups/page.tsx +++ b/apps/www/app/state-of-startups/page.tsx @@ -1,17 +1,11 @@ import type { Metadata } from 'next' -import { preloadStatData, preloadSurveyData } from './lib/preload-survey-data' import { RegisterContent } from './register/RegisterContent' import StateOfStartups2026Content from './StateOfStartups2026Content' // TODO (alan): set this to true once results are available. const SHOW_RESULTS = true -// Re-aggregate survey RPCs on the server every hour. Keeps the chart payload -// inlined into the static HTML without forcing a full deploy whenever the -// upstream survey data changes. -export const revalidate = 3600 - export const metadata: Metadata = SHOW_RESULTS ? { title: 'State of Startups 2026 | Supabase', @@ -45,14 +39,9 @@ export const metadata: Metadata = SHOW_RESULTS }, } -export default async function StateOfStartupsPage() { +export default function StateOfStartupsPage() { if (!SHOW_RESULTS) return - - const [preloadedData, preloadedStats] = await Promise.all([ - preloadSurveyData(), - preloadStatData(), - ]) - return ( - - ) + // All survey numbers are embedded statically (data/surveys/ + // state-of-startups-data.json). No live database, no build-time fetch. + return } diff --git a/apps/www/data/surveys/state-of-startups-2026.tsx b/apps/www/data/surveys/state-of-startups-2026.tsx index 1da6820750e..f48f8b6eb6a 100644 --- a/apps/www/data/surveys/state-of-startups-2026.tsx +++ b/apps/www/data/surveys/state-of-startups-2026.tsx @@ -1,190 +1,430 @@ -// Narrative sourced from the State of Startups 2026 mid-point results -// (supabase/state-of-startups repo, app/fancy/survey-data.ts). Explicit -// percentages below are quoted directly from that narrative; a handful of -// stats for sections without an explicit number in the prose are carried -// over from 2025 and should be refreshed against responses_2026 before -// launch. +/** + * Narrative data for the State of Startups 2026 microsite. + * + * Structure, copy, and comparison framing are ported verbatim from the + * State of Startups source repo (supabase/state-of-startups, app/fancy/ + * survey-data.ts). Every number renders from the embedded static dataset + * (data/surveys/state-of-startups-data.json) via the (column, aggregation, + * target, filters) query on each stat/chart — no live database. + * + * Pull quotes are real, anonymized survey responses. + * + * Multi-select stats use the respondent-count denominator, so percentages read + * as "% of respondents who picked X" rather than "% of selections". + */ + +import type { Aggregation, SurveyFilters } from '../../app/state-of-startups/lib/survey-keys' +import { participants } from './state-of-startups-participants' + +// --------------------------------------------------------------------------- +// Types +// --------------------------------------------------------------------------- + +export interface StatQuery { + column: string + aggregation: Aggregation + target: string | string[] + filters?: SurveyFilters + /** Flags the option as new-in-2026 so the card shows "new this year" + * instead of "—" when the year toggle is on 2025. */ + newIn2026?: boolean +} + +export interface SurveyStat { + label: string + query?: StatQuery + /** Static percent to display as-is (for derived/combined figures). */ + value?: number +} + +export interface CompareStat { + kind: 'compare' + label: string + a: { caption: string; query: StatQuery } + b: { caption: string; query: StatQuery } +} + +export type TopLineItem = ({ kind: 'stat' } & SurveyStat) | CompareStat + +export interface BarChartConfig { + kind?: 'bar' + title: string + /** Smaller parenthetical under the title clarifying how the question was asked. */ + note?: string + column: string + aggregation: Aggregation + filters?: SurveyFilters + maxBars?: number +} + +export interface CrossTabCohort { + label: string + filter: string +} + +export interface CrossTabSeries { + caption: string + tone: 'accent' | 'muted' + query: { column: string; aggregation: Aggregation; target: string | string[] } +} + +export interface CrossTabChartConfig { + kind: 'cross-tab' + title: string + eyebrow?: string + axisColumn: string + xAxisLabel?: string + yAxisLabel?: string + cohorts: CrossTabCohort[] + series: CrossTabSeries[] +} + +export interface ChannelCohort { + label: string + filter: string + tone: 'accent' | 'muted' +} + +export interface ChannelRow { + target: string + display: string +} + +export interface ChannelMixChartConfig { + kind: 'channel-mix' + title: string + eyebrow?: string + column: string + cohortColumn: string + cohorts: ChannelCohort[] + rows: ChannelRow[] +} + +export type ChartConfig = BarChartConfig | CrossTabChartConfig | ChannelMixChartConfig + +export interface SurveyPullQuote { + quote: string + author: string + authorPosition?: string + /** Optional short label for grid treatments (e.g. "Burn out"). */ + theme?: string +} + +export interface CohortToggleOption { + label: string + filter: string | string[] | null +} + +export interface CohortToggleConfig { + eyebrow: string + key: string + options: CohortToggleOption[] + defaultLabel: string +} + +export interface SectionCallout { + eyebrow: string + body: string + href: string + cta: string + external?: boolean +} + +export interface SurveyWordCloudData { + label: string + words: { text: string; count: number }[] +} + +export interface SurveySummarizedAnswerData { + label: string + answers: string[] +} + +export interface SurveySection { + id: string + eyebrow: string + title: string + description: string + /** Question header rendered above the stat cards, with an optional smaller + * parenthetical note clarifying how the question was asked. */ + statsHeading?: { title: string; note?: string } + stats: SurveyStat[] + charts: ChartConfig[] + pullQuote?: SurveyPullQuote + pullQuotes?: SurveyPullQuote[] + cohortToggle?: CohortToggleConfig + callout?: SectionCallout + wordCloud?: SurveyWordCloudData + summarizedAnswer?: SurveySummarizedAnswerData + rankedAnswersPair?: { label: string; answers: string[] }[] +} + +export interface SurveyChapter { + shortTitle: string + title: string + description: string + pullQuote?: SurveyPullQuote + pullQuoteCarousel?: { quote: string; author: string; authorPosition?: string; label?: string }[] + sections: SurveySection[] +} + +// --------------------------------------------------------------------------- +// Builders +// --------------------------------------------------------------------------- + +const stat = ( + label: string, + column: string, + aggregation: Aggregation, + target: string | string[], + filters?: SurveyFilters +): SurveyStat => ({ label, query: { column, aggregation, target, filters } }) + +/** A stat card with a hardcoded percent (for derived/combined figures that do + * not map to a single survey column). */ +const staticStat = (label: string, value: number): SurveyStat => ({ label, value }) + +const newStat = ( + label: string, + column: string, + aggregation: Aggregation, + target: string | string[], + filters?: SurveyFilters +): SurveyStat => ({ + label, + query: { column, aggregation, target, filters, newIn2026: true }, +}) + +const q = ( + column: string, + aggregation: Aggregation, + target: string | string[], + filters?: SurveyFilters +): StatQuery => ({ column, aggregation, target, filters }) + +// Age bands are stored with an en-dash. +const AGE_UNDER_40 = ['18–21', '22–29', '30–39'] +const AGE_40_PLUS = ['40–49', '50–59', '60+'] +const AGE_50_PLUS = ['50–59', '60+'] + +// AI codebase cohorts, in display order. Used by the cost-of-vibes (Chapter 3) +// and optimism-gap (Chapter 9) cross-tab charts. +const AI_CODEBASE_COHORTS: CrossTabCohort[] = [ + { label: '0%', filter: '0%' }, + { label: '1–10%', filter: '1-10%' }, + { label: '11–25%', filter: '11-25%' }, + { label: '26–50%', filter: '26-50%' }, + { label: '51–75%', filter: '51-75%' }, + { label: '76–100%', filter: '76-100%' }, +] + +// Option labels that use a curly apostrophe, as the export stored them. Use +// verbatim so the lookup matches the dataset. +const NO_CRM = 'We don’t have a formal CRM or sales tool yet' +const NO_OBSERVABILITY = 'We don’t use observability tools yet' +const NO_ANALYTICS = 'I don’t track this yet' +const NON_FOUNDERS = [ + 'Engineer', + 'Product Management', + 'Marketing', + 'Sales', + 'Legal or Ops', + 'Other', +] + +// --------------------------------------------------------------------------- +// Narrative +// --------------------------------------------------------------------------- const stateOfStartupsData = { metaTitle: 'State of Startups 2026 | Supabase', metaDescription: 'The latest trends among builders in tech stacks, AI usage, problem domains, and more.', metaImage: '/images/state-of-startups/2026/state-of-startups-og.png', + heroSection: { + eyebrow: 'State of Startups 2026 · Final results', title: 'State of Startups 2026', subheader: - 'We surveyed over 2,000 startup founders and builders to uncover what’s powering modern startups: their stacks, their go-to-market motion, and their approach to AI.', - cta: 'The ground moved between 2025 and 2026. This report shows where.', + 'Two thousand startup builders told us what they picked up and what they put down between 2025 and 2026. Anthropic rewrote the tooling layer, AI-written code became the median experience, and great companies are now starting up from anywhere.', + cta: 'Startups are the leading indicator. The tools founders pick up, the habits they drop, and the channels they stop trusting shift the status quo. If startups succeed, the effects ripple outward. We track them so we can see what is coming.', }, + + topLineHero: [ + { + kind: 'stat', + label: 'have 76 to 100% of their codebase AI-generated', + query: q('ai_generated_codebase_percent', 'single', '76-100%'), + }, + { + kind: 'compare', + label: + 'Claude Code came out of nowhere and took the crown. Cursor gave up almost exactly as much share as Claude Code picked up.', + a: { caption: 'Claude Code', query: q('ai_coding_tools', 'multi', 'Claude Code') }, + b: { caption: 'Cursor', query: q('ai_coding_tools', 'multi', 'Cursor') }, + }, + { + kind: 'stat', + label: 'use Supabase as their primary database', + query: q('databases', 'multi', 'Supabase'), + }, + ] as TopLineItem[], + + topLineSecondary: { + eyebrow: 'Two more patterns worth watching', + items: [ + { + kind: 'stat', + label: 'of AI-agent builders already have multi-agent systems in production', + query: q('building_multi_agent_systems', 'single', 'Yes, in production'), + }, + { + kind: 'stat', + label: 'of startups with a GTM motion have no formal CRM. The number grew 11%.', + query: q('sales_tools', 'multi', NO_CRM), + }, + ] as TopLineItem[], + }, + pageChapters: [ { - title: 'Who’s Building Startups', shortTitle: 'Founder and Company', + title: 'Who’s Building Startups', description: 'The respondent base got older, more European, more solo, and less self-described-technical. Experienced operators with AI in their pocket are starting companies again.', - pullQuote: { - quote: - 'I am a brand [new] developer unfamiliar with coding. This opens up an entire realm of possibilities in what I am able to build for clients.', - author: 'Anonymous respondent', - authorPosition: 'North America', - }, sections: [ { - title: 'Solo Founders', + id: 'solo-founders', + eyebrow: 'One person, one platform', + title: 'Solo founders continue to thrive.', description: - 'Solo founders are 61% of respondents — the largest group on the page. Cofounder pairs slipped. The one-person startup is the dominant shape and is still growing.', - stats: [ - { - percent: 61, - label: 'One-founder startups', - source: { column: 'founder_count', aggregation: 'single', target: '1' }, - }, - { - percent: 25, - label: 'Two-founder startups', - source: { column: 'founder_count', aggregation: 'single', target: '2' }, - }, - { - percent: 14, - label: 'Three or more founders', - source: { - column: 'founder_count', - aggregation: 'single', - target: ['3', '4+'], - }, - }, - ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, + 'Solo founders were already the largest group in 2025 at 53%. In 2026 they are 61% of respondents, up 8%. Cofounder pairs slipped.', pullQuote: { quote: - 'Before I had to recruit engineers, now I’ve become the engineer doing pair or mob programming with multiple LLMs.', + 'Before I had to recruit engineers, now I’ve become the engineer doing pair or mob programming with multiple LLMs', author: 'Your Friend Fido', }, - }, - { - title: 'Non-Technical Founders', - description: - '78% of founders are technical. The 22% who aren’t lean harder on AI code generation than anyone else.', stats: [ + stat('are one-founder startups', 'founder_count', 'single', '1'), + stat('are two-founder startups', 'founder_count', 'single', '2'), + stat('have three or more founders', 'founder_count', 'single', ['3', '4+']), + ], + charts: [ { - percent: 78, - label: 'Startups whose founders are technical', - source: { - column: 'founders_are_technical', - aggregation: 'boolean', - target: 'TRUE', - }, - }, - { - percent: 47, - label: 'Founders who had previously started a company', - source: { - column: 'previous_company', - aggregation: 'boolean', - target: 'TRUE', - }, + title: 'How many founders at your current startup?', + column: 'founder_count', + aggregation: 'single', }, ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Older Founders', + id: 'non-technical-founders', + eyebrow: 'Not what an engineer looks like', + title: '22% of startups are founded by non-technical founders.', description: - 'Every age band above 40 has grown by a statistically significant margin. The 22 to 29 cohort shrank by 5%. Seasoned operators are filling the gap, often with AI doing the typing.', + 'Technical-founder share dropped from 82% to 78%. The same cohort leans harder on AI code generation than anyone else.', + pullQuote: { + quote: + 'I am a brand new developer unfamiliar with coding. This opens up an entire realm of possibilities in what I am able to build for clients.', + author: 'Anonymous respondent in North America', + }, stats: [ + stat('say their founders are technical', 'founders_are_technical', 'boolean', 'TRUE'), + stat('had previously started a company', 'previous_company', 'boolean', 'TRUE'), + ], + charts: [ { - percent: 26, - label: 'Founders aged 40 or older', - source: { - column: 'person_age', - aggregation: 'single', - target: ['40–49', '50–59', '60+'], - }, - }, - { - percent: 35, - label: 'Founders aged 22 to 29', - source: { column: 'person_age', aggregation: 'single', target: '22–29' }, - }, - { - percent: 10, - label: 'Founders aged 50 or older', - source: { - column: 'person_age', - aggregation: 'single', - target: ['50–59', '60+'], - }, + title: 'Is the founder(s) at your current startup technical?', + column: 'founders_are_technical', + aggregation: 'boolean', }, ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Where They’re Based', + id: 'older-founders', + eyebrow: 'Older is the new younger', + title: 'Founders 40 and older grew from 18% to 25%.', description: - 'The top metros are still the top metros. But AI has flattened the development gap everywhere else. Europe grew 4%; Africa grew 2%. Startups are setting up across Toronto, Chicago, Denver, Austin, across Europe, Asia, and Africa. The playbook no longer requires a specific zip code.', + 'Every age band above 40 grew by a statistically significant margin. The 22 to 29 cohort shrank by 5%. Seasoned operators are filling the gap, often with AI doing the typing.', + pullQuote: { + quote: 'It has allowed me to build the vision that has been in my head for decades', + author: 'Mazz Ink', + }, stats: [ + stat('are aged 40 or older', 'person_age', 'single', AGE_40_PLUS), + stat('are aged 22 to 29', 'person_age', 'single', '22–29'), + stat('are aged 50 or older', 'person_age', 'single', AGE_50_PLUS), + ], + charts: [{ title: 'What is your age?', column: 'person_age', aggregation: 'single' }], + }, + { + id: 'geo-shift', + eyebrow: 'From anywhere', + title: 'You can build a great company from anywhere now.', + description: + 'The top metros are still the top metros. But AI has flattened the development gap everywhere else. Europe grew 4%; Africa grew 2%. Startups are setting up across Toronto, Chicago, Denver, and Austin, and throughout Europe, Asia, and Africa.', + pullQuote: { + quote: + 'Speed of iteration is mind blowing. Even non-technical people can now translate creativity and ideas into tangible assets.', + author: 'Anonymous respondent in Europe', + }, + stats: [ + stat('are headquartered in Europe', 'location', 'single', 'Europe'), + stat('are headquartered in North America', 'location', 'single', 'North America'), + stat('are headquartered in Asia', 'location', 'single', 'Asia'), + ], + charts: [ { - percent: 25, - label: 'Startups headquartered in Europe', - source: { column: 'location', aggregation: 'single', target: 'Europe' }, + title: 'Where is your startup headquartered?', + column: 'location', + aggregation: 'single', }, { - percent: 50, - label: 'Startups headquartered in North America', - source: { column: 'location', aggregation: 'single', target: 'North America' }, - }, - { - percent: 14, - label: 'Startups headquartered in Asia', - source: { column: 'location', aggregation: 'single', target: 'Asia' }, + title: 'Which North American metro are you based in?', + column: 'location_north_america', + aggregation: 'single', + filters: { location: 'North America' }, + maxBars: 10, }, ], - charts: ['LocationChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, ], }, { - title: 'One Company Swept the Tooling Layer', - shortTitle: 'Anthropic generation', + shortTitle: 'The Anthropic generation', + title: 'One company swept the tooling layer.', description: 'Claude Code became the most-named must-have dev tool. Claude paid subscriptions nearly doubled. Anthropic overtook OpenAI on the model-provider question. The Anthropic Agent SDK leads SDK adoption.', - pullQuote: { - quote: - 'Claude models in Claude Code and Cursor. Supabase MCP has also been a game changer.', - author: 'Adrian', - authorPosition: 'Findhomes', - }, sections: [ { - title: 'Must-have Dev Tools', + id: 'coding-tools', + eyebrow: 'Must-have dev tools', + title: 'Claude Code eclipsed everything else.', description: 'Cursor dropped 19%. v0, Bolt, and Windsurf each lost 6–9%. VS Code held flat. Antigravity appeared for the first time and took the 4th spot in its debut year.', + pullQuote: { + quote: + 'Claude models in Claude code and Cursor. Supabase MCP has also been a game changer', + author: 'Adrian, FindHomes', + }, + statsHeading: { + title: 'What are your must-have dev tools?', + note: 'Unaided, free-form text', + }, stats: [ + stat('Claude', 'must_have_tools', 'multi', 'Claude'), + stat('Cursor', 'must_have_tools', 'multi', 'Cursor'), + stat('ChatGPT/Codex', 'must_have_tools', 'multi', 'ChatGPT/Codex'), + ], + charts: [ { - percent: 62, - label: 'Startups that list Claude Code as a must-have', - source: { column: 'ai_coding_tools', aggregation: 'multi', target: 'Claude Code' }, + title: 'Which AI coding tools do you use?', + note: 'Aided, multiple options selectable', + column: 'ai_coding_tools', + aggregation: 'multi', + maxBars: 10, }, - { - percent: 37, - label: 'Startups that list Cursor as a must-have', - source: { column: 'ai_coding_tools', aggregation: 'multi', target: 'Cursor' }, - }, - { percent: 12, label: 'Startups that don’t pay for AI tools at all' }, ], - charts: ['AICodingToolsChart'], wordCloud: { label: 'Must-have developer tools by keyword frequency', words: [ @@ -220,119 +460,86 @@ const stateOfStartupsData = { { text: 'antigravity', count: 28 }, ], }, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Paid AI Subscriptions', + id: 'paid-subs', + eyebrow: 'Paid AI subscriptions', + title: 'Claude overtook OpenAI in the wallet.', description: - 'Paid Claude subscriptions sit at 59% of respondents. Paid OpenAI is at 39%. Gemini entered the list at 27%.', + 'Paid Claude subscriptions jumped from 28% to 59% of respondents. Paid OpenAI dropped from 57% to 39%. Gemini entered the list at 27%.', stats: [ + stat('pay for Claude', 'subscriptions', 'multi', 'Claude'), + stat('pay for OpenAI / ChatGPT', 'subscriptions', 'multi', 'OpenAI / ChatGPT'), + stat('pay for Cursor', 'subscriptions', 'multi', 'Cursor'), + ], + charts: [ { - percent: 59, - label: 'Startups that pay for Claude', - source: { column: 'subscriptions', aggregation: 'multi', target: 'Claude' }, - }, - { - percent: 39, - label: 'Startups that pay for OpenAI or ChatGPT', - source: { - column: 'subscriptions', - aggregation: 'multi', - target: 'OpenAI / ChatGPT', - }, - }, - { - percent: 27, - label: 'Startups that pay for Gemini', - source: { column: 'subscriptions', aggregation: 'multi', target: 'Gemini' }, + title: 'Which subscriptions does your startup pay for?', + column: 'subscriptions', + aggregation: 'multi', + maxBars: 10, }, ], - charts: ['PaidSubscriptionsChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Model Providers', + id: 'model-providers', + eyebrow: 'Model providers', + title: 'Anthropic is the default model provider.', description: - 'Anthropic/Claude climbed from 38% to 64%; OpenAI fell from 69% to 51%. Gemini entered at 43%. Hugging Face and custom models lost material share, suggesting fewer teams are running their own inference.', + 'Anthropic/Claude climbed from 38% to 64%; OpenAI fell from 69% to 51%. Gemini entered at 44%. Hugging Face and custom models lost material share, a sign fewer teams run their own inference.', stats: [ + stat('use Anthropic models', 'ai_models_used', 'multi', 'Anthropic/Claude'), + stat('use OpenAI models', 'ai_models_used', 'multi', 'OpenAI'), + stat('use Gemini', 'ai_models_used', 'multi', 'Gemini'), + ], + charts: [ { - percent: 64, - label: 'Startups using Anthropic models', - source: { - column: 'ai_models_used', - aggregation: 'multi', - target: 'Anthropic/Claude', - }, - }, - { - percent: 51, - label: 'Startups using OpenAI models', - source: { column: 'ai_models_used', aggregation: 'multi', target: 'OpenAI' }, - }, - { - percent: 43, - label: 'Startups using Gemini', - source: { column: 'ai_models_used', aggregation: 'multi', target: 'Gemini' }, + title: 'Which AI models are you using?', + column: 'ai_models_used', + aggregation: 'multi', + maxBars: 10, }, ], - charts: ['AIModelsChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, ], }, { - title: 'AI-generated Code is the Median Experience', shortTitle: 'AI-written code', + title: 'AI-generated code is the median experience.', description: - '62% of startups have more than half their codebase written by AI. 41% are at 76–100%. Only 2% are at zero. Older founders use it more heavily than younger ones, and non-technical founders more than technical ones.', - pullQuote: { - quote: - 'It has made entirely efficient the most menial coding tasks, elevating the developer focus to matters of design and architecture.', - author: 'Anonymous respondent', - authorPosition: 'San Francisco Bay Area', - }, + '62% of startups have more than half their codebase written by AI. 40% are at 76 to 100%. Only 2% are at zero. Older founders use it more heavily than younger ones, and non-technical founders more than technical ones.', sections: [ { - title: 'Share of Codebase', - newInYear: 2026, + id: 'ai-codebase', + eyebrow: 'Share of codebase', + title: '40% of respondents have more than three-quarters of their code AI-generated.', description: - 'Among non-technical founders, the 76-to-100% share rises to 54%. Among 50-to-59-year-olds it rises to 80%. AI code generation is a median practice, not a fringe one.', + 'Among non-technical founders, the 76-to-100% share rises to 54%. Among 50-to-59-year-olds it rises to 60%. Flip the age cohort toggle to see it climb with age.', + pullQuote: { + quote: + 'It has made entirely efficient the most menial coding tasks, elevating the developer focus to matters of design and architecture.', + author: 'Anonymous respondent in the San Francisco Bay Area', + }, stats: [ + stat( + 'have 76 to 100% AI-generated code', + 'ai_generated_codebase_percent', + 'single', + '76-100%' + ), + stat('have majority AI-generated code', 'ai_generated_codebase_percent', 'single', [ + '51-75%', + '76-100%', + ]), + stat('have zero AI-generated code', 'ai_generated_codebase_percent', 'single', '0%'), + ], + charts: [ { - percent: 41, - label: 'Startups with 76–100% of their codebase AI-generated', - source: { - column: 'ai_generated_codebase_percent', - aggregation: 'single', - target: '76-100%', - }, - }, - { - percent: 62, - label: 'Startups with a majority AI-generated codebase', - source: { - column: 'ai_generated_codebase_percent', - aggregation: 'single', - target: ['51-75%', '76-100%'], - }, - }, - { - percent: 2, - label: 'Startups with zero AI-generated code', - source: { - column: 'ai_generated_codebase_percent', - aggregation: 'single', - target: '0%', - }, + title: 'What percentage of your codebase was generated by AI?', + column: 'ai_generated_codebase_percent', + aggregation: 'single', }, ], - charts: ['AICodebasePercentChart'], - wordCloud: undefined, summarizedAnswer: { label: 'How AI is changing the way startups build', answers: [ @@ -348,156 +555,197 @@ const stateOfStartupsData = { 'Solo founders competing with funded teams', ], }, - rankedAnswersPair: undefined, + cohortToggle: { + eyebrow: 'Age cohort', + key: 'person_age', + defaultLabel: 'All', + options: [ + { label: 'All', filter: null }, + { label: 'Under 40', filter: AGE_UNDER_40 }, + { label: '40–49', filter: '40–49' }, + { label: '50–59', filter: '50–59' }, + { label: '60+', filter: '60+' }, + ], + }, + }, + { + id: 'cost-of-vibes', + eyebrow: 'The cost of vibes', + title: 'Building got easier. Selling did not.', + description: + 'The more AI-generated a startup’s codebase, the less likely it is monetizing yet, and the more likely it names customer acquisition as its biggest challenge. One way to view this, early-stage startups are the ones more likely to be heavy users of AI, and they’re also the ones most likely to be early to monetization.', + pullQuote: { + quote: + 'The hardest is getting the first paying customer to care, because AI-native dev tooling is a crowded space where every founder ships fast but almost nobody converts.', + author: 'Shteryo Dzhimov, FixSense', + }, + stats: [ + stat( + 'of heavy AI users (76 to 100% AI-generated code) are currently monetizing', + 'currently_monetizing', + 'single', + 'Yes', + { ai_generated_codebase_percent: '76-100%' } + ), + stat( + 'of zero-AI users are currently monetizing, almost twice the rate', + 'currently_monetizing', + 'single', + 'Yes', + { ai_generated_codebase_percent: '0%' } + ), + stat( + 'of heavy AI users name customer acquisition as their biggest challenge', + 'biggest_challenge', + 'single', + 'Customer acquisition', + { ai_generated_codebase_percent: '76-100%' } + ), + ], + charts: [ + { + kind: 'cross-tab', + title: 'More AI-generated code, less likely to be monetizing yet', + eyebrow: 'Cost of vibes', + axisColumn: 'ai_generated_codebase_percent', + xAxisLabel: 'Share of codebase that is AI-generated', + yAxisLabel: 'Share of respondents who are monetizing', + cohorts: AI_CODEBASE_COHORTS, + series: [ + { + caption: 'Currently monetizing', + tone: 'accent', + query: { column: 'currently_monetizing', aggregation: 'single', target: 'Yes' }, + }, + ], + }, + ], }, ], }, { - title: 'The Stack Consolidated', - shortTitle: 'Tech Stack', + shortTitle: 'Supabase deepens', + title: 'The stack consolidated.', description: 'Supabase gained ground as a primary database, and combined with Postgres, it’s clear what platform startups are betting on. Hyperscalers lost share. And the frontend layer is diversifying fast.', - pullQuote: { - quote: 'No hand written code anymore. We are building around AI coding agents.', - author: 'Anonymous respondent', - authorPosition: 'San Francisco Bay Area', - }, sections: [ { - title: 'Primary Database', + id: 'databases', + eyebrow: 'Primary database', + title: '80% choose some form of Postgres.', description: - 'Postgres went from 76% to 82%. Every legacy NoSQL option lost share: MongoDB dropped 5%, MySQL 3%, Firebase 2%. Neon, DynamoDB, and Convex appeared as options for the first time and took small but measurable shares.', + 'Postgres went from 76% to 80%. Every legacy NoSQL option lost share: MongoDB dropped 5%, MySQL 3%, Firebase 2%. Neon, DynamoDB, and Convex appeared as options for the first time and took small but measurable shares.', + pullQuote: { + quote: 'No hand written code anymore. We are building around AI coding agents.', + author: 'Anonymous respondent in the San Francisco Bay Area', + }, stats: [ + staticStat('Startups using Postgres as a database', 80), + staticStat('Startups with Node.js in their backend stack', 60), + staticStat('Startups with a JavaScript framework in their frontend stack', 83), + ], + charts: [ { - percent: 82, - label: 'Startups using Postgres as a database', - source: { column: 'databases', aggregation: 'multi', target: 'Supabase' }, + title: 'Which databases are your startup using?', + column: 'databases', + aggregation: 'single', + maxBars: 10, }, - { percent: 60, label: 'Startups with Node.js in their backend stack' }, - { percent: 83, label: 'Startups with a JavaScript framework in their frontend stack' }, ], - charts: ['DatabasesChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Auth and Identity', - newInYear: 2026, + id: 'auth', + eyebrow: 'Auth (new this year)', + title: 'Supabase Auth landed at 72%.', description: - 'Three in four respondents who answered the auth question picked Supabase Auth.', + 'This question was new in 2026, so there is no prior baseline. Three in four respondents who answered the auth question picked Supabase Auth. The firm migration floor is the ~25% who picked no Supabase option at all.', stats: [ + stat('use Supabase Auth', 'auth_provider', 'multi', 'Supabase Auth'), + stat('use Auth0', 'auth_provider', 'multi', 'Auth0'), + stat('use NextAuth / Auth.js', 'auth_provider', 'multi', 'NextAuth / Auth.js'), + ], + charts: [ { - percent: 72, - label: 'Startups using Supabase Auth', - source: { - column: 'auth_provider', - aggregation: 'multi', - target: 'Supabase Auth', - }, - }, - { - percent: 15, - label: 'Startups using Auth0', - source: { column: 'auth_provider', aggregation: 'multi', target: 'Auth0' }, - }, - { - percent: 14, - label: 'Startups using NextAuth or Auth.js', - source: { - column: 'auth_provider', - aggregation: 'multi', - target: 'NextAuth / Auth.js', - }, + title: 'What authentication provider do you use?', + column: 'auth_provider', + aggregation: 'multi', + maxBars: 10, }, ], - charts: ['AuthProviderChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Hosting and Cloud', + id: 'hosting', + eyebrow: 'Hosting and cloud', + title: 'Supabase and Vercel are running away with startup hosting.', description: - 'Supabase held its lead. Vercel extended its lead over AWS by 9%. Cloudflare grew fastest of all, crossing 27% and passing AWS on the way up. Every hyperscaler lost share.', + 'Supabase held its lead. Vercel was already ahead of AWS in 2025, and in 2026 it extended that lead by 9%. Cloudflare grew fastest of all, crossing 27% and passing AWS on the way up. Every hyperscaler lost share.', stats: [ + stat('build on Supabase', 'cloud_providers', 'multi', 'Supabase'), + stat('host on Vercel', 'cloud_providers', 'multi', 'Vercel'), + stat('run on Cloudflare', 'cloud_providers', 'multi', 'Cloudflare'), + ], + charts: [ { - percent: 50, - label: 'Startups hosting on Supabase', - source: { column: 'cloud_providers', aggregation: 'multi', target: 'Supabase' }, - }, - { - percent: 47, - label: 'Startups hosting on Vercel', - source: { column: 'cloud_providers', aggregation: 'multi', target: 'Vercel' }, - }, - { - percent: 27, - label: 'Startups hosting on Cloudflare', - source: { column: 'cloud_providers', aggregation: 'multi', target: 'Cloudflare' }, + title: 'Which cloud providers is your startup using?', + column: 'cloud_providers', + aggregation: 'multi', + maxBars: 10, }, ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Frontend Diversifies', + id: 'frontend', + eyebrow: 'Frontend diversifies', + title: 'Expo, TanStack, HTMX, and Astro all arrived this year.', description: - 'React and Next.js both grew. But the quieter story is that four tools went from effectively zero to real share in 12 months: Expo 10%, TanStack 8%, HTMX 4%, Astro 3%. Native mobile also picked up 3 points.', + 'React and Next.js both grew. But four tools went from effectively zero to real share in 12 months: Expo 10%, TanStack 8%, HTMX 4%, Astro 3%. Native mobile also picked up 3%.', stats: [ + newStat('use Expo', 'frontend_stack', 'multi', 'Expo'), + newStat('use TanStack', 'frontend_stack', 'multi', 'TanStack'), + stat( + 'use native mobile (iOS / Android)', + 'frontend_stack', + 'multi', + 'Native mobile (iOS / Android)' + ), + ], + charts: [ { - percent: 10, - label: 'Startups using Expo', - source: { column: 'frontend_stack', aggregation: 'multi', target: 'Expo' }, + title: 'What frontend technologies are you using?', + column: 'frontend_stack', + aggregation: 'multi', + maxBars: 10, }, - { - percent: 8, - label: 'Startups using TanStack', - source: { column: 'frontend_stack', aggregation: 'multi', target: 'TanStack' }, - }, - { percent: 3, label: 'Increase in native iOS / Android adoption' }, ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, ], }, { - title: 'Agents Shipped. The Operator Tools Did Not.', - shortTitle: 'AI and Agents', + shortTitle: 'Agents mainstream', + title: 'Agents shipped. The operator tools did not.', description: 'Half of respondents are building agents. Multi-agent systems are in production at a quarter of them. MCP adoption crossed 57% in its first year. But the operational layer beneath all of this is missing: most teams do not monitor AI workloads, most have no formal prompt management, and one in three has no eval process.', - pullQuote: { - quote: - 'AI is embedded in how we build and scale. From using Claude and Cursor in dev, to voice AI in product for smarter, faster recruiting (which is our business).', - author: 'Jinal Jhaveri', - authorPosition: 'Founder, Mismo', - authorAvatar: '/images/state-of-startups/quote-avatars/jinal-j-120x120.jpg', - }, sections: [ { - title: 'Who’s Building Agents', + id: 'agent-building', + eyebrow: 'Who is building agents', + title: '52% of respondents are building agents.', description: - 'Agent-building share is statistically flat year over year. The “not sure” cohort shrank, which means undecided builders are making up their minds and shipping. What they automate has shifted: workflow and data analysis climbed; customer support (chat bots) fell off the top spot.', - stats: [ + 'Agent-building share is statistically flat year over year. The "not sure" cohort shrank, which means undecided builders are making up their minds and shipping. Agents are also getting more sophisticated and handling workflow and data analysis, not just customer support.', + stats: [], + charts: [ { - percent: 52, - label: 'Startups building or planning to build AI agents', - source: { column: 'building_ai_agents', aggregation: 'single', target: 'Yes' }, + title: 'Are you building or planning to build AI agents?', + column: 'building_ai_agents', + aggregation: 'single', }, - { percent: 34, label: 'Startups with agents automating customer support' }, { - percent: 16, - label: 'Startups that are not building AI agents', - source: { column: 'building_ai_agents', aggregation: 'single', target: 'No' }, + title: 'What problems are your AI agents solving?', + column: 'ai_agents_problems', + aggregation: 'multi', + maxBars: 10, }, ], - charts: ['BuildingAgentsChart'], - wordCloud: undefined, summarizedAnswer: { label: 'Most common AI agent use cases', answers: [ @@ -513,288 +761,393 @@ const stateOfStartupsData = { 'Personalization and recommendations', ], }, - rankedAnswersPair: undefined, }, { - title: 'Multi-agent Systems', - newInYear: 2026, + id: 'multi-agent', + eyebrow: 'Multi-agent (new this year)', + title: 'Three in four agent-builders are doing multi-agent work.', description: - 'Three in four agent-builders are already doing multi-agent work. 25% say it is in production. 21% in development. 36% are planning. Only 16% said no.', + '24% of people building agents are orchestrating multiple agents. The advanced builders are racing ahead of the pack.', stats: [ + stat( + 'have multi-agent systems in production', + 'building_multi_agent_systems', + 'single', + 'Yes, in production' + ), + stat( + 'have multi-agent systems in development', + 'building_multi_agent_systems', + 'single', + 'Yes, in development' + ), + stat( + 'are planning multi-agent systems', + 'building_multi_agent_systems', + 'single', + 'Planning to' + ), + ], + charts: [ { - percent: 25, - label: 'Agent builders running multi-agent systems in production', - source: { - column: 'building_multi_agent_systems', - aggregation: 'single', - target: 'Yes, in production', - }, - }, - { - percent: 21, - label: 'Agent builders with multi-agent systems in development', - source: { - column: 'building_multi_agent_systems', - aggregation: 'single', - target: 'Yes, in development', - }, - }, - { - percent: 36, - label: 'Agent builders planning multi-agent systems', - source: { - column: 'building_multi_agent_systems', - aggregation: 'single', - target: 'Planning to', - }, + title: 'Are you building multi-agent systems?', + column: 'building_multi_agent_systems', + aggregation: 'single', }, ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'The Operational Gap', - newInYear: 2026, + id: 'agent-infra-gap', + eyebrow: 'The operational gap (new this year)', + title: 'Agents ship without the operations stack.', description: - 'Prompt management, evaluation, and AI observability all paint the same picture: most teams ship agents without the operator stack underneath them.', + 'Agent usage and construction is growing. But the operational layer (monitoring, versioning, evaluation, etc.) is still missing. If the agentic trend continues, this represents a real opportunity for the next wave of builders.', stats: [], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, + charts: [ + { + title: 'How do you manage prompts in production?', + column: 'prompt_management', + aggregation: 'multi', + maxBars: 8, + }, + { + title: 'How do you handle AI model evaluation and testing?', + column: 'ai_evaluation_testing', + aggregation: 'multi', + maxBars: 8, + }, + { + title: 'What observability tools do you use for AI workloads?', + column: 'ai_observability', + aggregation: 'multi', + maxBars: 8, + }, + ], }, { - title: 'MCP Adoption', - newInYear: 2026, + id: 'mcp', + eyebrow: 'MCP (new this year)', + title: 'MCP went mainstream fast.', description: - 'A year after the protocol launched, 57% of respondents have already adopted it. Only 14% say they are unfamiliar.', - stats: [ - { percent: 57, label: 'Respondents with hands on MCP servers or tools' }, - { percent: 14, label: 'Respondents unfamiliar with MCP' }, - { percent: 29, label: 'Respondents still evaluating MCP' }, + 'A year after the Model Context Protocol launched, more than half of respondents are already active users. Even as the debate over MCP and APIs continues, people still find MCP valuable in at least some contexts.', + stats: [], + charts: [ + { + title: 'Have you adopted any MCP servers or tools?', + column: 'mcp_adoption', + aggregation: 'single', + }, ], - charts: ['MCPAdoptionChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, + callout: { + eyebrow: 'Supabase AI Tools', + body: 'Learn more about Supabase MCP servers and Supabase Agent Skills and level up your AI-driven development.', + href: 'https://supabase.com/docs/guides/getting-started/mcp', + cta: 'Read the docs', + external: true, + }, }, ], }, { - title: 'Every Operator Tool Lost Ground', - shortTitle: 'Operator tools', + shortTitle: 'What happens to SaaS?', + title: 'What is going to happen to SaaS?', description: - 'Five separate questions show the same pattern this year. CRMs, analytics, observability, dev communities, prompt management. In every one, named vendors lost share, and either “we don’t have one yet” or “custom-built” grew. Startups are not buying operator tools. They are building their own or doing without.', - pullQuote: undefined, + 'The same pattern shows up across categories this year. In CRMs, analytics, and observability, named SaaS vendors lost share while "we don’t have one yet" or "custom-built" grew. Startups are not buying operator SaaS. They are building their own or doing without.', sections: [ { - title: 'Sales Tools and CRM Absence', + id: 'no-crm', + eyebrow: 'Sales tools', + title: 'CRM absence jumped 11%.', description: - '53% of startups with a GTM motion have no formal CRM, up from 43%. Every named CRM lost share: HubSpot, Salesforce, Notion/Airtable, Google Sheets. Build-your-own, or nothing at all.', + '53% of startups with a GTM motion have no formal CRM, up from 43%. Every named CRM lost share: HubSpot, Salesforce, Notion/Airtable, Google Sheets. Teams build their own or do without.', stats: [ + stat('have no formal CRM', 'sales_tools', 'multi', NO_CRM), + stat('use Google Sheets as a CRM', 'sales_tools', 'multi', 'Google Sheets'), + stat('use HubSpot', 'sales_tools', 'multi', 'HubSpot'), + ], + charts: [ { - percent: 53, - label: 'Startups with no formal CRM', - source: { - column: 'sales_tools', - aggregation: 'multi', - target: 'We don’t have a formal CRM or sales tool yet', - }, - }, - { - percent: 18, - label: 'Startups using Google Sheets as a CRM', - source: { column: 'sales_tools', aggregation: 'multi', target: 'Google Sheets' }, - }, - { - percent: 12, - label: 'Startups using HubSpot', - source: { column: 'sales_tools', aggregation: 'multi', target: 'HubSpot' }, + title: 'Which sales tools are you using?', + column: 'sales_tools', + aggregation: 'multi', + maxBars: 10, }, ], - charts: ['SalesToolsChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Observability', + id: 'observability', + eyebrow: 'Observability', + title: '56% still don’t use observability tools. Those who do are building their own.', description: - '56% still don’t use observability tools. “Custom solution” is the fastest-growing answer, up 2.5%. Datadog and Prometheus both lost share. Sentry kept its lead and grew slightly. The observability market is bifurcating between Sentry for errors and custom dashboards for everything else.', + '"Custom solution" is the fastest-growing answer, up 2.5%. Datadog and Prometheus both lost share. Sentry kept its lead and grew slightly. The observability market is bifurcating between Sentry for errors and custom dashboards for everything else.', stats: [ + stat('don’t use observability tools yet', 'observability', 'multi', NO_OBSERVABILITY), + stat('use Sentry', 'observability', 'multi', 'Sentry'), + stat('built a custom solution', 'observability', 'multi', 'Custom solution'), + ], + charts: [ { - percent: 56, - label: 'Startups that don’t use observability tools', - source: { - column: 'observability', - aggregation: 'multi', - target: 'We don’t use observability tools yet', - }, + title: 'Which observability tools are you using?', + column: 'observability', + aggregation: 'multi', + maxBars: 10, }, ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Analytics and Growth Tools', + id: 'analytics', + eyebrow: 'Analytics and growth tools', + title: 'Custom-built dashboards grew 6%.', description: - '“I don’t track this yet” grew 5%. HubSpot, Salesforce, Mixpanel, Segment all lost share. Custom-built dashboards grew 6%. The pattern repeats: skip the vendor, ship something internal, or don’t track at all.', - stats: [], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, - }, - { - title: 'Developer Communities', - description: - '“No, we haven’t built a community” grew 4 points to 48%. “In progress / planning to” shrank. The “yes, we built one” share is flat at 11%. Dev-community-led marketing has a smaller top-of-funnel this year than last.', + '"I don’t track this yet" grew 5%. HubSpot, Salesforce, Mixpanel, Segment all lost share. The pattern repeats: skip the vendor, ship something internal, or don’t track at all.', stats: [ - { - percent: 48, - label: 'Startups that have not built a developer community', - source: { column: 'dev_community_built', aggregation: 'single', target: 'No' }, - }, - { - percent: 11, - label: 'Startups that have built a developer community', - source: { column: 'dev_community_built', aggregation: 'single', target: 'Yes' }, - }, + stat('don’t track growth yet', 'growth_tools', 'multi', NO_ANALYTICS), + stat('use custom-built dashboards', 'growth_tools', 'multi', 'Custom-built dashboards'), + stat('use Google Analytics', 'growth_tools', 'multi', 'Google Analytics'), ], charts: [], - wordCloud: undefined, - summarizedAnswer: { - label: 'Operator tools startups wish existed', - answers: [ - 'Unified backend platform combining auth, edge, database, and queues', - 'AI agents with real memory and workflow context', - 'Local-first dev environments that sync to Supabase or Git', - 'AI copilots for sales, marketing, or documentation', - 'UI builders with direct-to-code export and stateful logic', - 'Better CLI-driven or REPL-native dev tools', - 'Automated integration layers between SaaS APIs', - 'Real-time dashboards that don’t require BI tools', - 'One-click staging, testing, and preview environments', - 'AI validators for production database migrations', - 'Visual version control and state inspection for app logic', - 'Agent-like task runners for cron jobs, workflows, monitoring', - 'Prompt versioning and evaluation as a first-class product', - 'Observability that understands AI workloads natively', - 'CRMs designed for founder-led, product-led motions', - ], - }, - rankedAnswersPair: undefined, }, ], }, { - title: 'Founder-led. No CRM. Mostly Bootstrapped.', - shortTitle: 'Go-To-Market', + shortTitle: 'Getting customers', + title: 'Founder-led. No CRM. Mostly bootstrapped.', description: 'Founders still do sales themselves. Two in three have never tried paid acquisition. Pricing is settling on tiered feature plans for the first time.', - pullQuote: { - quote: - 'Building is the easy part. Distribution is the hardest. A lot of competition nowadays. There is no unique ideas/products anymore.', - author: 'Bill Hinostroza', - authorPosition: 'Abriz', - }, sections: [ { - title: 'Initial Customers', + id: 'initial-customers', + eyebrow: 'Initial customers', + title: 'Personal networks still work best.', description: 'Personal networks remain the top source of initial paying customers. 67% of respondents still haven’t tried paid acquisition at all, up from 62% last year.', + pullQuote: { + quote: + 'Building is the easy part. Distribution is the hardest. A lot of competition now a days. There is no unique ideas/products anymore.', + author: 'Bill Hinostroza, Abriz', + }, stats: [ + stat( + 'got first customers from personal networks', + 'initial_paying_customers', + 'multi', + 'Personal/professional network' + ), + stat( + 'got first customers from cold outreach', + 'initial_paying_customers', + 'multi', + 'Cold outreach or sales' + ), + stat( + 'got first customers from inbound social', + 'initial_paying_customers', + 'multi', + 'Inbound from social media (Twitter, LinkedIn, etc.)' + ), + ], + charts: [ { - percent: 67, - label: - 'Startups that get their first customers via personal and professional networks', - source: { - column: 'initial_paying_customers', - aggregation: 'multi', - target: 'Personal/professional network', - }, + title: "Where did your startup's initial paying customers come from?", + column: 'initial_paying_customers', + aggregation: 'multi', + maxBars: 10, }, - { percent: 48, label: 'Startups that engage users through social media' }, - { percent: 36, label: 'Startups that use tiered feature plans for pricing' }, ], - charts: ['InitialPayingCustomersChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Sales Motion', + id: 'sales-motion', + eyebrow: 'Sales motion', + title: 'Founder-led sales is still the norm.', description: - 'Dedicated full-time sales hires usually do not arrive until after the tenth employee. Product-led growth as a motion climbed 4 points to half of respondents. “Not sure yet” is shrinking.', + 'Dedicated full-time sales hires usually do not arrive until after the tenth employee. Product-led growth as a motion climbed 4% to half of respondents. "Not sure yet" is shrinking.', stats: [ - { - percent: 50, - label: 'Startups using a product-led growth motion', - source: { - column: 'market_model', - aggregation: 'multi', - target: 'Product-led growth', - }, - }, + stat('have any dedicated sales function', 'dedicated_sales_function', 'single', [ + 'Yes, full-time sales team', + 'Yes, but it’s founder-led or part-time', + ]), + stat('have no dedicated sales function', 'dedicated_sales_function', 'single', [ + 'No, and no plans to add one yet', + 'No, but planning to build one', + ]), + stat('use a product-led growth motion', 'market_model', 'multi', 'Product-led growth'), ], charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Pricing Settles', + id: 'pricing-settling', + eyebrow: 'Pricing is settling', + title: 'Tiered feature plans jumped 12%.', description: - 'For the first time in the survey, startups are picking a pricing shape earlier in their lifecycle, and they are picking the same one. Tiered feature plans went from 23% to 36% of respondents. The “still experimenting” cohort shrank.', + 'For the first time in the survey, startups are picking a pricing shape earlier in their lifecycle, and they are picking the same one. Tiered feature plans went from 23% to 36% of respondents who picked any pricing model. The "still experimenting" cohort shrank.', stats: [ - { - percent: 36, - label: 'Startups using tiered feature plans', - source: { - column: 'pricing', - aggregation: 'multi', - target: 'Tiered feature plans', - }, - }, + stat('use tiered feature plans', 'pricing', 'multi', 'Tiered feature plans'), + stat('use usage-based pricing', 'pricing', 'multi', 'Usage-based pricing'), + stat('are still experimenting with pricing', 'pricing', 'multi', 'Still experimenting'), ], charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, ], }, { - title: 'Founders Are Broadcasting Less', - shortTitle: 'Where they show up', + shortTitle: 'Community', + title: 'Community is the moat.', description: - 'Conferences emptied out. Social media lost users across every major platform except TikTok. 1 in 10 respondents now says they have given up on social media entirely. 1 in 3 says they have no online persona at all.', - pullQuote: undefined, + 'Few startups build a developer community. The ones that do grow from a completely different mix of channels, and convert at higher rates.', sections: [ { - title: 'The Quiet Exit From Social', + id: 'dev-community', + eyebrow: 'Developer communities', + title: 'Most startups skip community.', description: - 'X lost 6 points. LinkedIn lost 3. Reddit and Discord lost 3–4. TikTok was the only platform that grew. The “I have no online persona” share grew 5 points to 33%. One in three respondents is fully offline.', + 'Most startups skip community entirely. 48% have not built one, up 4%, and the "planning to" middle is shrinking. Only 11% have built one. That small group is the one to watch: the chart below shows they grow from a completely different mix of channels.', stats: [ + stat('have built a developer community', 'dev_community_built', 'single', 'Yes'), + stat( + 'are planning a developer community', + 'dev_community_built', + 'single', + 'In progress / planning to' + ), + stat('have not built one', 'dev_community_built', 'single', 'No'), + ], + charts: [ { - percent: 10, - label: 'Founders that have given up on social media', - source: { - column: 'regular_social_media_use', - aggregation: 'multi', - target: 'I’ve given up social media', - }, + title: 'Have you built a developer community around your product?', + column: 'dev_community_built', + aggregation: 'single', }, - { percent: 33, label: 'Respondents with no online persona' }, - { percent: 55, label: 'Engineers using LinkedIn regularly' }, + ], + }, + { + id: 'community-moat', + eyebrow: 'The growth split', + title: 'Investing in community pays off.', + description: + 'When anyone can ship anything, distribution is the bottleneck. Personal networks run dry. Cold outreach gets ignored. The startups that built a developer community ship into a different funnel: open-source users and developer communities convert into paying customers at multiples of the rate non-community teams see. The chart below splits the customer-source mix by community status.', + pullQuote: { + quote: + 'The hardest part has been gaining consistent user traction, cutting through noise, reaching the right audience, and turning early interest into active, retained users.', + author: 'Aviral Mathur, PlantPal', + }, + stats: [ + stat( + 'of community-builders convert open-source users into paying customers', + 'initial_paying_customers', + 'multi', + 'Open source users who converted', + { dev_community_built: 'Yes' } + ), + stat( + 'of community-builders pull first customers directly out of Discord, Slack, and Reddit', + 'initial_paying_customers', + 'multi', + 'Developer communities (Discord, Slack, Reddit, etc.)', + { dev_community_built: 'Yes' } + ), + stat( + 'of community-builders rely on personal networks for first customers', + 'initial_paying_customers', + 'multi', + 'Personal/professional network', + { dev_community_built: 'Yes' } + ), + ], + charts: [ + { + kind: 'channel-mix', + title: 'Where first customers come from, split by community status', + eyebrow: 'The moat', + column: 'initial_paying_customers', + cohortColumn: 'dev_community_built', + cohorts: [ + { label: 'Built a developer community', filter: 'Yes', tone: 'accent' }, + { label: 'No community', filter: 'No', tone: 'muted' }, + ], + rows: [ + { + target: 'Developer communities (Discord, Slack, Reddit, etc.)', + display: 'Discord / Slack / Reddit', + }, + { + target: 'Open source users who converted', + display: 'Open-source users who converted', + }, + { + target: 'Content (blog, newsletter, SEO)', + display: 'Content (blog, newsletter, SEO)', + }, + { + target: 'Inbound from social media (Twitter, LinkedIn, etc.)', + display: 'Inbound from social', + }, + { target: 'Cold outreach or sales', display: 'Cold outreach or sales' }, + { + target: 'Personal/professional network', + display: 'Personal / professional network', + }, + ], + }, + ], + }, + ], + }, + { + shortTitle: 'Where they show up', + title: 'Founders are broadcasting less.', + description: + 'Conferences emptied out. Social media lost users across every major platform except TikTok. 1 in 10 respondents now says they have given up on social media entirely. 1 in 3 says they have no online persona at all.', + sections: [ + { + id: 'social-exit', + eyebrow: 'The quiet exit', + title: '10% of founders have given up on social media.', + description: + 'X lost 6%. LinkedIn lost 3%. Reddit and Discord lost 3-4%. TikTok was the only platform that grew. The "I have no online persona" share grew 5% to 33%. One in three respondents is fully offline.', + stats: [ + stat( + 'use LinkedIn at least 3x a week', + 'regular_social_media_use', + 'multi', + 'LinkedIn' + ), + stat( + 'use X (Twitter) at least 3x a week', + 'regular_social_media_use', + 'multi', + 'X (Twitter)' + ), + stat( + 'have given up on social media', + 'regular_social_media_use', + 'multi', + 'I’ve given up social media' + ), + ], + charts: [ + { + title: 'Which social media platforms do you use at least 3x per week?', + column: 'regular_social_media_use', + aggregation: 'multi', + maxBars: 10, + }, + ], + }, + { + id: 'conferences', + eyebrow: 'Conferences fell', + title: '2 in 3 respondents are not attending any industry conference.', + description: + 'The "none of the above" cohort jumped 10%. Google Cloud Next, AWS re:Invent, Microsoft Build, and Y Combinator Demo Day all lost share. Conference-led developer marketing is working for a smaller slice of the market every year.', + stats: [], + charts: [ + { + title: 'Which events have you attended or plan to attend?', + column: 'events', + aggregation: 'multi', + maxBars: 10, + }, ], - charts: ['RegularSocialMediaUseChart'], - wordCloud: undefined, - summarizedAnswer: undefined, rankedAnswersPair: [ { label: 'Top podcasts listened to', @@ -806,33 +1159,13 @@ const stateOfStartupsData = { }, ], }, - { - title: 'Conferences Fell Off', - description: - '2 in 3 respondents are not attending any industry conference. The “none of the above” cohort jumped 10 points. Google Cloud Next, AWS re:Invent, Microsoft Build, and Y Combinator Demo Day all lost share. Conference-led developer marketing is working for a smaller slice of the market every year.', - stats: [ - { - percent: 67, - label: 'Respondents not attending any industry conference', - source: { - column: 'events', - aggregation: 'multi', - target: 'None of the above', - }, - }, - ], - charts: [], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, - }, ], }, { - title: 'Technical Complexity Collapsed. New Fears Took Its Place.', shortTitle: 'Outlook', + title: 'Technical complexity is handled. New fears took its place.', description: - 'The biggest single movement in the entire survey: “technical complexity” as the largest business challenge fell from 24% to 11%. AI ate the hard parts of shipping. What replaced it: burn out, AI-competition fear, runway anxiety. Optimism is mostly flat. Engineers less so.', + '"Technical complexity" as the largest business challenge fell from 24% to 11%, the biggest single movement in the survey. AI ate the hard parts of shipping. What replaced it: burn out, AI-competition fear, runway anxiety. Optimism is mostly flat. Engineers less so.', pullQuoteCarousel: [ { label: 'Burn out', @@ -864,388 +1197,118 @@ const stateOfStartupsData = { ], sections: [ { - title: 'The Road Ahead', + id: 'challenges', + eyebrow: 'Biggest challenge', + title: 'Technical complexity fell 12%.', description: - 'The largest year-over-year shift in any single category. Three new challenge options came online: burn out, AI competition, runway anxiety. Together they absorb roughly the same share that used to pick technical complexity. Among 1–10 person teams, burn out has already overtaken technical complexity as the second-biggest challenge.', + 'The largest year-over-year shift in any single category. Three new challenge options came online: burn out, AI competition, runway anxiety. Together they absorb roughly the same share that used to pick technical complexity. Among 1-10 person teams, burn out has already overtaken technical complexity as the second-biggest challenge.', stats: [ + stat( + 'name customer acquisition as their biggest challenge', + 'biggest_challenge', + 'single', + 'Customer acquisition' + ), + stat( + 'name product-market fit as their biggest challenge', + 'biggest_challenge', + 'single', + 'Product-market fit' + ), + stat( + 'name technical complexity as their biggest challenge', + 'biggest_challenge', + 'single', + 'Technical complexity' + ), + ], + charts: [ { - percent: 30, - label: 'Startups whose biggest challenge is customer acquisition', - source: { - column: 'biggest_challenge', - aggregation: 'single', - target: 'Customer acquisition', - }, - }, - { - percent: 20, - label: 'Startups whose biggest challenge is product-market fit', - source: { - column: 'biggest_challenge', - aggregation: 'single', - target: 'Product-market fit', - }, - }, - { - percent: 11, - label: 'Startups whose biggest challenge is technical complexity', - source: { - column: 'biggest_challenge', - aggregation: 'single', - target: 'Technical complexity', - }, + title: "What is your startup's biggest business challenge today?", + column: 'biggest_challenge', + aggregation: 'single', + maxBars: 10, }, ], - charts: ['BiggestChallengeChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, { - title: 'Worldview and Optimism', + id: 'outlook', + eyebrow: 'World outlook', + title: 'People are mostly optimistic, but not equally.', description: - '56% say they are optimistic, down 2 points from last year, not statistically significant. Founders are 58% optimistic; non-founders are 49%. The gap widens among engineers and marketers.', + '57% say they are optimistic, down 1% from last year, not statistically significant. Founders are 58% optimistic; non-founders are 49%.', + stats: [], + charts: [ + { + title: 'Given the state of the world, are you...', + column: 'world_outlook', + aggregation: 'single', + }, + ], + cohortToggle: { + eyebrow: 'Cohort', + key: 'role', + defaultLabel: 'All', + options: [ + { label: 'All', filter: null }, + { label: 'Founders', filter: 'Founder / Co-founder' }, + { label: 'Non-Founders', filter: NON_FOUNDERS }, + ], + }, + }, + { + id: 'optimism-gap', + eyebrow: 'The optimism gap', + title: 'The most optimistic founders are also the farthest from revenue.', + description: + 'Optimism rises with AI codebase share: 49% of zero-AI founders feel optimistic about the world, 61% of heavy AI users do. Revenue runs the other way. 56% of zero-AI users are currently monetizing. 31% of heavy AI users are. One reading is that hands-on AI experience demystifies the technology and turns it into something founders feel they can wield. The heaviest AI users are also the most likely to be bootstrapped, the earliest in their lifecycle, and the least exposed to whether the market actually wants what they have built.', stats: [ - { percent: 58, label: 'Founders that are optimistic' }, - { percent: 49, label: 'Non-founders that are optimistic' }, - { percent: 56, label: 'Respondents overall that are optimistic' }, + stat( + 'of heavy AI users feel optimistic about the world', + 'world_outlook', + 'single', + 'Optimistic', + { ai_generated_codebase_percent: '76-100%' } + ), + stat( + 'of those same heavy AI users are currently monetizing', + 'currently_monetizing', + 'single', + 'Yes', + { ai_generated_codebase_percent: '76-100%' } + ), + stat( + 'of zero-AI users feel optimistic. The least optimistic cohort builds with the least AI.', + 'world_outlook', + 'single', + 'Optimistic', + { ai_generated_codebase_percent: '0%' } + ), + ], + charts: [ + { + kind: 'cross-tab', + title: 'Optimism climbs as AI writes more of the code', + eyebrow: 'Optimism gap', + axisColumn: 'ai_generated_codebase_percent', + xAxisLabel: 'Share of codebase that is AI-generated', + yAxisLabel: 'Share of respondents who are optimistic', + cohorts: AI_CODEBASE_COHORTS, + series: [ + { + caption: 'Feel optimistic', + tone: 'accent', + query: { column: 'world_outlook', aggregation: 'single', target: 'Optimistic' }, + }, + ], + }, ], - charts: ['WorldOutlookChart'], - wordCloud: undefined, - summarizedAnswer: undefined, - rankedAnswersPair: undefined, }, ], }, - ], - participantsList: [ - { company: '440Hz', url: 'https://440hz.uk' }, - { company: '67prototypes.com', url: 'https://67prototypes.com' }, - { company: 'Abriz', url: 'https://abriz.ai' }, - { company: 'Adoptex LLC', url: 'https://adoptex.ai' }, - { company: 'adventuro', url: 'https://adventuro.com' }, - { company: 'AIVO.mx', url: 'https://aivo.mx' }, - { company: 'AJAI', url: 'https://ajai.pro' }, - { company: 'Akrisae LLC', url: 'https://akrisae.com' }, - { company: 'Alertint.com', url: 'https://alertint.com' }, - { company: 'Algebro', url: 'https://algebro.ai' }, - { company: 'Apdate', url: 'https://apdate.dev' }, - { company: 'App name: Vowfolio / company Meisal Media', url: 'https://meisal.com' }, - { company: 'Artsnoa.com', url: 'https://artsnoa.com' }, - { company: 'askOdin', url: 'https://askodin.app' }, - { company: 'AstraDev', url: 'https://astradev.org' }, - { company: 'Aurelo Technologies.', url: 'https://technologies.aurelo.cc' }, - { company: 'automate.engineer', url: 'https://automate.engineer' }, - { company: 'Babelbeez', url: 'https://babelbeez.com' }, - { company: 'Baltanor', url: 'https://baltanor.com' }, - { company: 'BelowGames', url: 'https://belowgames.com' }, - { company: 'Beyond Better', url: 'https://beyondbetter.app' }, - { company: 'BizzKings', url: 'https://bizzkings.com' }, - { company: 'BlueHero B.V.', url: 'https://bluehero.io' }, - { company: 'Bontetsu', url: 'https://bontetsu.jp' }, - { company: 'BrandLift AI', url: 'https://brandlift.pe' }, - { company: 'BuboIQ', url: 'https://buboiq.com' }, - { company: 'Built LMS', url: 'https://builtlms.com' }, - { company: 'BundlBe', url: 'https://bundlbe.com' }, - { company: 'Business Initiative', url: 'https://businessinitiative.org' }, - { company: 'Caelus labs', url: 'https://caeluslabs.io' }, - { company: 'Celsa', url: 'https://celsa.app' }, - { company: 'Cenobix', url: 'https://cenobix.com' }, - { company: 'Chartmon', url: 'https://chartmon.com' }, - { company: 'Circuit', url: 'https://withcircuit.com' }, - { company: 'ClearCash.app', url: 'https://clearcash.app' }, - { company: 'Cloud Logics', url: 'https://cloudlogics.dev' }, - { company: 'Cloudflow', url: 'https://cloudflowtechnology.com' }, - { company: 'CloudMES.ai', url: 'https://cloudmes.ai' }, - { company: 'ClubCentric', url: 'https://clubcentric.org' }, - { company: 'CodePlanet', url: 'https://acodeplanet.tech' }, - { company: 'ColabWize', url: 'https://colabwize.com' }, - { company: 'CologneAI GmbH', url: 'https://cologneai.de' }, - { company: 'Complia', url: 'https://complia.tech' }, - { company: 'Cosverse AI', url: 'https://cosverse.ai' }, - { company: 'Cotalent AI', url: 'https://cotalentai.com' }, - { company: 'Courage Library', url: 'https://couragelibrary.in' }, - { company: 'CRONIA', url: 'https://cronia.co' }, - { company: 'Darouta Ltd', url: 'https://darouta.com' }, - { company: 'Datapods', url: 'https://datapods.app' }, - { company: 'Datatensei', url: 'https://datatensei.com' }, - { company: 'Debt Clarity Tools', url: 'https://debtclaritytools.com' }, - { company: 'DECODE GR', url: 'https://decode.gr' }, - { company: 'DepthNode', url: 'https://depthnode.ai' }, - { company: 'Desert Odes', url: 'https://desertodes.com' }, - { company: 'Dinerly', url: 'https://dinerly.com' }, - { company: 'Dispatch', url: 'https://dispatch.space' }, - { company: 'docforce', url: 'https://docforce.de' }, - { company: 'DoctorStatus', url: 'https://doctorstatus.in' }, - { company: 'Dragon Tech', url: 'https://dragon-tech.biz' }, - { company: 'DREAMSDEPT.COM', url: 'https://dreamsdept.com' }, - { company: 'DSAT16', url: 'https://dsat16.com' }, - { company: 'Dualmind Labs', url: 'https://dualmindlab.tech' }, - { company: 'Dzyn72', url: 'https://dzyn72.com' }, - { company: 'Ebihara Solutions', url: 'https://ebihara-solutions.com' }, - { company: 'EchoKana', url: 'https://echokana.com' }, - { company: 'ecoTriver', url: 'https://ecotriver.com' }, - { company: 'EdgarLens', url: 'https://edgarlens.ai' }, - { company: 'Edgaze', url: 'https://edgaze.ai' }, - { company: 'EdgeGhost', url: 'https://edgeghost.com' }, - { company: 'EduvisKar', url: 'https://eduviskar.com' }, - { company: 'Elokins Innovation SARL', url: 'https://elokins.com' }, - { company: 'Emerald Sky', url: 'https://emeraldskygroup.com' }, - { company: 'EnglishGPT', url: 'https://englishgpt.org' }, - { company: 'Entelechy Corporation', url: 'https://entel.com' }, - { company: 'Enzonic LLC', url: 'https://enzonic.com' }, - { company: 'epilinked.com', url: 'https://epilinked.com' }, - { company: 'Expanse', url: 'https://expanse.com' }, - { company: 'Farofa Labs', url: 'https://farofalabs.com' }, - { company: 'fibidy', url: 'https://fibidy.com' }, - { company: 'Fictionry', url: 'https://fictionry.com' }, - { company: 'FloSports', url: 'https://flosports.tv' }, - { company: 'Fluum', url: 'https://fluum.ai' }, - { company: 'Flyweel', url: 'https://flyweel.co' }, - { company: 'fog', url: 'https://fog.do' }, - { company: 'FoodWeb AI Ltd.', url: 'https://foodweb.ai' }, - { company: 'Forestate Technologies Inc.', url: 'https://forestate.ca' }, - { company: 'FriendlyBet (soon to be registered)', url: 'https://friendlybet.app' }, - { company: 'FTL', url: 'https://ftl.build' }, - { company: 'Future Wave Technologies', url: 'https://futurewave.in' }, - { company: 'futurefluencyindex', url: 'https://futurefluencyindex.com' }, - { company: 'Ganttra', url: 'https://ganttra.com' }, - { company: 'Gaslighting Check', url: 'https://gaslightingcheck.com' }, - { company: 'Gathr', url: 'https://joingathr.com' }, - { company: 'Geo Insights', url: 'https://geo-insights.nl' }, - { company: 'Geosyncracy, Inc.', url: 'https://geosyncracy.com' }, - { company: 'Get', url: 'https://getshitdone.cl' }, - { company: 'GetFit', url: 'https://getfitapp.io' }, - { company: 'Goldfish', url: 'https://goldfish.sh' }, - { company: 'Guetton Technologies', url: 'https://guetton.dev' }, - { company: 'Haizzy', url: 'https://haizzy.fr' }, - { company: 'Harbour AI', url: 'https://harbour-ai.com' }, - { company: 'Heartly Apps UG', url: 'https://heartly.io' }, - { company: 'Helix Ag Systems', url: 'https://helixagsystems.com' }, - { company: 'Hemma', url: 'https://gethemma.app' }, - { company: 'Hemsy', url: 'https://hemsy.ai' }, - { company: 'hoachatdesk.com', url: 'https://hoachatdesk.com' }, - { company: 'Hostly', url: 'https://hostly.so' }, - { company: 'HS Partner AS', url: 'https://hspartner.no' }, - { company: 'HyperRep', url: 'https://hyperrep.ai' }, - { company: 'ignitd.ai', url: 'https://ignitd.ai' }, - { company: 'In the Money AI', url: 'https://inthemoney.ai' }, - { company: 'Innovacio', url: 'https://innovacio.nl' }, - { company: 'InstaAgent', url: 'https://instaagent.co' }, - { company: 'Instantreply.co', url: 'https://instantreply.co' }, - { company: 'InsterSwap', url: 'https://insterswap.com' }, - { company: 'Intellstra Limited', url: 'https://intellstra.com' }, - { company: 'Intrepid ATG', url: 'https://intrepidatg.com' }, - { company: 'Intrinziq', url: 'https://intrinziq.com' }, - { company: 'Ionio.ai', url: 'https://ionio.io' }, - { company: 'IronCalc', url: 'https://ironcalc.com' }, - { company: 'isavisa', url: 'https://isavisa.com' }, - { company: 'iTTD Ltd', url: 'https://ittd.works' }, - { company: 'jashio.com', url: 'https://jashio.com' }, - { company: 'JustEnglish.lk', url: 'https://justenglish.lk' }, - { company: 'K K Create Pvt. Ltd', url: 'https://kkcreate.in' }, - { company: 'Kamoo.ai', url: 'https://kamoo.ai' }, - { company: 'Kensic LLC', url: 'https://kensic.app' }, - { company: 'KeyPort', url: 'https://keyport.sbs' }, - { company: 'Kids in Cyber', url: 'https://kidsincyber.com' }, - { company: 'Kindred', url: 'https://trykindred.com' }, - { company: 'Knovolo', url: 'https://knovolo.com' }, - { company: 'KNOWRON', url: 'https://knowron.com' }, - { company: 'KoalaFix', url: 'https://koalafix.com' }, - { company: 'koffiework', url: 'https://koffie.work' }, - { company: 'Kontxs', url: 'https://kontxs.com' }, - { company: 'LAiB and Asistime', url: 'https://asistime.ai' }, - { company: 'Layout.design', url: 'https://layout.design' }, - { company: 'Learn Biomimicry', url: 'https://learnbiomimicry.com' }, - { company: 'LectriCash', url: 'https://lectricash.com' }, - { company: 'LengkApp', url: 'https://lengk.app' }, - { company: 'LeoHub AI', url: 'https://leohub.cloud' }, - { company: 'ListingRisk', url: 'https://listingrisk.com' }, - { company: 'LiteSOC Sdn Bhd', url: 'https://litesoc.io' }, - { company: 'LitLife AI', url: 'https://litlife.ai' }, - { company: 'LocalClarity', url: 'https://localclarity.com' }, - { company: 'LOGICTIS', url: 'https://logictis.pl' }, - { company: 'machinetalk GmbH', url: 'https://machine-talk.ai' }, - { company: 'Maigie Ltd', url: 'https://maigie.com' }, - { company: 'Mana', url: 'https://meetmana.com' }, - { company: 'MapChat Social', url: 'https://mapchat.social' }, - { company: 'Mara', url: 'https://iammara.com' }, - { company: 'MarginLevers.com Co.', url: 'https://marginlevers.com' }, - { company: 'MediaCreators', url: 'https://mediacreators.io' }, - { company: 'Meguria inc.', url: 'https://meguria.com' }, - { company: 'Metadine GmbH', url: 'https://metadine.de' }, - { company: 'Metis Learning', url: 'https://metis-learn.io' }, - { company: 'Milivate', url: 'https://milivate.com' }, - { company: 'MindGazeAI', url: 'https://mindgazeai.com' }, - { company: 'MindMuse', url: 'https://mindmuse.care' }, - { company: 'MindQuant', url: 'https://mindquant.ai' }, - { company: 'Minonexus', url: 'https://minonexus.com' }, - { company: 'Minte.app', url: 'https://minte.app' }, - { company: 'Mistle', url: 'https://mistle.dev' }, - { company: 'Misura AI ltd', url: 'https://misura.ai' }, - { company: 'Mocus', url: 'https://mocus.vn' }, - { company: 'Monthly Club', url: 'https://monthlyclubhq.com' }, - { company: 'moorebridge.com', url: 'https://moorebridge.com' }, - { company: 'moss labs', url: 'https://mosslabs.kr' }, - { company: 'MoyaHost', url: 'https://moyahost.ai' }, - { company: 'MyLabelDesk', url: 'https://mylabeldesk.com' }, - { company: 'mytribe', url: 'https://mytribe.in' }, - { company: 'MyVisitVault', url: 'https://myvisitvault.com' }, - { company: 'N3OSystem', url: 'https://n3osystem.io' }, - { company: 'Narcoleptic Fox', url: 'https://narcolepticfox.com' }, - { company: 'Nataris AI', url: 'https://nataris.ai' }, - { company: 'Ninchi', url: 'https://ninchi.dev' }, - { company: 'NISD2.eu', url: 'https://nisd2.eu' }, - { company: 'NIUMI', url: 'https://niumi.org' }, - { company: 'Nixyum', url: 'https://nixyum.com' }, - { company: 'nstop', url: 'https://nstop.app' }, - { company: 'nyas.io', url: 'https://nyas.io' }, - { company: 'Omny', url: 'https://omnysecurity.com' }, - { company: 'ONE62 / MIRA', url: 'https://one62.nl' }, - { company: 'OneStopOnly', url: 'https://onestoponly.com' }, - { company: 'onorder', url: 'https://onorder.id' }, - { company: 'orderflow.ge', url: 'https://orderflow.ge' }, - { company: 'ORDO CFO', url: 'https://ordocfo.com' }, - { company: 'OSH Assembly', url: 'https://oshassembly.com' }, - { company: 'Outlex', url: 'https://outlex.ai' }, - { company: 'parascope.io', url: 'https://parascope.io' }, - { company: 'Parcelcraft', url: 'https://parcelcraft.com' }, - { company: 'Partysnap', url: 'https://partysnap.app' }, - { company: 'Pausa', url: 'https://pausaapp.com' }, - { company: 'PeakGTM', url: 'https://peakgtm.com' }, - { company: 'Pedagogue Systems Inc.', url: 'https://pedagogue.co' }, - { company: 'PenguinLearn', url: 'https://penguinlearn.com' }, - { company: 'Per4mer (Smith Rock Labs)', url: 'https://per4mer.io' }, - { company: 'PicFOMO', url: 'https://picfomo.com' }, - { company: 'Pillar', url: 'https://pillar.it' }, - { company: 'Plowdesk', url: 'https://plowdesk.com' }, - { company: 'PMXT', url: 'https://pmxt.dev' }, - { company: 'PocketPrice', url: 'https://thepocketprice.com' }, - { company: 'Polarise', url: 'https://polarise.io' }, - { company: 'PoliStock, Corp.', url: 'https://polistock.app' }, - { company: 'Prep IQ Education', url: 'https://prepiqedu.in' }, - { company: 'PrepDuel', url: 'https://prepduel.com' }, - { company: 'Prizology', url: 'https://prizology.org' }, - { company: 'Profigent', url: 'https://profigent.ai' }, - { company: 'PromptMetrics', url: 'https://promptmetrics.dev' }, - { company: 'Prosepal', url: 'https://prosepal.io' }, - { company: 'Qalia', url: 'https://qalia.app' }, - { company: 'QuadraMap.com', url: 'https://quadramap.com' }, - { company: 'Qual', url: 'https://qual.cx' }, - { company: 'Querypanel', url: 'https://querypanel.io' }, - { company: 'Radial', url: 'https://radialhq.ai' }, - { company: 'Rakoono', url: 'https://rakoono.com' }, - { company: 'RealMeet', url: 'https://realmeet.de' }, - { company: 'Red Sea Language Learning', url: 'https://redsea.study' }, - { company: 'Reechable', url: 'https://reechable.com' }, - { company: 'Reman.cloud', url: 'https://reman.cloud' }, - { company: 'Rental Shop Management', url: 'https://rentalshopmanagement.com' }, - { company: 'Repaint', url: 'https://repaint.com' }, - { company: 'Replay', url: 'https://replay.sale' }, - { company: 'ReplioHQ.com', url: 'https://repliohq.com' }, - { company: 'Ribbiot', url: 'https://ribbiot.com' }, - { company: 'Runedraw.com', url: 'https://runedraw.com' }, - { company: 'Ruxii Technologies Inc', url: 'https://ruxii.ca' }, - { company: 'saasquickstart.dev', url: 'https://saasquickstart.dev' }, - { company: 'Sandai.org', url: 'https://sandai.org' }, - { company: 'Savvy Gorilla Technologies', url: 'https://savvygorilla.tech' }, - { company: 'ScaleBit Solutions', url: 'https://scalebitsolutions.com' }, - { company: 'Scalekit', url: 'https://scalekit.com' }, - { company: 'Scenarity', url: 'https://scenarity.app' }, - { company: 'ScoutBox', url: 'https://scoutbox.se' }, - { company: 'Secure Ascent', url: 'https://secureascent.com' }, - { company: 'Senrez Technology', url: 'https://senrez.com' }, - { company: 'Sentaiment', url: 'https://sentaiment.com' }, - { company: 'Sentient Logic LLC', url: 'https://sentientlogic.io' }, - { company: 'Sentrix (Formerly Unik AI)', url: 'https://unik.ai' }, - { company: 'share.page', url: 'https://share.page' }, - { company: 'Sharely.ai', url: 'https://sharely.ai' }, - { company: 'Sharkforce', url: 'https://shark-force.com' }, - { company: 'Sherlock GmbH', url: 'https://sherlock.gmbh' }, - { company: 'sieve', url: 'https://usesieve.com' }, - { company: 'Sim Builder', url: 'https://sim-builder.com' }, - { company: 'Simple Report Insight (SR Insight)', url: 'https://srinsight.com' }, - { company: 'Simplify Possible LLC', url: 'https://simplifypossible.com' }, - { company: 'SimplyHRA', url: 'https://simplyhra.com' }, - { company: 'Sipcoin', url: 'https://sipcoin.app' }, - { company: 'Slop Machine', url: 'https://slopmachine.dev' }, - { company: 'Smart AI Design', url: 'https://smartaidesigns.io' }, - { company: 'Smart Conta APP', url: 'https://smartconta.app' }, - { company: 'SNA Labs', url: 'https://snalabs.com' }, - { company: 'Socialtec', url: 'https://socialtec.nl' }, - { company: 'Sparkurio', url: 'https://sparkurio.com' }, - { company: 'SparrowSure, Inc.', url: 'https://sparrowsure.com' }, - { company: 'Specio', url: 'https://specio.space' }, - { company: 'SportDataCo', url: 'https://sportdataco.com' }, - { company: 'SR Info Qube Ltd', url: 'https://srinfoqube.com' }, - { company: 'STEWDY', url: 'https://stewdy.com' }, - { company: 'StoryBuilt', url: 'https://getstorybuilt.com' }, - { company: 'Stowe Health; Effie Connect', url: 'https://stowehealth.com' }, - { company: 'StrikeCraft', url: 'https://strikecraft.app' }, - { company: 'Supabase', url: 'https://supabase.io' }, - { company: 'swftea app pvt ltd', url: 'https://swftea.com' }, - { company: 'Swipeondeck', url: 'https://swipeondeck.com' }, - { company: 'Swirls.ai', url: 'https://swirls.ai' }, - { company: 'Syntaxis', url: 'https://syntaxis.es' }, - { company: 'Talos', url: 'https://talosrun.com' }, - { company: 'TALOS Fleet Technologies', url: 'https://talosfleettechnologies.com' }, - { company: 'Taxina Mobility Pvt Ltd', url: 'https://taxina.in' }, - { company: 'teamvince', url: 'https://teamvince.com' }, - { company: 'Techsnap', url: 'https://techsnap.io' }, - { company: 'Tecnologias Espacio Rojo', url: 'https://espaciorojo.xyz' }, - { company: 'TECSARO LABS PRIVATE LIMITED (Product Tecsaro AI)', url: 'https://tecsaro.com' }, - { company: 'TGAassist', url: 'https://tgaassist.app' }, - { company: 'The Indy Learning Team', url: 'https://theindylearningteam.org' }, - { company: 'The Origination API, Inc.', url: 'https://theoriginationapi.com' }, - { company: 'TherapyHub', url: 'https://therapyhub.io' }, - { company: 'Thinair Computer Inc.', url: 'https://thinair.dev' }, - { company: 'threetone labs', url: 'https://threetone.in' }, - { company: 'Time Squeeze', url: 'https://timesqueeze.net' }, - { company: 'Timeslicer', url: 'https://timeslicer.app' }, - { company: 'Tomorro', url: 'https://tomorro.com' }, - { company: 'Track My Academy', url: 'https://trackmyacademy.com' }, - { company: 'Trail', url: 'https://trailapp.xyz' }, - { company: 'trainable', url: 'https://trainable.world' }, - { company: 'Trayn', url: 'https://trayn.com' }, - { company: 'Trellis', url: 'https://gettrellis.app' }, - { company: 'Trelll as', url: 'https://trelll.no' }, - { company: 'TriPowers LLC', url: 'https://tripowersllc.com' }, - { company: 'TruckFull', url: 'https://truckfull.food' }, - { company: 'Truked', url: 'https://truked.com' }, - { company: 'TrulyNorth', url: 'https://trulynorth.io' }, - { company: 'Tryneedl.ai', url: 'https://tryneedl.ai' }, - { company: 'TSSA (Traffic Stop Safety App)', url: 'https://tssa.tech' }, - { company: 'twynup', url: 'https://twynup.com' }, - { company: 'Type Advantage', url: 'https://typeadvantage.com' }, - { company: 'U1C', url: 'https://u1c.lv' }, - { company: 'Uhuu.io', url: 'https://uhuu.io' }, - { company: 'uniQubit', url: 'https://uniqubit.ca' }, - { company: 'Upgram', url: 'https://upgram.org' }, - { company: 'VAEON', url: 'https://vaeon.ai' }, - { company: 'Value Play Labs', url: 'https://valueplaylabs.com' }, - { company: 'Vandoko', url: 'https://vandoko.ai' }, - { company: 'Veeda.io', url: 'https://veeda.io' }, - { company: 'velto', url: 'https://velto.it' }, - { company: 'VERSE', url: 'https://verseisbetter.com' }, - { company: 'Versuno', url: 'https://versuno.ai' }, - { company: 'vimpl.com', url: 'https://vimpl.com' }, - { company: 'Vindo', url: 'https://vindo.app' }, - { company: 'Vital Dynamix', url: 'https://vitaldynamix.com' }, - { company: 'Vox Animus', url: 'https://vox-animus.com' }, - { company: 'wallace', url: 'https://wallacecorp.ai' }, - { company: 'Watchdog', url: 'https://watchdog.no' }, - { company: 'Wavery', url: 'https://getwavery.com' }, - { company: 'WeAreTeamRocket', url: 'https://weareteamrocket.com' }, - { company: 'WeekThink', url: 'https://weekthink.com' }, - { company: 'Wincrypto.AI', url: 'https://wincrypto.world' }, - { company: 'WITHEQUUS', url: 'https://withequus.com' }, - { company: 'X-ORBIT Proxy Services, LCC.', url: 'https://xorbit.org' }, - { company: 'XCHNGBL LLC', url: 'https://xchngbl.com' }, - { company: 'Xroga AI', url: 'https://xroga.com' }, - { company: 'ZachsApps', url: 'https://zachsapps.com' }, - { company: 'Zelova AI Ltd', url: 'https://zelova.ai' }, - { company: 'Zipr', url: 'https://zipr.in' }, - ], + ] as SurveyChapter[], + + participantsList: participants, } export default stateOfStartupsData diff --git a/apps/www/data/surveys/state-of-startups-data.json b/apps/www/data/surveys/state-of-startups-data.json new file mode 100644 index 00000000000..90614f9e904 --- /dev/null +++ b/apps/www/data/surveys/state-of-startups-data.json @@ -0,0 +1,21744 @@ +{ + "meta": { + "generatedFrom": "http://127.0.0.1:55321", + "years": { + "2025": 2110, + "2026": 2739 + }, + "slices": 109 + }, + "distributions": { + "2025|ai_coding_tools|multi|": { + "rows": [ + { + "label": "Cursor", + "count": 1035 + }, + { + "label": "Visual Studio Code", + "count": 957 + }, + { + "label": "Lovable", + "count": 436 + }, + { + "label": "v0", + "count": 371 + }, + { + "label": "Bolt", + "count": 266 + }, + { + "label": "ChatGPT / Codex", + "count": 232 + }, + { + "label": "Windsurf", + "count": 226 + }, + { + "label": "None", + "count": 148 + }, + { + "label": "Cline", + "count": 71 + }, + { + "label": "Claude Code", + "count": 30 + }, + { + "label": "Claude", + "count": 22 + }, + { + "label": "Tempo", + "count": 21 + }, + { + "label": "Replit", + "count": 14 + }, + { + "label": "Zed", + "count": 13 + }, + { + "label": "Gemini", + "count": 10 + }, + { + "label": "Roo Code", + "count": 7 + }, + { + "label": "Trae", + "count": 7 + }, + { + "label": "claude code", + "count": 6 + }, + { + "label": "claude", + "count": 5 + }, + { + "label": "Claude code", + "count": 5 + }, + { + "label": "Copilot", + "count": 5 + }, + { + "label": "Grok", + "count": 5 + }, + { + "label": "Aider", + "count": 4 + }, + { + "label": "Chat GPT", + "count": 4 + }, + { + "label": "Augment", + "count": 3 + }, + { + "label": "Deepseek", + "count": 3 + }, + { + "label": "Github Copilot", + "count": 3 + }, + { + "label": "GitHub Copilot", + "count": 3 + }, + { + "label": "Jules", + "count": 3 + }, + { + "label": "Junie", + "count": 3 + }, + { + "label": "Roo", + "count": 3 + }, + { + "label": "T3Chat", + "count": 3 + }, + { + "label": "Augment Code", + "count": 2 + }, + { + "label": "Chat gpt", + "count": 2 + }, + { + "label": "Chef by Convex", + "count": 2 + }, + { + "label": "Claude.ai", + "count": 2 + }, + { + "label": "Coderabbit", + "count": 2 + }, + { + "label": "Famous.ai", + "count": 2 + }, + { + "label": "Gemini 2.5 Pro", + "count": 2 + }, + { + "label": "github copilot", + "count": 2 + }, + { + "label": "GitHub copilot", + "count": 2 + }, + { + "label": "Horizons", + "count": 2 + }, + { + "label": "Kilo", + "count": 2 + }, + { + "label": "N8N", + "count": 2 + }, + { + "label": "Roo code", + "count": 2 + }, + { + "label": "Supabase", + "count": 2 + }, + { + "label": "trae", + "count": 2 + }, + { + "label": "abacus", + "count": 1 + }, + { + "label": "adapitive", + "count": 1 + }, + { + "label": "agnt", + "count": 1 + }, + { + "label": "AI Assistent of JetBrains IDEs", + "count": 1 + }, + { + "label": "Ai powered development tool", + "count": 1 + }, + { + "label": "Aider CLI", + "count": 1 + }, + { + "label": "Alex Sidebar", + "count": 1 + }, + { + "label": "ALEXAI", + "count": 1 + }, + { + "label": "Amazon q", + "count": 1 + }, + { + "label": "and Claude", + "count": 1 + }, + { + "label": "and generating boilerplate code. Snyk: For automated security scanning and vulnerability detection in dependencies. These AI tools help our team write better code faster and focus more on innovation.", + "count": 1 + }, + { + "label": "and more", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "anthropic", + "count": 1 + }, + { + "label": "augment", + "count": 1 + }, + { + "label": "augment code", + "count": 1 + }, + { + "label": "Augmentcode", + "count": 1 + }, + { + "label": "Base44", + "count": 1 + }, + { + "label": "Beyond Better", + "count": 1 + }, + { + "label": "Blackbox AI", + "count": 1 + }, + { + "label": "Blink", + "count": 1 + }, + { + "label": "Bubble", + "count": 1 + }, + { + "label": "chat gpt", + "count": 1 + }, + { + "label": "Chat GPT o3/ Gemini 2.5 Pro", + "count": 1 + }, + { + "label": "ChatGPT & Phind", + "count": 1 + }, + { + "label": "ChatGPT 4o and o3", + "count": 1 + }, + { + "label": "ChatGPT and DeepSeek", + "count": 1 + }, + { + "label": "ChatGPT and Jetbrains AI", + "count": 1 + }, + { + "label": "ChatGPT Desktop App", + "count": 1 + }, + { + "label": "Chef", + "count": 1 + }, + { + "label": "Claude / OpenAI", + "count": 1 + }, + { + "label": "Claude code-base", + "count": 1 + }, + { + "label": "Claude Desktop", + "count": 1 + }, + { + "label": "Claude desktop app", + "count": 1 + }, + { + "label": "Claude Sonnet", + "count": 1 + }, + { + "label": "Claude w/ Zed IDE", + "count": 1 + }, + { + "label": "claude.ai", + "count": 1 + }, + { + "label": "ClaudeCode in Cursor", + "count": 1 + }, + { + "label": "Codebuff", + "count": 1 + }, + { + "label": "Cody", + "count": 1 + }, + { + "label": "Cody (Sourcegraph)", + "count": 1 + }, + { + "label": "Continue.dev", + "count": 1 + }, + { + "label": "copilot", + "count": 1 + }, + { + "label": "Copilot and Gemini", + "count": 1 + }, + { + "label": "debugging", + "count": 1 + }, + { + "label": "deep seek", + "count": 1 + }, + { + "label": "deepseek", + "count": 1 + }, + { + "label": "Deepseek and Grok", + "count": 1 + }, + { + "label": "Devin and Junie", + "count": 1 + }, + { + "label": "DreamFlow", + "count": 1 + }, + { + "label": "Dyad", + "count": 1 + }, + { + "label": "Factory AI", + "count": 1 + }, + { + "label": "factory.ai", + "count": 1 + }, + { + "label": "Famous", + "count": 1 + }, + { + "label": "famous.ai", + "count": 1 + }, + { + "label": "Famous.AI", + "count": 1 + }, + { + "label": "firebase studio", + "count": 1 + }, + { + "label": "Firebase Studio", + "count": 1 + }, + { + "label": "Flutterflow", + "count": 1 + }, + { + "label": "gemini", + "count": 1 + }, + { + "label": "Gemini cli", + "count": 1 + }, + { + "label": "Getmocha.com", + "count": 1 + }, + { + "label": "Github and chatgpt", + "count": 1 + }, + { + "label": "GitHub Copilot and ChatGPT", + "count": 1 + }, + { + "label": "Good old notepad", + "count": 1 + }, + { + "label": "Google Ai Studio", + "count": 1 + }, + { + "label": "Google aistudio", + "count": 1 + }, + { + "label": "Google aisudio", + "count": 1 + }, + { + "label": "Google FS", + "count": 1 + }, + { + "label": "Gothic Co-pilot", + "count": 1 + }, + { + "label": "gpt", + "count": 1 + }, + { + "label": "Gpt", + "count": 1 + }, + { + "label": "GPT 4.1", + "count": 1 + }, + { + "label": "Grok Projects", + "count": 1 + }, + { + "label": "Haven’t decided yet", + "count": 1 + }, + { + "label": "Hostinger", + "count": 1 + }, + { + "label": "Hostinger horizons", + "count": 1 + }, + { + "label": "Hostinger Horizons", + "count": 1 + }, + { + "label": "i forget", + "count": 1 + }, + { + "label": "I found they weren’t beginner friendly", + "count": 1 + }, + { + "label": "I have tried but not used cursor and windsurf", + "count": 1 + }, + { + "label": "I use Claude but only in the browser.", + "count": 1 + }, + { + "label": "including: GitHub Copilot: For AI-assisted code suggestions and faster development in various languages. Tabnine: An AI code completion tool that integrates with popular editors like VS Code. ChatGPT (OpenAI): To assist with code explanations", + "count": 1 + }, + { + "label": "Individual language models", + "count": 1 + }, + { + "label": "Internal Agentic Framework utilizing Mistral 7B", + "count": 1 + }, + { + "label": "Jetbrains", + "count": 1 + }, + { + "label": "JetBrains", + "count": 1 + }, + { + "label": "Jetbrains AI", + "count": 1 + }, + { + "label": "Jetbrains Assistant", + "count": 1 + }, + { + "label": "Jetbrains IDE (sometimes AI)", + "count": 1 + }, + { + "label": "Jetbrains Junie", + "count": 1 + }, + { + "label": "junie", + "count": 1 + }, + { + "label": "Just ChatGPT", + "count": 1 + }, + { + "label": "KiloCode", + "count": 1 + }, + { + "label": "Macaly", + "count": 1 + }, + { + "label": "MagicPath. I try as many as seem good.", + "count": 1 + }, + { + "label": "Manus AI", + "count": 1 + }, + { + "label": "MCP integration with Supabase is essential", + "count": 1 + }, + { + "label": "Microsoft Copilot", + "count": 1 + }, + { + "label": "N", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "n8n", + "count": 1 + }, + { + "label": "neovim", + "count": 1 + }, + { + "label": "NEOVIM", + "count": 1 + }, + { + "label": "Nordcraft", + "count": 1 + }, + { + "label": "Not Developer", + "count": 1 + }, + { + "label": "Not sure", + "count": 1 + }, + { + "label": "ollama", + "count": 1 + }, + { + "label": "open ai", + "count": 1 + }, + { + "label": "OpenCode (SST)", + "count": 1 + }, + { + "label": "Our startup leverages AI-powered coding tools to boost developer productivity and code quality", + "count": 1 + }, + { + "label": "Perplexity", + "count": 1 + }, + { + "label": "Replot", + "count": 1 + }, + { + "label": "roo", + "count": 1 + }, + { + "label": "Roocode", + "count": 1 + }, + { + "label": "RooCode", + "count": 1 + }, + { + "label": "Rork", + "count": 1 + }, + { + "label": "Same", + "count": 1 + }, + { + "label": "stich", + "count": 1 + }, + { + "label": "Straight ChatGPT for infinite requests; Google AI Studio for large context", + "count": 1 + }, + { + "label": "supabase", + "count": 1 + }, + { + "label": "Supermaven", + "count": 1 + }, + { + "label": "Supermaven for VScode", + "count": 1 + }, + { + "label": "Trae.AI", + "count": 1 + }, + { + "label": "various LLMs", + "count": 1 + }, + { + "label": "Void", + "count": 1 + }, + { + "label": "vscodium", + "count": 1 + }, + { + "label": "Warp", + "count": 1 + }, + { + "label": "WeWeb", + "count": 1 + }, + { + "label": "WeWeb AI", + "count": 1 + }, + { + "label": "xBesh", + "count": 1 + }, + { + "label": "Xcode", + "count": 1 + }, + { + "label": "zed", + "count": 1 + }, + { + "label": "Zed; Claude Code", + "count": 1 + }, + { + "label": "Zed!", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|databases|multi|": { + "rows": [ + { + "label": "Supabase", + "count": 1589 + }, + { + "label": "PostgreSQL", + "count": 745 + }, + { + "label": "MySQL", + "count": 224 + }, + { + "label": "MongoDB", + "count": 213 + }, + { + "label": "Redis", + "count": 202 + }, + { + "label": "Firebase", + "count": 194 + }, + { + "label": "SQLite", + "count": 132 + }, + { + "label": "Other", + "count": 48 + }, + { + "label": "DynamoDB", + "count": 6 + }, + { + "label": "Convex", + "count": 5 + }, + { + "label": "MS SQL", + "count": 3 + }, + { + "label": "Neon", + "count": 3 + }, + { + "label": "Airtable", + "count": 2 + }, + { + "label": "Clickhouse", + "count": 2 + }, + { + "label": "Cloudflare KV", + "count": 2 + }, + { + "label": "Core data", + "count": 2 + }, + { + "label": "dynamodb", + "count": 2 + }, + { + "label": "MS SQL Server", + "count": 2 + }, + { + "label": "MSSQL", + "count": 2 + }, + { + "label": "Airtable integration", + "count": 1 + }, + { + "label": "amazon s3", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "Any other possible database etc", + "count": 1 + }, + { + "label": "AppWrite - MariaDB", + "count": 1 + }, + { + "label": "Arangodb", + "count": 1 + }, + { + "label": "AWS Aurora", + "count": 1 + }, + { + "label": "AWS DynamoDB", + "count": 1 + }, + { + "label": "AWS S3", + "count": 1 + }, + { + "label": "Azure Data Tables", + "count": 1 + }, + { + "label": "bigquery", + "count": 1 + }, + { + "label": "Bubble", + "count": 1 + }, + { + "label": "Cassandra", + "count": 1 + }, + { + "label": "ClickHouse", + "count": 1 + }, + { + "label": "Clickhouse and CockroachDB", + "count": 1 + }, + { + "label": "Cloudflare R2", + "count": 1 + }, + { + "label": "Complete 3rd party APIs", + "count": 1 + }, + { + "label": "Couchbase has been used and is still in use at one site as a reporting database because it is SQL-like. Postgres could be used for this", + "count": 1 + }, + { + "label": "CozoDB", + "count": 1 + }, + { + "label": "Currently do not using any. Will be sup abase", + "count": 1 + }, + { + "label": "DUCK DB", + "count": 1 + }, + { + "label": "Dynamodb", + "count": 1 + }, + { + "label": "Elastic", + "count": 1 + }, + { + "label": "Elasticsearch", + "count": 1 + }, + { + "label": "Flotiq", + "count": 1 + }, + { + "label": "flutter and android studio", + "count": 1 + }, + { + "label": "Foundation", + "count": 1 + }, + { + "label": "FoundationDB", + "count": 1 + }, + { + "label": "github", + "count": 1 + }, + { + "label": "Glesys", + "count": 1 + }, + { + "label": "Google sheets", + "count": 1 + }, + { + "label": "Google Sheets", + "count": 1 + }, + { + "label": "Hardware", + "count": 1 + }, + { + "label": "I do not know which one it's using an AI built it", + "count": 1 + }, + { + "label": "iCloud", + "count": 1 + }, + { + "label": "IPFS", + "count": 1 + }, + { + "label": "Local", + "count": 1 + }, + { + "label": "Looking for one", + "count": 1 + }, + { + "label": "Managed PostgresSQL", + "count": 1 + }, + { + "label": "Managed Redis", + "count": 1 + }, + { + "label": "Mathesar", + "count": 1 + }, + { + "label": "memcache", + "count": 1 + }, + { + "label": "Ms sql", + "count": 1 + }, + { + "label": "neo4j", + "count": 1 + }, + { + "label": "Neo4j", + "count": 1 + }, + { + "label": "nil", + "count": 1 + }, + { + "label": "No base", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "none yet", + "count": 1 + }, + { + "label": "not applicable", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "Not sure", + "count": 1 + }, + { + "label": "Not yet", + "count": 1 + }, + { + "label": "pg via Neon", + "count": 1 + }, + { + "label": "PocketBase", + "count": 1 + }, + { + "label": "Project-based", + "count": 1 + }, + { + "label": "Redpanda (Kafka)", + "count": 1 + }, + { + "label": "Retool", + "count": 1 + }, + { + "label": "Sanity", + "count": 1 + }, + { + "label": "Sheets", + "count": 1 + }, + { + "label": "SignalDB", + "count": 1 + }, + { + "label": "Specialized SaaS for storage", + "count": 1 + }, + { + "label": "Sql Server", + "count": 1 + }, + { + "label": "SQL Server", + "count": 1 + }, + { + "label": "Tinybird (Clickhouse)", + "count": 1 + }, + { + "label": "Upstash Vector", + "count": 1 + }, + { + "label": "Valkey", + "count": 1 + }, + { + "label": "VS Code", + "count": 1 + }, + { + "label": "Wasabi", + "count": 1 + }, + { + "label": "WatermelonDb", + "count": 1 + }, + { + "label": "we are database-agnostic", + "count": 1 + }, + { + "label": "weaviate", + "count": 1 + }, + { + "label": "working towards the MVP as of now.", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|sales_tools|multi|": { + "rows": [ + { + "label": "We don’t have a formal CRM or sales tool yet", + "count": 288 + }, + { + "label": "Google Sheets", + "count": 188 + }, + { + "label": "Notion / Airtable", + "count": 138 + }, + { + "label": "HubSpot", + "count": 94 + }, + { + "label": "Salesforce", + "count": 47 + }, + { + "label": "Attio", + "count": 16 + }, + { + "label": "Pipedrive", + "count": 16 + }, + { + "label": "Close.com", + "count": 14 + }, + { + "label": "attio", + "count": 4 + }, + { + "label": "Custom CRM", + "count": 4 + }, + { + "label": "Zoho CRM", + "count": 3 + }, + { + "label": "Apollo", + "count": 2 + }, + { + "label": "Brevo", + "count": 2 + }, + { + "label": "ClickUp", + "count": 2 + }, + { + "label": "Monday", + "count": 2 + }, + { + "label": "Odoo", + "count": 2 + }, + { + "label": "zoho", + "count": 2 + }, + { + "label": "Zoho", + "count": 2 + }, + { + "label": "Arlo", + "count": 1 + }, + { + "label": "as well as HubSpot", + "count": 1 + }, + { + "label": "Asana", + "count": 1 + }, + { + "label": "Bitrix", + "count": 1 + }, + { + "label": "Bitrix24", + "count": 1 + }, + { + "label": "Blue.cc/Huly", + "count": 1 + }, + { + "label": "but I have heard many nice things and have used salesforce in the past", + "count": 1 + }, + { + "label": "chatwoot", + "count": 1 + }, + { + "label": "Comparing multiple providers to find the best fit and debating custom development.", + "count": 1 + }, + { + "label": "Currently", + "count": 1 + }, + { + "label": "Custom build ones", + "count": 1 + }, + { + "label": "Custom built", + "count": 1 + }, + { + "label": "data-driven approach to managing our sales process. We primarily track registered and subscribed users directly through our Supabase database", + "count": 1 + }, + { + "label": "Dogfooding our own tools", + "count": 1 + }, + { + "label": "dolibarr", + "count": 1 + }, + { + "label": "Dynamics CRM", + "count": 1 + }, + { + "label": "ERPNEXT", + "count": 1 + }, + { + "label": "Esmo", + "count": 1 + }, + { + "label": "Fibery", + "count": 1 + }, + { + "label": "Fresh", + "count": 1 + }, + { + "label": "ghl", + "count": 1 + }, + { + "label": "Go High Level", + "count": 1 + }, + { + "label": "GoHighLevel", + "count": 1 + }, + { + "label": "HighLevel", + "count": 1 + }, + { + "label": "I’m not opposed to any platform as long as it’s the right tool to get the job done.", + "count": 1 + }, + { + "label": "In house built solution (supported by supabase)", + "count": 1 + }, + { + "label": "Linear", + "count": 1 + }, + { + "label": "Monday CRM", + "count": 1 + }, + { + "label": "Monday.com", + "count": 1 + }, + { + "label": "MS CRM", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "N8N", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "Not there in the sales yet but planning soon", + "count": 1 + }, + { + "label": "Notion and Brevo", + "count": 1 + }, + { + "label": "Null", + "count": 1 + }, + { + "label": "OnePage CRM", + "count": 1 + }, + { + "label": "Own system", + "count": 1 + }, + { + "label": "Pen and Paper + Email", + "count": 1 + }, + { + "label": "SimpleDisco", + "count": 1 + }, + { + "label": "Stripe", + "count": 1 + }, + { + "label": "Stripe and personal made dashboard", + "count": 1 + }, + { + "label": "Sybill.ai", + "count": 1 + }, + { + "label": "Tracking with DB", + "count": 1 + }, + { + "label": "Trello", + "count": 1 + }, + { + "label": "Using our own product stardex.com", + "count": 1 + }, + { + "label": "we adopt a lean", + "count": 1 + }, + { + "label": "we built our own", + "count": 1 + }, + { + "label": "we rely on third-party payment gateways such as PayPal and ECPay", + "count": 1 + }, + { + "label": "We use our own", + "count": 1 + }, + { + "label": "We’re not at that stage", + "count": 1 + }, + { + "label": "which give us transparent visibility into transaction status without the need for dedicated sales management software. This streamlined setup allows us to focus on product development and customer engagement while maintaining clear oversight of our sales", + "count": 1 + }, + { + "label": "which provides real-time insights into user acquisition and subscription status. For payment processing and revenue tracking", + "count": 1 + } + ], + "respondentCount": 673 + }, + "2025|founder_count|single|": { + "rows": [ + { + "label": "1", + "count": 1107 + }, + { + "label": "2", + "count": 698 + }, + { + "label": "3", + "count": 195 + }, + { + "label": "4+", + "count": 89 + } + ], + "respondentCount": 2089 + }, + "2025|founders_are_technical|boolean|": { + "rows": [ + { + "label": "FALSE", + "count": 373 + }, + { + "label": "TRUE", + "count": 1698 + } + ], + "respondentCount": 2071 + }, + "2025|previous_company|boolean|": { + "rows": [ + { + "label": "FALSE", + "count": 1369 + }, + { + "label": "TRUE", + "count": 705 + } + ], + "respondentCount": 2074 + }, + "2025|person_age|single|": { + "rows": [ + { + "label": "22–29", + "count": 768 + }, + { + "label": "30–39", + "count": 524 + }, + { + "label": "18–21", + "count": 447 + }, + { + "label": "40–49", + "count": 244 + }, + { + "label": "50–59", + "count": 101 + }, + { + "label": "60+", + "count": 26 + } + ], + "respondentCount": 2110 + }, + "2025|location|single|": { + "rows": [ + { + "label": "North America", + "count": 685 + }, + { + "label": "Europe", + "count": 525 + }, + { + "label": "Asia", + "count": 401 + }, + { + "label": "Remote", + "count": 162 + }, + { + "label": "South America", + "count": 129 + }, + { + "label": "Africa", + "count": 121 + }, + { + "label": "Oceania", + "count": 52 + }, + { + "label": "Middle East", + "count": 35 + } + ], + "respondentCount": 2110 + }, + "2025|location_north_america|single|[[\"location\",\"North America\"]]": { + "rows": [ + { + "label": "San Francisco Bay Area", + "count": 129 + }, + { + "label": "New York City", + "count": 58 + }, + { + "label": "Toronto", + "count": 28 + }, + { + "label": "Atlanta", + "count": 22 + }, + { + "label": "Seattle", + "count": 19 + }, + { + "label": "Austin", + "count": 17 + }, + { + "label": "Boston", + "count": 17 + }, + { + "label": "Chicago", + "count": 15 + }, + { + "label": "Los Angeles", + "count": 14 + }, + { + "label": "Miami", + "count": 12 + }, + { + "label": "Montreal", + "count": 11 + }, + { + "label": "Dallas", + "count": 10 + }, + { + "label": "Salt Lake City", + "count": 10 + }, + { + "label": "Canada", + "count": 8 + }, + { + "label": "Denver", + "count": 8 + }, + { + "label": "Kansas City", + "count": 7 + }, + { + "label": "Remote", + "count": 7 + }, + { + "label": "San Diego", + "count": 7 + }, + { + "label": "Vancouver", + "count": 7 + }, + { + "label": "Detroit", + "count": 6 + }, + { + "label": "Delaware", + "count": 5 + }, + { + "label": "Florida", + "count": 5 + }, + { + "label": "LA", + "count": 5 + }, + { + "label": "Mexico City", + "count": 5 + }, + { + "label": "Orlando", + "count": 5 + }, + { + "label": "Phoenix", + "count": 5 + }, + { + "label": "Calgary", + "count": 4 + }, + { + "label": "Charlotte", + "count": 4 + }, + { + "label": "Houston", + "count": 4 + }, + { + "label": "Ottawa", + "count": 4 + }, + { + "label": "Sacramento", + "count": 4 + }, + { + "label": "Utah", + "count": 4 + }, + { + "label": "DC", + "count": 3 + }, + { + "label": "Maryland", + "count": 3 + }, + { + "label": "Mexico", + "count": 3 + }, + { + "label": "Michigan", + "count": 3 + }, + { + "label": "Ohio", + "count": 3 + }, + { + "label": "Pittsburgh", + "count": 3 + }, + { + "label": "Provo, UT", + "count": 3 + }, + { + "label": "St. Louis", + "count": 3 + }, + { + "label": "Tampa", + "count": 3 + }, + { + "label": "Texas", + "count": 3 + }, + { + "label": "Arizona", + "count": 2 + }, + { + "label": "Boise", + "count": 2 + }, + { + "label": "Cleveland", + "count": 2 + }, + { + "label": "El Paso", + "count": 2 + }, + { + "label": "Georgia", + "count": 2 + }, + { + "label": "Minneapolis", + "count": 2 + }, + { + "label": "Montréal", + "count": 2 + }, + { + "label": "New Hampshire", + "count": 2 + }, + { + "label": "None", + "count": 2 + }, + { + "label": "North Carolina", + "count": 2 + }, + { + "label": "Pennsylvania", + "count": 2 + }, + { + "label": "Provo", + "count": 2 + }, + { + "label": "Raleigh", + "count": 2 + }, + { + "label": "Scottsdale", + "count": 2 + }, + { + "label": "St Louis", + "count": 2 + }, + { + "label": "Vancouver, BC", + "count": 2 + }, + { + "label": "Washington DC", + "count": 2 + }, + { + "label": "Akron", + "count": 1 + }, + { + "label": "Alabama", + "count": 1 + }, + { + "label": "Albany, New York", + "count": 1 + }, + { + "label": "Alexandria, VA", + "count": 1 + }, + { + "label": "Ann Arbor", + "count": 1 + }, + { + "label": "Arkansas", + "count": 1 + }, + { + "label": "Athens, GA, US", + "count": 1 + }, + { + "label": "Augusta", + "count": 1 + }, + { + "label": "Augusta GA", + "count": 1 + }, + { + "label": "Baltimore", + "count": 1 + }, + { + "label": "Baton Rouge", + "count": 1 + }, + { + "label": "Bermuda", + "count": 1 + }, + { + "label": "Bethlehem, PA", + "count": 1 + }, + { + "label": "Birmingham", + "count": 1 + }, + { + "label": "Birmingham, Alabama", + "count": 1 + }, + { + "label": "Bloomington", + "count": 1 + }, + { + "label": "Boulder, CO", + "count": 1 + }, + { + "label": "Boulder,CO", + "count": 1 + }, + { + "label": "Brampton", + "count": 1 + }, + { + "label": "Branson", + "count": 1 + }, + { + "label": "British Columbia", + "count": 1 + }, + { + "label": "Buffalo, NY", + "count": 1 + }, + { + "label": "Calgary. Alberta", + "count": 1 + }, + { + "label": "california", + "count": 1 + }, + { + "label": "canada", + "count": 1 + }, + { + "label": "Chandler, AZ", + "count": 1 + }, + { + "label": "Charlotte NC", + "count": 1 + }, + { + "label": "charlotte, nc", + "count": 1 + }, + { + "label": "Charlottesville", + "count": 1 + }, + { + "label": "Charlottesville, VA", + "count": 1 + }, + { + "label": "Cincinnati", + "count": 1 + }, + { + "label": "College park MD", + "count": 1 + }, + { + "label": "Collegeville, Pennsylvania", + "count": 1 + }, + { + "label": "Colorado", + "count": 1 + }, + { + "label": "Columbus/Chicago", + "count": 1 + }, + { + "label": "Comox, BC", + "count": 1 + }, + { + "label": "Dayton", + "count": 1 + }, + { + "label": "Des Moines", + "count": 1 + }, + { + "label": "Des Moines, IA", + "count": 1 + }, + { + "label": "Dover", + "count": 1 + }, + { + "label": "Dover, Delaware", + "count": 1 + }, + { + "label": "Dover, NH", + "count": 1 + }, + { + "label": "Eastvale", + "count": 1 + }, + { + "label": "Edmonton", + "count": 1 + }, + { + "label": "Edmonton Alberta", + "count": 1 + }, + { + "label": "Edmonton, 🇨🇦", + "count": 1 + }, + { + "label": "El salvador", + "count": 1 + }, + { + "label": "Eureka", + "count": 1 + }, + { + "label": "far far away", + "count": 1 + }, + { + "label": "Florida remote", + "count": 1 + }, + { + "label": "Fresno", + "count": 1 + }, + { + "label": "Grantsburg WI", + "count": 1 + }, + { + "label": "Greater Boston", + "count": 1 + }, + { + "label": "Greenville SC", + "count": 1 + }, + { + "label": "Greenville, Sc", + "count": 1 + }, + { + "label": "Haiti", + "count": 1 + }, + { + "label": "Hamilton", + "count": 1 + }, + { + "label": "Hinton, AB", + "count": 1 + }, + { + "label": "Honolulu", + "count": 1 + }, + { + "label": "Hoover Alabama", + "count": 1 + }, + { + "label": "Hummelstown PA", + "count": 1 + }, + { + "label": "Huntsville", + "count": 1 + }, + { + "label": "indiana", + "count": 1 + }, + { + "label": "Indianapolis", + "count": 1 + }, + { + "label": "Indianapolis IN", + "count": 1 + }, + { + "label": "Irvine", + "count": 1 + }, + { + "label": "Kelowna, BC", + "count": 1 + }, + { + "label": "Kentucky", + "count": 1 + }, + { + "label": "Killeen", + "count": 1 + }, + { + "label": "Lake Mary, FL", + "count": 1 + }, + { + "label": "LLC in WY, Local NC", + "count": 1 + }, + { + "label": "London", + "count": 1 + }, + { + "label": "Los angeles", + "count": 1 + }, + { + "label": "Los Angeles Metropolitan Area", + "count": 1 + }, + { + "label": "Madison", + "count": 1 + }, + { + "label": "Madison, WI", + "count": 1 + }, + { + "label": "Manila", + "count": 1 + }, + { + "label": "Mapleton Utah", + "count": 1 + }, + { + "label": "Melbourne, FL", + "count": 1 + }, + { + "label": "México City", + "count": 1 + }, + { + "label": "Minnesota", + "count": 1 + }, + { + "label": "Moncton", + "count": 1 + }, + { + "label": "Monterrey, Mexico", + "count": 1 + }, + { + "label": "Nashville Tennessee", + "count": 1 + }, + { + "label": "Nashville, TN", + "count": 1 + }, + { + "label": "Nebraska", + "count": 1 + }, + { + "label": "New Jersey", + "count": 1 + }, + { + "label": "New Mexico", + "count": 1 + }, + { + "label": "Newark", + "count": 1 + }, + { + "label": "north carolina", + "count": 1 + }, + { + "label": "North carolina", + "count": 1 + }, + { + "label": "North Dakota", + "count": 1 + }, + { + "label": "Northern Utah", + "count": 1 + }, + { + "label": "OC", + "count": 1 + }, + { + "label": "Ojai CA", + "count": 1 + }, + { + "label": "oklahoma", + "count": 1 + }, + { + "label": "OKlahoma", + "count": 1 + }, + { + "label": "Orange country", + "count": 1 + }, + { + "label": "ottawa", + "count": 1 + }, + { + "label": "Ottawa, Canada", + "count": 1 + }, + { + "label": "Oxford, GA", + "count": 1 + }, + { + "label": "PA", + "count": 1 + }, + { + "label": "Palm Bay Florida 32907", + "count": 1 + }, + { + "label": "Panamá", + "count": 1 + }, + { + "label": "Panama City", + "count": 1 + }, + { + "label": "Park City Utah", + "count": 1 + }, + { + "label": "Philadelphia", + "count": 1 + }, + { + "label": "Portland", + "count": 1 + }, + { + "label": "Portland OR", + "count": 1 + }, + { + "label": "Princeton,tx", + "count": 1 + }, + { + "label": "Provo, Utah", + "count": 1 + }, + { + "label": "Puebla", + "count": 1 + }, + { + "label": "Raleigh, NC", + "count": 1 + }, + { + "label": "RDU (In North Carolina)", + "count": 1 + }, + { + "label": "Remote, USA", + "count": 1 + }, + { + "label": "Reno", + "count": 1 + }, + { + "label": "Richmond", + "count": 1 + }, + { + "label": "Richmond va", + "count": 1 + }, + { + "label": "Rochester NY", + "count": 1 + }, + { + "label": "Roseville, Ca", + "count": 1 + }, + { + "label": "Saint Louis", + "count": 1 + }, + { + "label": "Salt Lake", + "count": 1 + }, + { + "label": "Salt Lake acity", + "count": 1 + }, + { + "label": "Salt lake city", + "count": 1 + }, + { + "label": "Salt Lake City Area", + "count": 1 + }, + { + "label": "San DIego", + "count": 1 + }, + { + "label": "Saskatoon", + "count": 1 + }, + { + "label": "Schenectady, NY", + "count": 1 + }, + { + "label": "Shelton, WA", + "count": 1 + }, + { + "label": "Silver Spring", + "count": 1 + }, + { + "label": "South Florida", + "count": 1 + }, + { + "label": "STL", + "count": 1 + }, + { + "label": "Suffolk Virginia", + "count": 1 + }, + { + "label": "Temecula", + "count": 1 + }, + { + "label": "TEXAS", + "count": 1 + }, + { + "label": "Tijuana, MX", + "count": 1 + }, + { + "label": "Travel full time, SF was last permanent address", + "count": 1 + }, + { + "label": "Traverse City", + "count": 1 + }, + { + "label": "Traverse City, MI", + "count": 1 + }, + { + "label": "Tucson", + "count": 1 + }, + { + "label": "Tuscaloosa AL", + "count": 1 + }, + { + "label": "Tuscaoosa", + "count": 1 + }, + { + "label": "Upstate New York", + "count": 1 + }, + { + "label": "Victoria", + "count": 1 + }, + { + "label": "Victoria BC", + "count": 1 + }, + { + "label": "Washington D.C.", + "count": 1 + }, + { + "label": "Washington, DC", + "count": 1 + }, + { + "label": "Waterloo", + "count": 1 + }, + { + "label": "Waterloo (Canada)", + "count": 1 + }, + { + "label": "We're Remote Right now, So Early", + "count": 1 + }, + { + "label": "West Lafayette", + "count": 1 + }, + { + "label": "Wichita", + "count": 1 + }, + { + "label": "Wilmington", + "count": 1 + }, + { + "label": "Wisconisn", + "count": 1 + }, + { + "label": "Wisconsin", + "count": 1 + } + ], + "respondentCount": 685 + }, + "2025|subscriptions|multi|": { + "rows": [ + { + "label": "OpenAI / ChatGPT", + "count": 1203 + }, + { + "label": "Cursor", + "count": 771 + }, + { + "label": "Claude", + "count": 586 + }, + { + "label": "Perplexity", + "count": 207 + }, + { + "label": "None", + "count": 162 + }, + { + "label": "Gemini", + "count": 60 + }, + { + "label": "none", + "count": 52 + }, + { + "label": "Windsurf", + "count": 16 + }, + { + "label": "Copilot", + "count": 15 + }, + { + "label": "Grok", + "count": 13 + }, + { + "label": "Lovable", + "count": 10 + }, + { + "label": "N/A", + "count": 8 + }, + { + "label": "None yet", + "count": 6 + }, + { + "label": "GitHub Copilot", + "count": 5 + }, + { + "label": "OpenRouter", + "count": 5 + }, + { + "label": "copilot", + "count": 4 + }, + { + "label": "Deepseek", + "count": 4 + }, + { + "label": "gemini", + "count": 4 + }, + { + "label": "Supabase", + "count": 4 + }, + { + "label": "Bolt", + "count": 3 + }, + { + "label": "Bolt.new", + "count": 3 + }, + { + "label": "DeepSeek", + "count": 3 + }, + { + "label": "Github Copilot", + "count": 3 + }, + { + "label": "GitHub copilot", + "count": 3 + }, + { + "label": "Mistral", + "count": 3 + }, + { + "label": "Nothing", + "count": 3 + }, + { + "label": "T3Chat", + "count": 3 + }, + { + "label": "Canva", + "count": 2 + }, + { + "label": "Coderabbit", + "count": 2 + }, + { + "label": "Flutterflow", + "count": 2 + }, + { + "label": "github copilot", + "count": 2 + }, + { + "label": "Github copilot", + "count": 2 + }, + { + "label": "Google", + "count": 2 + }, + { + "label": "Jetbrains AI", + "count": 2 + }, + { + "label": "lovable", + "count": 2 + }, + { + "label": "Loveable", + "count": 2 + }, + { + "label": "NA", + "count": 2 + }, + { + "label": "None.", + "count": 2 + }, + { + "label": "t3 chat", + "count": 2 + }, + { + "label": "T3.chat", + "count": 2 + }, + { + "label": "v0", + "count": 2 + }, + { + "label": "windsurf", + "count": 2 + }, + { + "label": "-", + "count": 1 + }, + { + "label": "abacus", + "count": 1 + }, + { + "label": "abacus ai", + "count": 1 + }, + { + "label": "All of them!", + "count": 1 + }, + { + "label": "an AI provider (will select later currently app in dev)", + "count": 1 + }, + { + "label": "and documentation help. Perplexity — used occasionally for research and quick information retrieval. We are also evaluating Claude and Cursor for potential integration based on specific team needs.", + "count": 1 + }, + { + "label": "and Supabase", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "Anthropic credits", + "count": 1 + }, + { + "label": "Anthropic via Zed agents", + "count": 1 + }, + { + "label": "augment", + "count": 1 + }, + { + "label": "Augment", + "count": 1 + }, + { + "label": "AWS", + "count": 1 + }, + { + "label": "brainstorming", + "count": 1 + }, + { + "label": "but eventually I will need more than 1.", + "count": 1 + }, + { + "label": "but planning to - Supabase", + "count": 1 + }, + { + "label": "Capcut", + "count": 1 + }, + { + "label": "Claude Ai", + "count": 1 + }, + { + "label": "cohere", + "count": 1 + }, + { + "label": "Company doesn't pay for subscruiptions", + "count": 1 + }, + { + "label": "Copilot pro", + "count": 1 + }, + { + "label": "critical codes must be from our minds.", + "count": 1 + }, + { + "label": "currently I have free access through a few avenues", + "count": 1 + }, + { + "label": "Decodo Residential IPs", + "count": 1 + }, + { + "label": "Deepgram", + "count": 1 + }, + { + "label": "devin", + "count": 1 + }, + { + "label": "Domain and ai deepseek", + "count": 1 + }, + { + "label": "Don't have one", + "count": 1 + }, + { + "label": "ElevenLabs", + "count": 1 + }, + { + "label": "factory.ai", + "count": 1 + }, + { + "label": "famous.ai", + "count": 1 + }, + { + "label": "Figma", + "count": 1 + }, + { + "label": "Free copilot", + "count": 1 + }, + { + "label": "gema", + "count": 1 + }, + { + "label": "Gemini 2.5 pro", + "count": 1 + }, + { + "label": "Gemini 2.5 Pro", + "count": 1 + }, + { + "label": "Gemini Advanced", + "count": 1 + }, + { + "label": "Gemini cloud and api", + "count": 1 + }, + { + "label": "Gemini pro", + "count": 1 + }, + { + "label": "Gemini Pro", + "count": 1 + }, + { + "label": "Gemini PRO", + "count": 1 + }, + { + "label": "Gemini/Google Studio", + "count": 1 + }, + { + "label": "Genspark", + "count": 1 + }, + { + "label": "GH Copilot", + "count": 1 + }, + { + "label": "Github", + "count": 1 + }, + { + "label": "Github Co-pilot and Gemini", + "count": 1 + }, + { + "label": "github code agent", + "count": 1 + }, + { + "label": "Github CoPilot", + "count": 1 + }, + { + "label": "Github Copilot student edition", + "count": 1 + }, + { + "label": "Github-copilot", + "count": 1 + }, + { + "label": "Google AI", + "count": 1 + }, + { + "label": "Google AI Pro", + "count": 1 + }, + { + "label": "Google Colab", + "count": 1 + }, + { + "label": "Google Jules", + "count": 1 + }, + { + "label": "Google workspace & Gemini", + "count": 1 + }, + { + "label": "Groq", + "count": 1 + }, + { + "label": "Haven’t decided yet", + "count": 1 + }, + { + "label": "Hostinger Horizons", + "count": 1 + }, + { + "label": "Jetbrains Ultimate", + "count": 1 + }, + { + "label": "Julius", + "count": 1 + }, + { + "label": "just Copilot", + "count": 1 + }, + { + "label": "just free tier not vibe coding hard just ui ideas", + "count": 1 + }, + { + "label": "Justdone", + "count": 1 + }, + { + "label": "Kagi", + "count": 1 + }, + { + "label": "Kilo", + "count": 1 + }, + { + "label": "Local only llms", + "count": 1 + }, + { + "label": "lovable.dev", + "count": 1 + }, + { + "label": "manus", + "count": 1 + }, + { + "label": "Manus", + "count": 1 + }, + { + "label": "N/a", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "Nil", + "count": 1 + }, + { + "label": "nnone", + "count": 1 + }, + { + "label": "NO", + "count": 1 + }, + { + "label": "No AI spend currently", + "count": 1 + }, + { + "label": "No one", + "count": 1 + }, + { + "label": "No subscription", + "count": 1 + }, + { + "label": "No Subscription", + "count": 1 + }, + { + "label": "NON", + "count": 1 + }, + { + "label": "NOne", + "count": 1 + }, + { + "label": "NONE", + "count": 1 + }, + { + "label": "None - we use the free versions still", + "count": 1 + }, + { + "label": "None (yet)", + "count": 1 + }, + { + "label": "None / pay privately", + "count": 1 + }, + { + "label": "None at the moment", + "count": 1 + }, + { + "label": "none atm", + "count": 1 + }, + { + "label": "None for now! budget issue;>", + "count": 1 + }, + { + "label": "None for now. But we intend to pay for Supabase", + "count": 1 + }, + { + "label": "none yet", + "count": 1 + }, + { + "label": "None!", + "count": 1 + }, + { + "label": "None. I use ChatGPT and Grok free version", + "count": 1 + }, + { + "label": "not paying", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "Not sure", + "count": 1 + }, + { + "label": "not yet", + "count": 1 + }, + { + "label": "Not yet subscribed", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "Notion", + "count": 1 + }, + { + "label": "obsidian", + "count": 1 + }, + { + "label": "open router", + "count": 1 + }, + { + "label": "Open Router", + "count": 1 + }, + { + "label": "Our startup currently subscribes to the following AI tools for team productivity and development support: OpenAI / ChatGPT — for coding assistance", + "count": 1 + }, + { + "label": "Own gpt", + "count": 1 + }, + { + "label": "Plan to pay cursor lovable and superbase", + "count": 1 + }, + { + "label": "Porkbun", + "count": 1 + }, + { + "label": "rather not say", + "count": 1 + }, + { + "label": "raycast", + "count": 1 + }, + { + "label": "Replit", + "count": 1 + }, + { + "label": "Resend", + "count": 1 + }, + { + "label": "Rien", + "count": 1 + }, + { + "label": "Self-paid", + "count": 1 + }, + { + "label": "Supabase Pro", + "count": 1 + }, + { + "label": "Supqbase", + "count": 1 + }, + { + "label": "T3 chat", + "count": 1 + }, + { + "label": "T3 Chat", + "count": 1 + }, + { + "label": "T3 Chat (will be stopping ChatGPT soon in favor of this)", + "count": 1 + }, + { + "label": "t3.chat", + "count": 1 + }, + { + "label": "T3.Chat", + "count": 1 + }, + { + "label": "together.ai", + "count": 1 + }, + { + "label": "trae", + "count": 1 + }, + { + "label": "Use ChatGPT but as a free", + "count": 1 + }, + { + "label": "use free tier", + "count": 1 + }, + { + "label": "using free tier of chatgpt", + "count": 1 + }, + { + "label": "UX pilot", + "count": 1 + }, + { + "label": "V0", + "count": 1 + }, + { + "label": "Vercel", + "count": 1 + }, + { + "label": "VSCode Copilot", + "count": 1 + }, + { + "label": "Warp", + "count": 1 + }, + { + "label": "Was paying Grok but what a let down!", + "count": 1 + }, + { + "label": "We are making the fullest of free resources from the internet", + "count": 1 + }, + { + "label": "We are reviewing Cursor but we haven't committed to a team subscription", + "count": 1 + }, + { + "label": "we dont", + "count": 1 + }, + { + "label": "We have OpenAI", + "count": 1 + }, + { + "label": "web domain", + "count": 1 + }, + { + "label": "Webhosting", + "count": 1 + }, + { + "label": "WIndsurf", + "count": 1 + }, + { + "label": "WINDSURF", + "count": 1 + }, + { + "label": "WIndsurf - will probably be Supabase sooner I would guess", + "count": 1 + }, + { + "label": "Wordpress", + "count": 1 + }, + { + "label": "X", + "count": 1 + }, + { + "label": "xAI", + "count": 1 + }, + { + "label": "You", + "count": 1 + }, + { + "label": "You.ai", + "count": 1 + }, + { + "label": "Zed", + "count": 1 + }, + { + "label": "Zed IDE", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|ai_models_used|multi|": { + "rows": [ + { + "label": "OpenAI", + "count": 1462 + }, + { + "label": "Anthropic/Claude", + "count": 798 + }, + { + "label": "Hugging Face", + "count": 363 + }, + { + "label": "Custom models", + "count": 341 + }, + { + "label": "Gemini", + "count": 170 + }, + { + "label": "Mistral", + "count": 138 + }, + { + "label": "Bedrock", + "count": 77 + }, + { + "label": "SageMaker", + "count": 49 + }, + { + "label": "Cohere", + "count": 42 + }, + { + "label": "None", + "count": 32 + }, + { + "label": "gemini", + "count": 14 + }, + { + "label": "Google", + "count": 12 + }, + { + "label": "Google Gemini", + "count": 11 + }, + { + "label": "DeepSeek", + "count": 10 + }, + { + "label": "none", + "count": 10 + }, + { + "label": "Grok", + "count": 9 + }, + { + "label": "Deepseek", + "count": 8 + }, + { + "label": "Llama", + "count": 7 + }, + { + "label": "N/A", + "count": 7 + }, + { + "label": "llama", + "count": 5 + }, + { + "label": "Not sure yet", + "count": 5 + }, + { + "label": "Copilot", + "count": 4 + }, + { + "label": "Not sure", + "count": 4 + }, + { + "label": "Ollama", + "count": 4 + }, + { + "label": "Gemma", + "count": 3 + }, + { + "label": "Groq", + "count": 3 + }, + { + "label": "n/a", + "count": 3 + }, + { + "label": "Claude", + "count": 2 + }, + { + "label": "ElevenLabs", + "count": 2 + }, + { + "label": "na", + "count": 2 + }, + { + "label": "Not Sure", + "count": 2 + }, + { + "label": "Stable Diffusion", + "count": 2 + }, + { + "label": "YOLO", + "count": 2 + }, + { + "label": "-", + "count": 1 + }, + { + "label": ".", + "count": 1 + }, + { + "label": "**EfficientDet**", + "count": 1 + }, + { + "label": "/", + "count": 1 + }, + { + "label": "| Purpose | Model Used / Planned | | ----------------------------- | ------------------------------------------------------------------------------------------- | | **Object Detection** | ✅ **YOLOv5** (via PyTorch backend) | | **Model Hosting & Inference** | ✅ Python Flask API or Google Colab | | **Future Consideration** | 🔄 **YOLOv8**", + "count": 1 + }, + { + "label": "A suite of models via the web interface like Grok", + "count": 1 + }, + { + "label": "All possible ways etc", + "count": 1 + }, + { + "label": "All the upgraded ai", + "count": 1 + }, + { + "label": "and Claude code is best for programming.", + "count": 1 + }, + { + "label": "and code generation. We plan to continue integrating advanced AI models as we scale to improve operational efficiency and customer experience.", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "any", + "count": 1 + }, + { + "label": "black forrest labs", + "count": 1 + }, + { + "label": "Bolt", + "count": 1 + }, + { + "label": "Bolt.new", + "count": 1 + }, + { + "label": "Canva", + "count": 1 + }, + { + "label": "Cerebras Cloud", + "count": 1 + }, + { + "label": "ChatGPT", + "count": 1 + }, + { + "label": "Claude.ai", + "count": 1 + }, + { + "label": "customer support automation", + "count": 1 + }, + { + "label": "Deepgram", + "count": 1 + }, + { + "label": "deepseek", + "count": 1 + }, + { + "label": "DEEPSEEK", + "count": 1 + }, + { + "label": "Deepseek and gemini", + "count": 1 + }, + { + "label": "DeepSeek R1 hosted on-prem", + "count": 1 + }, + { + "label": "Didn't choose yet", + "count": 1 + }, + { + "label": "don't know yet", + "count": 1 + }, + { + "label": "Don't know yet", + "count": 1 + }, + { + "label": "except coding", + "count": 1 + }, + { + "label": "exclusively using Opus 4", + "count": 1 + }, + { + "label": "Famous A.I.", + "count": 1 + }, + { + "label": "flux", + "count": 1 + }, + { + "label": "GCP Vertex", + "count": 1 + }, + { + "label": "Gemini 2.5", + "count": 1 + }, + { + "label": "Gemini 2.5 pro", + "count": 1 + }, + { + "label": "Gemini 2.5 Pro", + "count": 1 + }, + { + "label": "Gemini and Gemma models", + "count": 1 + }, + { + "label": "Gemini and Grok", + "count": 1 + }, + { + "label": "gemini flash", + "count": 1 + }, + { + "label": "Gemini Flash", + "count": 1 + }, + { + "label": "Gemini models", + "count": 1 + }, + { + "label": "Gemini Pro", + "count": 1 + }, + { + "label": "Gemini through GCP", + "count": 1 + }, + { + "label": "Gemini with search grounding", + "count": 1 + }, + { + "label": "Gemini?", + "count": 1 + }, + { + "label": "Gemini/Google", + "count": 1 + }, + { + "label": "Geminj", + "count": 1 + }, + { + "label": "Gemma or Gemini", + "count": 1 + }, + { + "label": "Gemma. All open source models", + "count": 1 + }, + { + "label": "GitHub Copilot", + "count": 1 + }, + { + "label": "Give me suggestions if need any", + "count": 1 + }, + { + "label": "Google / Gemini", + "count": 1 + }, + { + "label": "Google AI studio", + "count": 1 + }, + { + "label": "Google AI Studio", + "count": 1 + }, + { + "label": "Google AI tools", + "count": 1 + }, + { + "label": "Google Cloud Vision - For detecting objects in user-uploaded images (e.g., cropping baby clothing photos).", + "count": 1 + }, + { + "label": "Google Gemini 2.5", + "count": 1 + }, + { + "label": "Google Generative AI", + "count": 1 + }, + { + "label": "Google MLKit for non LLM AI", + "count": 1 + }, + { + "label": "Google Vertex", + "count": 1 + }, + { + "label": "Google(Gemini) in Our product", + "count": 1 + }, + { + "label": "Google/Gemini", + "count": 1 + }, + { + "label": "GPT 3.5", + "count": 1 + }, + { + "label": "grok", + "count": 1 + }, + { + "label": "Grok / xAI", + "count": 1 + }, + { + "label": "Grok mini", + "count": 1 + }, + { + "label": "groq", + "count": 1 + }, + { + "label": "Gwen", + "count": 1 + }, + { + "label": "Haven’t decided yet", + "count": 1 + }, + { + "label": "hive", + "count": 1 + }, + { + "label": "horizons-hostinger", + "count": 1 + }, + { + "label": "I do not know yet", + "count": 1 + }, + { + "label": "I dont use it", + "count": 1 + }, + { + "label": "I haven't investigated it yet.", + "count": 1 + }, + { + "label": "if applicable in future deployments. Large Language Models (such as OpenAI’s GPT) to assist in documentation", + "count": 1 + }, + { + "label": "Imagen 4", + "count": 1 + }, + { + "label": "in-house", + "count": 1 + }, + { + "label": "Inception Labs Mercury", + "count": 1 + }, + { + "label": "it’s mostly paid one price per month and you have access to many different AI tools More cost-effective and very convenient", + "count": 1 + }, + { + "label": "Lamma", + "count": 1 + }, + { + "label": "LaudAi", + "count": 1 + }, + { + "label": "LLAMA", + "count": 1 + }, + { + "label": "Llama (via Ollama and OpenRouter)", + "count": 1 + }, + { + "label": "LLama and Gemini", + "count": 1 + }, + { + "label": "Llama open source", + "count": 1 + }, + { + "label": "llama via grok", + "count": 1 + }, + { + "label": "llama-3.3-70b-versatile", + "count": 1 + }, + { + "label": "lots coming!", + "count": 1 + }, + { + "label": "Lovable", + "count": 1 + }, + { + "label": "Mainly Sonnet 4 for all tasks", + "count": 1 + }, + { + "label": "Manus", + "count": 1 + }, + { + "label": "maybe other local models", + "count": 1 + }, + { + "label": "meta", + "count": 1 + }, + { + "label": "Mini ML", + "count": 1 + }, + { + "label": "Model Independent", + "count": 1 + }, + { + "label": "N/a", + "count": 1 + }, + { + "label": "N8n", + "count": 1 + }, + { + "label": "need to consult to AI Engineer", + "count": 1 + }, + { + "label": "Nil", + "count": 1 + }, + { + "label": "No plans", + "count": 1 + }, + { + "label": "Nome", + "count": 1 + }, + { + "label": "None for now", + "count": 1 + }, + { + "label": "none yet", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "None!!!", + "count": 1 + }, + { + "label": "Not decided", + "count": 1 + }, + { + "label": "Not decided yet", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "not sure yet", + "count": 1 + }, + { + "label": "Nothing", + "count": 1 + }, + { + "label": "Nothing yet", + "count": 1 + }, + { + "label": "Ollama models", + "count": 1 + }, + { + "label": "On-device ai models", + "count": 1 + }, + { + "label": "open.ai", + "count": 1 + }, + { + "label": "OpenRouter", + "count": 1 + }, + { + "label": "openrouter: ~30 models", + "count": 1 + }, + { + "label": "or lightweight **MobileNet** models for mobile performance |", + "count": 1 + }, + { + "label": "Our Own", + "count": 1 + }, + { + "label": "Our own models", + "count": 1 + }, + { + "label": "Our startup is currently exploring and integrating the following AI models to power key features: Time Series Forecasting Models (e.g., LSTM, Prophet) for predicting energy demand and charging station usage. Anomaly Detection Models (e.g., Autoencoders, Isolation Forest) to identify faults or unusual behavior in charging equipment and flight systems. Optimization Models (e.g., Reinforcement Learning) for smart charging scheduling and route planning to maximize efficiency. Computer Vision Models for monitoring physical infrastructure via cameras", + "count": 1 + }, + { + "label": "perplexity", + "count": 1 + }, + { + "label": "Perplexity", + "count": 1 + }, + { + "label": "Perplexity Sonar", + "count": 1 + }, + { + "label": "Qwen", + "count": 1 + }, + { + "label": "Relace", + "count": 1 + }, + { + "label": "s", + "count": 1 + }, + { + "label": "Self built", + "count": 1 + }, + { + "label": "Sonar", + "count": 1 + }, + { + "label": "Sonar- Perplexity", + "count": 1 + }, + { + "label": "Stability AI", + "count": 1 + }, + { + "label": "still looking", + "count": 1 + }, + { + "label": "Supabase pgvector", + "count": 1 + }, + { + "label": "Swe", + "count": 1 + }, + { + "label": "TBD", + "count": 1 + }, + { + "label": "Tensorflow", + "count": 1 + }, + { + "label": "this is the bit I'm getting onto now.", + "count": 1 + }, + { + "label": "Unknown yet", + "count": 1 + }, + { + "label": "Using the interface of YOU.AI Allows us to pick and choose whatever AI tools we need to that are best suited to solve that individual problem. Also", + "count": 1 + }, + { + "label": "v0", + "count": 1 + }, + { + "label": "Vapi", + "count": 1 + }, + { + "label": "we are not using AI in our product", + "count": 1 + }, + { + "label": "We don't use AI", + "count": 1 + }, + { + "label": "We have 50+ as it's through OpenRouter", + "count": 1 + }, + { + "label": "We Have trained a AI MOL", + "count": 1 + }, + { + "label": "Whatever is fast and cheap when we get to it", + "count": 1 + }, + { + "label": "x", + "count": 1 + }, + { + "label": "xAI", + "count": 1 + }, + { + "label": "Xenova/gte-small", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"76-100%\"]]": { + "rows": [ + { + "label": "No", + "count": 1215 + }, + { + "label": "Yes", + "count": 770 + }, + { + "label": "No plans to monetize", + "count": 125 + } + ], + "respondentCount": 2110 + }, + "2025|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"0%\"]]": { + "rows": [ + { + "label": "No", + "count": 1215 + }, + { + "label": "Yes", + "count": 770 + }, + { + "label": "No plans to monetize", + "count": 125 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"76-100%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"0%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"1-10%\"]]": { + "rows": [ + { + "label": "No", + "count": 1215 + }, + { + "label": "Yes", + "count": 770 + }, + { + "label": "No plans to monetize", + "count": 125 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"1-10%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"11-25%\"]]": { + "rows": [ + { + "label": "No", + "count": 1215 + }, + { + "label": "Yes", + "count": 770 + }, + { + "label": "No plans to monetize", + "count": 125 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"11-25%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"26-50%\"]]": { + "rows": [ + { + "label": "No", + "count": 1215 + }, + { + "label": "Yes", + "count": 770 + }, + { + "label": "No plans to monetize", + "count": 125 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"26-50%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"51-75%\"]]": { + "rows": [ + { + "label": "No", + "count": 1215 + }, + { + "label": "Yes", + "count": 770 + }, + { + "label": "No plans to monetize", + "count": 125 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"51-75%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|cloud_providers|multi|": { + "rows": [ + { + "label": "Supabase", + "count": 1313 + }, + { + "label": "Vercel", + "count": 778 + }, + { + "label": "AWS", + "count": 561 + }, + { + "label": "Cloudflare", + "count": 454 + }, + { + "label": "GCP", + "count": 266 + }, + { + "label": "Azure", + "count": 186 + }, + { + "label": "Render", + "count": 131 + }, + { + "label": "Railway", + "count": 106 + }, + { + "label": "Fly.io", + "count": 58 + }, + { + "label": "Netlify", + "count": 23 + }, + { + "label": "Hetzner", + "count": 18 + }, + { + "label": "Digital Ocean", + "count": 14 + }, + { + "label": "Hostinger", + "count": 10 + }, + { + "label": "DigitalOcean", + "count": 8 + }, + { + "label": "Heroku", + "count": 6 + }, + { + "label": "Lovable", + "count": 6 + }, + { + "label": "Modal", + "count": 6 + }, + { + "label": "hetzner", + "count": 5 + }, + { + "label": "None yet", + "count": 5 + }, + { + "label": "Firebase", + "count": 4 + }, + { + "label": "None", + "count": 4 + }, + { + "label": "Linode", + "count": 3 + }, + { + "label": "netlify", + "count": 3 + }, + { + "label": "Digital ocean", + "count": 2 + }, + { + "label": "none", + "count": 2 + }, + { + "label": "not sure", + "count": 2 + }, + { + "label": "OCI", + "count": 2 + }, + { + "label": "Oracle", + "count": 2 + }, + { + "label": "Oracle cloud", + "count": 2 + }, + { + "label": "Scaleway", + "count": 2 + }, + { + "label": "Ubicloud", + "count": 2 + }, + { + "label": "Airtable", + "count": 1 + }, + { + "label": "All possible cloud provider etc", + "count": 1 + }, + { + "label": "always used linode.", + "count": 1 + }, + { + "label": "And again I do not know", + "count": 1 + }, + { + "label": "and geographic coverage.", + "count": 1 + }, + { + "label": "and reliability. We leverage AWS for hosting our backend APIs", + "count": 1 + }, + { + "label": "and storage. We also evaluate Microsoft Azure and Google Cloud Platform (GCP) for future multi-cloud strategies", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "Aptible", + "count": 1 + }, + { + "label": "Aptify", + "count": 1 + }, + { + "label": "blackbaze", + "count": 1 + }, + { + "label": "Bolt", + "count": 1 + }, + { + "label": "but planning to choose Supabase.", + "count": 1 + }, + { + "label": "Chainstack", + "count": 1 + }, + { + "label": "CloudAMQP", + "count": 1 + }, + { + "label": "Cloudways", + "count": 1 + }, + { + "label": "Codesphere", + "count": 1 + }, + { + "label": "Colocation", + "count": 1 + }, + { + "label": "contabo", + "count": 1 + }, + { + "label": "Contabo", + "count": 1 + }, + { + "label": "Contabo and vpsdime", + "count": 1 + }, + { + "label": "Convex", + "count": 1 + }, + { + "label": "Coolify on VPS (NetCup)", + "count": 1 + }, + { + "label": "Cpanel hosting", + "count": 1 + }, + { + "label": "Custom K8S", + "count": 1 + }, + { + "label": "data analytics", + "count": 1 + }, + { + "label": "database services", + "count": 1 + }, + { + "label": "Deno Deploy", + "count": 1 + }, + { + "label": "digital and github", + "count": 1 + }, + { + "label": "DIgital Ocean", + "count": 1 + }, + { + "label": "digitalocean", + "count": 1 + }, + { + "label": "Digitalocean", + "count": 1 + }, + { + "label": "Dokploy", + "count": 1 + }, + { + "label": "early stages and no cloud providers as of now", + "count": 1 + }, + { + "label": "especially for specialized AI", + "count": 1 + }, + { + "label": "Famous.AI", + "count": 1 + }, + { + "label": "firebase", + "count": 1 + }, + { + "label": "Fluidstack", + "count": 1 + }, + { + "label": "Framer", + "count": 1 + }, + { + "label": "github", + "count": 1 + }, + { + "label": "Github", + "count": 1 + }, + { + "label": "Github pages currently", + "count": 1 + }, + { + "label": "google", + "count": 1 + }, + { + "label": "Google", + "count": 1 + }, + { + "label": "Google Cloud Run", + "count": 1 + }, + { + "label": "Google cloud workspace", + "count": 1 + }, + { + "label": "grafana", + "count": 1 + }, + { + "label": "Hetzner Cloud", + "count": 1 + }, + { + "label": "Hetzner VPS", + "count": 1 + }, + { + "label": "Homelab", + "count": 1 + }, + { + "label": "Hybrid Model | Contabo", + "count": 1 + }, + { + "label": "I don't know", + "count": 1 + }, + { + "label": "i dont know", + "count": 1 + }, + { + "label": "Interserver", + "count": 1 + }, + { + "label": "ionos", + "count": 1 + }, + { + "label": "IoT device management", + "count": 1 + }, + { + "label": "Lambda", + "count": 1 + }, + { + "label": "Lambda Labs", + "count": 1 + }, + { + "label": "Lambda.ai", + "count": 1 + }, + { + "label": "Laravel Cloud", + "count": 1 + }, + { + "label": "Local cloud provider", + "count": 1 + }, + { + "label": "Local Server hoster", + "count": 1 + }, + { + "label": "Loki", + "count": 1 + }, + { + "label": "lovable", + "count": 1 + }, + { + "label": "Lovable.dev", + "count": 1 + }, + { + "label": "Maybe using a few others in the future", + "count": 1 + }, + { + "label": "Metal Server Providers", + "count": 1 + }, + { + "label": "Mongodb atlas", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "Neon", + "count": 1 + }, + { + "label": "Neon.tech", + "count": 1 + }, + { + "label": "NeonDB", + "count": 1 + }, + { + "label": "netcup", + "count": 1 + }, + { + "label": "NETLIFY", + "count": 1 + }, + { + "label": "No clue", + "count": 1 + }, + { + "label": "no one", + "count": 1 + }, + { + "label": "none as of yet", + "count": 1 + }, + { + "label": "None really - Supabase for back end and Sevalla to host the static site", + "count": 1 + }, + { + "label": "Northflank", + "count": 1 + }, + { + "label": "not im in building space", + "count": 1 + }, + { + "label": "Nothing", + "count": 1 + }, + { + "label": "Novita", + "count": 1 + }, + { + "label": "Ns1", + "count": 1 + }, + { + "label": "On Prem", + "count": 1 + }, + { + "label": "On premise", + "count": 1 + }, + { + "label": "OpenAi", + "count": 1 + }, + { + "label": "Oracle Cloud", + "count": 1 + }, + { + "label": "oracle cloud infrastructure", + "count": 1 + }, + { + "label": "Our own", + "count": 1 + }, + { + "label": "Our startup currently uses Amazon Web Services (AWS) as our primary cloud provider due to its extensive services", + "count": 1 + }, + { + "label": "Ovh", + "count": 1 + }, + { + "label": "own", + "count": 1 + }, + { + "label": "Paperspace", + "count": 1 + }, + { + "label": "Planetscale", + "count": 1 + }, + { + "label": "Porter", + "count": 1 + }, + { + "label": "prometheus", + "count": 1 + }, + { + "label": "Pythonanywhere", + "count": 1 + }, + { + "label": "Raspberry pi", + "count": 1 + }, + { + "label": "render", + "count": 1 + }, + { + "label": "Replit", + "count": 1 + }, + { + "label": "Runpod", + "count": 1 + }, + { + "label": "RunPod", + "count": 1 + }, + { + "label": "Salad", + "count": 1 + }, + { + "label": "scalability", + "count": 1 + }, + { + "label": "Scaleway.com", + "count": 1 + }, + { + "label": "Self Host (Hetzner)", + "count": 1 + }, + { + "label": "self hosted", + "count": 1 + }, + { + "label": "Self Hosted", + "count": 1 + }, + { + "label": "Self-hosted", + "count": 1 + }, + { + "label": "Self-hosted main product", + "count": 1 + }, + { + "label": "Self-Hosting", + "count": 1 + }, + { + "label": "selfhosted on Hetzner", + "count": 1 + }, + { + "label": "SendGrid", + "count": 1 + }, + { + "label": "sevalla", + "count": 1 + }, + { + "label": "Shiper", + "count": 1 + }, + { + "label": "Standard hosting", + "count": 1 + }, + { + "label": "STRATO", + "count": 1 + }, + { + "label": "Tempo", + "count": 1 + }, + { + "label": "Together", + "count": 1 + }, + { + "label": "TTI", + "count": 1 + }, + { + "label": "Upstash", + "count": 1 + }, + { + "label": "Upsun", + "count": 1 + }, + { + "label": "VPS", + "count": 1 + }, + { + "label": "We are still building the MVP", + "count": 1 + }, + { + "label": "weweb", + "count": 1 + }, + { + "label": "WeWeb", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|frontend_stack|multi|": { + "rows": [ + { + "label": "React", + "count": 1161 + }, + { + "label": "Next.js", + "count": 1043 + }, + { + "label": "Native mobile (iOS / Android)", + "count": 319 + }, + { + "label": "Flutter", + "count": 264 + }, + { + "label": "Vue", + "count": 131 + }, + { + "label": "Svelte", + "count": 101 + }, + { + "label": "Angular", + "count": 22 + }, + { + "label": "React Native", + "count": 22 + }, + { + "label": "Lovable", + "count": 6 + }, + { + "label": "Nuxt", + "count": 6 + }, + { + "label": "Expo", + "count": 5 + }, + { + "label": "None", + "count": 5 + }, + { + "label": "React native", + "count": 4 + }, + { + "label": "SolidJS", + "count": 4 + }, + { + "label": "Vite", + "count": 4 + }, + { + "label": "WeWeb", + "count": 4 + }, + { + "label": "Astro", + "count": 3 + }, + { + "label": "HTMX", + "count": 3 + }, + { + "label": "react native", + "count": 3 + }, + { + "label": "Streamlit", + "count": 3 + }, + { + "label": "Angular js", + "count": 2 + }, + { + "label": "Bootstrap", + "count": 2 + }, + { + "label": "Bubble", + "count": 2 + }, + { + "label": "Deno Fresh", + "count": 2 + }, + { + "label": "Flask", + "count": 2 + }, + { + "label": "Flutterflow", + "count": 2 + }, + { + "label": "FlutterFlow", + "count": 2 + }, + { + "label": "Html", + "count": 2 + }, + { + "label": "Javascript", + "count": 2 + }, + { + "label": "Laravel", + "count": 2 + }, + { + "label": "lovable", + "count": 2 + }, + { + "label": "Nordcraft", + "count": 2 + }, + { + "label": "Nuxt.js", + "count": 2 + }, + { + "label": "Remix", + "count": 2 + }, + { + "label": "Softr", + "count": 2 + }, + { + "label": "tailwind", + "count": 2 + }, + { + "label": "Tailwind CSS", + "count": 2 + }, + { + "label": "Tauri", + "count": 2 + }, + { + "label": "typescript", + "count": 2 + }, + { + "label": "Webflow", + "count": 2 + }, + { + "label": "Weweb", + "count": 2 + }, + { + "label": "?", + "count": 1 + }, + { + "label": ".NET based HTML rendering", + "count": 1 + }, + { + "label": "A custom framework developed by AI", + "count": 1 + }, + { + "label": "Airtable", + "count": 1 + }, + { + "label": "Ajax", + "count": 1 + }, + { + "label": "All possible front-end technology etc", + "count": 1 + }, + { + "label": "Alpinejs", + "count": 1 + }, + { + "label": "and Js", + "count": 1 + }, + { + "label": "and search optimization", + "count": 1 + }, + { + "label": "angular", + "count": 1 + }, + { + "label": "AngularJS", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "Appsheet", + "count": 1 + }, + { + "label": "astro", + "count": 1 + }, + { + "label": "Astro and Svelte", + "count": 1 + }, + { + "label": "Blazor (.Net)", + "count": 1 + }, + { + "label": "Bolt.new", + "count": 1 + }, + { + "label": "Bubble.io", + "count": 1 + }, + { + "label": "but considering react", + "count": 1 + }, + { + "label": "but for right now it’s very simple", + "count": 1 + }, + { + "label": "capacitor", + "count": 1 + }, + { + "label": "Capacitor", + "count": 1 + }, + { + "label": "Clerk", + "count": 1 + }, + { + "label": "Compose Multiplatform", + "count": 1 + }, + { + "label": "Css", + "count": 1 + }, + { + "label": "customised using its ai prompts and third party integrations.", + "count": 1 + }, + { + "label": "Datastar", + "count": 1 + }, + { + "label": "delphi", + "count": 1 + }, + { + "label": "Dioxus (Rust)", + "count": 1 + }, + { + "label": "Direct integration with other interfaces like google forms", + "count": 1 + }, + { + "label": "Electron", + "count": 1 + }, + { + "label": "Elixir LiveView", + "count": 1 + }, + { + "label": "Elm", + "count": 1 + }, + { + "label": "Expo.dev React Native", + "count": 1 + }, + { + "label": "Expo(Native Build)", + "count": 1 + }, + { + "label": "Famous.ai", + "count": 1 + }, + { + "label": "feedback for user actions Routing\tReact Router (via Lovable)\tNavigation between pages (e.g., /report, /forum) File Uploads\tReact Dropzone\tDrag-and-drop evidence uploads for reports Markdown Rendering\tCustom Markdown Parser (with HTML cleanup)\tFor readable blog content without raw markdown symbols SEO & Meta\tReact Helmet or Lovable SEO tools\tMeta tags", + "count": 1 + }, + { + "label": "Flask and Go templates", + "count": 1 + }, + { + "label": "Flutter/Dart", + "count": 1 + }, + { + "label": "Framer", + "count": 1 + }, + { + "label": "Framework\tReact (via Lovable.dev)\tCore UI framework for SPA (Single Page Application) Styling\tTailwind CSS\tUtility-first CSS framework for rapid styling Animations\tFramer Motion\tSmooth animations and transitions across components Form Handling\tReact Hook Form + Zod\tDeclarative form validation and type-safe schemas Icons\tLucide Icons\tModern and consistent open-source icon set Toast Notifications\tSonner or similar\tIn-app alerts", + "count": 1 + }, + { + "label": "Gatsby", + "count": 1 + }, + { + "label": "Glide", + "count": 1 + }, + { + "label": "Hostinger Horizons", + "count": 1 + }, + { + "label": "HTML and CSS", + "count": 1 + }, + { + "label": "Html css", + "count": 1 + }, + { + "label": "HTML;CSS;Javastripe", + "count": 1 + }, + { + "label": "HTML/CSS", + "count": 1 + }, + { + "label": "HTML/CSS/JS", + "count": 1 + }, + { + "label": "HTML/JS", + "count": 1 + }, + { + "label": "Idk", + "count": 1 + }, + { + "label": "Ionic", + "count": 1 + }, + { + "label": "Isomorphic SmartClient", + "count": 1 + }, + { + "label": "javascript", + "count": 1 + }, + { + "label": "JavaScript", + "count": 1 + }, + { + "label": "Jetadmin", + "count": 1 + }, + { + "label": "jQuery", + "count": 1 + }, + { + "label": "JS", + "count": 1 + }, + { + "label": "Lavable", + "count": 1 + }, + { + "label": "Lit", + "count": 1 + }, + { + "label": "LiveVIew", + "count": 1 + }, + { + "label": "lovable?", + "count": 1 + }, + { + "label": "lovable.dev", + "count": 1 + }, + { + "label": "Lovable.dev", + "count": 1 + }, + { + "label": "Love", + "count": 1 + }, + { + "label": "loveable", + "count": 1 + }, + { + "label": "Mantine", + "count": 1 + }, + { + "label": "N/a", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "N8N", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "Native os", + "count": 1 + }, + { + "label": "No code frontend (built with Lovable)", + "count": 1 + }, + { + "label": "no framework", + "count": 1 + }, + { + "label": "No idea what that means the browser ig", + "count": 1 + }, + { + "label": "No-code", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "Open Graph", + "count": 1 + }, + { + "label": "Other", + "count": 1 + }, + { + "label": "Our startup uses React.js for building dynamic and responsive web interfaces", + "count": 1 + }, + { + "label": "Phoenix", + "count": 1 + }, + { + "label": "Phoenix Live View", + "count": 1 + }, + { + "label": "Phoenix LiveView", + "count": 1 + }, + { + "label": "Preact (comes with Deno Fresh)", + "count": 1 + }, + { + "label": "providing a smooth user experience for airline staff and airport operators managing the electric charging system. For styling", + "count": 1 + }, + { + "label": "Python", + "count": 1 + }, + { + "label": "Quasar", + "count": 1 + }, + { + "label": "R", + "count": 1 + }, + { + "label": "React Native (Expo)", + "count": 1 + }, + { + "label": "React Native / Expo", + "count": 1 + }, + { + "label": "React native expo", + "count": 1 + }, + { + "label": "React Router 7", + "count": 1 + }, + { + "label": "React-Native", + "count": 1 + }, + { + "label": "ReactNative", + "count": 1 + }, + { + "label": "ReactNative / Expo", + "count": 1 + }, + { + "label": "Remix or React Router v7", + "count": 1 + }, + { + "label": "remixjs", + "count": 1 + }, + { + "label": "Retool", + "count": 1 + }, + { + "label": "RRV7", + "count": 1 + }, + { + "label": "Shopify Liquid", + "count": 1 + }, + { + "label": "Softr.io", + "count": 1 + }, + { + "label": "solid.js", + "count": 1 + }, + { + "label": "Solidjs", + "count": 1 + }, + { + "label": "Stimulus.js", + "count": 1 + }, + { + "label": "Swift", + "count": 1 + }, + { + "label": "SwiftUI", + "count": 1 + }, + { + "label": "Tailwind", + "count": 1 + }, + { + "label": "TailwindCSS", + "count": 1 + }, + { + "label": "Telegram bot api", + "count": 1 + }, + { + "label": "There may be a mobile app in the future", + "count": 1 + }, + { + "label": "TKInter", + "count": 1 + }, + { + "label": "Typescript", + "count": 1 + }, + { + "label": "Unity game engine", + "count": 1 + }, + { + "label": "Unknown", + "count": 1 + }, + { + "label": "Vanilla JS", + "count": 1 + }, + { + "label": "Vanilla JS currently", + "count": 1 + }, + { + "label": "vibecode", + "count": 1 + }, + { + "label": "vite", + "count": 1 + }, + { + "label": "Vite (build tool)", + "count": 1 + }, + { + "label": "Vite + React", + "count": 1 + }, + { + "label": "Voice", + "count": 1 + }, + { + "label": "wagmi", + "count": 1 + }, + { + "label": "Wasp", + "count": 1 + }, + { + "label": "We have plans to use React Native for Mobile", + "count": 1 + }, + { + "label": "we use CSS3 with frameworks like Tailwind CSS or Bootstrap to ensure a clean and mobile-friendly design. We also utilize TypeScript to enhance code quality and maintainability.", + "count": 1 + }, + { + "label": "Well it looks like I don't know any of these questions I have no answers", + "count": 1 + }, + { + "label": "Wordpress and hostinger hor", + "count": 1 + }, + { + "label": "x", + "count": 1 + }, + { + "label": "xBesh", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|building_ai_agents|single|": { + "rows": [ + { + "label": "Yes", + "count": 1059 + }, + { + "label": "No", + "count": 561 + }, + { + "label": "Not sure", + "count": 490 + } + ], + "respondentCount": 2110 + }, + "2025|ai_agents_problems|multi|": { + "rows": [ + { + "label": "Workflow automation", + "count": 579 + }, + { + "label": "Personalization and recommendations", + "count": 431 + }, + { + "label": "Data analysis", + "count": 414 + }, + { + "label": "Content generation", + "count": 411 + }, + { + "label": "Automating customer support", + "count": 359 + }, + { + "label": "Education and training", + "count": 282 + }, + { + "label": "Sales and lead generation", + "count": 277 + }, + { + "label": "Research assistance", + "count": 253 + }, + { + "label": "Internal tools such as Slackbots and workflows", + "count": 249 + }, + { + "label": "Financial modeling or forecasting", + "count": 156 + }, + { + "label": "DevOps and incident management", + "count": 122 + }, + { + "label": "Scientific research", + "count": 117 + }, + { + "label": "🤫", + "count": 1 + }, + { + "label": "Account", + "count": 1 + }, + { + "label": "AI Detection", + "count": 1 + }, + { + "label": "AI-powered responses to passenger and airline staff inquiries about flight status", + "count": 1 + }, + { + "label": "All possible ways etc", + "count": 1 + }, + { + "label": "And again back to my original I do not know", + "count": 1 + }, + { + "label": "and battery status for safer and more efficient flights. Energy Management: Balancing energy loads across multiple airports", + "count": 1 + }, + { + "label": "and operational updates. By addressing these problems", + "count": 1 + }, + { + "label": "and reducing overall energy costs. Customer Support Automation: Providing instant", + "count": 1 + }, + { + "label": "and training. Research assistant workflow automation. Final product from hardware would involve personalization and recommendations Customer support data analysis and more.", + "count": 1 + }, + { + "label": "and user-friendly.", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "As a developer of AI agents", + "count": 1 + }, + { + "label": "Automating manual process", + "count": 1 + }, + { + "label": "Building social media contents for me to use on all social media platforms", + "count": 1 + }, + { + "label": "Built-in chatbot for NL query and reporting", + "count": 1 + }, + { + "label": "Cannot disclose", + "count": 1 + }, + { + "label": "charging schedules", + "count": 1 + }, + { + "label": "code generation", + "count": 1 + }, + { + "label": "Code generation", + "count": 1 + }, + { + "label": "Code Generation for building apps", + "count": 1 + }, + { + "label": "Code review", + "count": 1 + }, + { + "label": "coding", + "count": 1 + }, + { + "label": "Computer Vision", + "count": 1 + }, + { + "label": "content", + "count": 1 + }, + { + "label": "Contents moderation", + "count": 1 + }, + { + "label": "Control of IoT devices", + "count": 1 + }, + { + "label": "Custom AI generated form creation", + "count": 1 + }, + { + "label": "Dashboarding and reporting", + "count": 1 + }, + { + "label": "Data pipelining changing schemas", + "count": 1 + }, + { + "label": "desenvolvimento", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Did not tell me", + "count": 1 + }, + { + "label": "Document extraction for data storage", + "count": 1 + }, + { + "label": "education", + "count": 1 + }, + { + "label": "Education", + "count": 1 + }, + { + "label": "efficient", + "count": 1 + }, + { + "label": "Email Assistant", + "count": 1 + }, + { + "label": "etc.", + "count": 1 + }, + { + "label": "Everything", + "count": 1 + }, + { + "label": "for mi saas", + "count": 1 + }, + { + "label": "Frontend generation", + "count": 1 + }, + { + "label": "generation", + "count": 1 + }, + { + "label": "have not built one yet", + "count": 1 + }, + { + "label": "Health care", + "count": 1 + }, + { + "label": "indeed glass door", + "count": 1 + }, + { + "label": "Input understanding and assessment", + "count": 1 + }, + { + "label": "integrating renewable sources", + "count": 1 + }, + { + "label": "lead generation", + "count": 1 + }, + { + "label": "Legal compliance to avoid losses in law suits", + "count": 1 + }, + { + "label": "LLM monitoring and reliability", + "count": 1 + }, + { + "label": "Love", + "count": 1 + }, + { + "label": "Managed IT Systems", + "count": 1 + }, + { + "label": "Meal planing and grocery shopping", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "Nothing much", + "count": 1 + }, + { + "label": "Orchestration", + "count": 1 + }, + { + "label": "Our AI agents are designed to solve several critical challenges in electric and hybrid flight operations: Charging Efficiency: Automatically managing and optimizing charging schedules at airports to reduce wait times and ensure aircraft are ready on time. Predictive Maintenance: Detecting potential equipment failures early to minimize downtime and costly repairs. Flight Route Optimization: Assisting in dynamic route planning by factoring in charging station availability", + "count": 1 + }, + { + "label": "our AI agents help make electric flight more reliable", + "count": 1 + }, + { + "label": "preference and skill set by gathering all possible job listings", + "count": 1 + }, + { + "label": "sales", + "count": 1 + }, + { + "label": "scientific research", + "count": 1 + }, + { + "label": "Scraping and parsing", + "count": 1 + }, + { + "label": "Smart home and IOT natural language integrations", + "count": 1 + }, + { + "label": "Spiritual behavior coaching and automated journaling suggestions based on habit data.", + "count": 1 + }, + { + "label": "Testing", + "count": 1 + }, + { + "label": "Text-to-speech", + "count": 1 + }, + { + "label": "To provide the user with the best job which matches the users", + "count": 1 + }, + { + "label": "Training for specific industries and complex tasks", + "count": 1 + }, + { + "label": "Translation", + "count": 1 + }, + { + "label": "Vector manipulation", + "count": 1 + }, + { + "label": "weather", + "count": 1 + }, + { + "label": "whatever category my customers want is the agent that I built for them. For myself research assistant", + "count": 1 + }, + { + "label": "which are recently available from major job board like LinkedIn", + "count": 1 + }, + { + "label": "Writing radiology reporting", + "count": 1 + } + ], + "respondentCount": 1059 + }, + "2025|observability|multi|": { + "rows": [ + { + "label": "We don’t use observability tools yet", + "count": 1203 + }, + { + "label": "Sentry", + "count": 372 + }, + { + "label": "Grafana", + "count": 207 + }, + { + "label": "Custom solution", + "count": 150 + }, + { + "label": "Prometheus", + "count": 148 + }, + { + "label": "Datadog", + "count": 128 + }, + { + "label": "OpenTelemetry", + "count": 118 + }, + { + "label": "New Relic", + "count": 43 + }, + { + "label": "Honeycomb", + "count": 40 + }, + { + "label": "Posthog", + "count": 15 + }, + { + "label": "PostHog", + "count": 13 + }, + { + "label": "Vercel", + "count": 7 + }, + { + "label": "BetterStack", + "count": 6 + }, + { + "label": "Axiom", + "count": 5 + }, + { + "label": "posthog", + "count": 5 + }, + { + "label": "Logfire", + "count": 4 + }, + { + "label": "Mixpanel", + "count": 4 + }, + { + "label": "None", + "count": 4 + }, + { + "label": "Betterstack", + "count": 3 + }, + { + "label": "Highlight", + "count": 3 + }, + { + "label": "none", + "count": 3 + }, + { + "label": "vercel", + "count": 3 + }, + { + "label": "Zabbix", + "count": 3 + }, + { + "label": "Aptabase", + "count": 2 + }, + { + "label": "CloudWatch", + "count": 2 + }, + { + "label": "I don't know", + "count": 2 + }, + { + "label": "Looker Studio", + "count": 2 + }, + { + "label": "N/A", + "count": 2 + }, + { + "label": "Splunk", + "count": 2 + }, + { + "label": "Umami", + "count": 2 + }, + { + "label": "All possible monitoring & observability", + "count": 1 + }, + { + "label": "Amplitude", + "count": 1 + }, + { + "label": "and logs collection", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "AppSignal", + "count": 1 + }, + { + "label": "At present", + "count": 1 + }, + { + "label": "AWS", + "count": 1 + }, + { + "label": "AWS Cloudwatch", + "count": 1 + }, + { + "label": "Axiom and Posthog", + "count": 1 + }, + { + "label": "Azure AI", + "count": 1 + }, + { + "label": "Azure App Insight", + "count": 1 + }, + { + "label": "Azure App insights", + "count": 1 + }, + { + "label": "better stack", + "count": 1 + }, + { + "label": "BetterStack Logs", + "count": 1 + }, + { + "label": "Browser Dev Tools", + "count": 1 + }, + { + "label": "Browser DevTools & Console Logs", + "count": 1 + }, + { + "label": "but whether there is software and how it relates to having an online presence is all about having a website and being able to monetize by teaching through content", + "count": 1 + }, + { + "label": "Can’t move past this screen", + "count": 1 + }, + { + "label": "Checkly", + "count": 1 + }, + { + "label": "chekmate", + "count": 1 + }, + { + "label": "Cloudflare Healthchecks", + "count": 1 + }, + { + "label": "Cloudflare Web Analytics", + "count": 1 + }, + { + "label": "Cloudflare workers", + "count": 1 + }, + { + "label": "cloudwatch", + "count": 1 + }, + { + "label": "creation and affiliate links", + "count": 1 + }, + { + "label": "Currently hosting on fly.io so internally they use grafana", + "count": 1 + }, + { + "label": "Custom Dashboard / Internal Tools", + "count": 1 + }, + { + "label": "Custom made ones", + "count": 1 + }, + { + "label": "Default app store", + "count": 1 + }, + { + "label": "Dynatrace", + "count": 1 + }, + { + "label": "Elastic", + "count": 1 + }, + { + "label": "enabling deeper observability and faster troubleshooting.", + "count": 1 + }, + { + "label": "Firebase", + "count": 1 + }, + { + "label": "GCP", + "count": 1 + }, + { + "label": "Go access", + "count": 1 + }, + { + "label": "Google Analytics", + "count": 1 + }, + { + "label": "Google cloud logs", + "count": 1 + }, + { + "label": "Google Cloud Platform own monitoring", + "count": 1 + }, + { + "label": "Google's Observability Stack", + "count": 1 + }, + { + "label": "Hatchet for logging", + "count": 1 + }, + { + "label": "Highlight.io", + "count": 1 + }, + { + "label": "Hotjar", + "count": 1 + }, + { + "label": "HypedDX", + "count": 1 + }, + { + "label": "HyperDX", + "count": 1 + }, + { + "label": "I dint know what this is yet", + "count": 1 + }, + { + "label": "including: Prometheus for metrics collection and alerting Grafana for data visualization and dashboarding AWS CloudWatch (or your cloud provider’s native monitoring) for infrastructure monitoring Basic log aggregation using tools like ELK Stack (Elasticsearch, Logstash, Kibana) or AWS CloudWatch Logs As we scale", + "count": 1 + }, + { + "label": "Insight Hub", + "count": 1 + }, + { + "label": "Kuma", + "count": 1 + }, + { + "label": "langfuse", + "count": 1 + }, + { + "label": "Langfuse", + "count": 1 + }, + { + "label": "LangSmith", + "count": 1 + }, + { + "label": "LogFire", + "count": 1 + }, + { + "label": "Logfire by pydantic", + "count": 1 + }, + { + "label": "Logrocket", + "count": 1 + }, + { + "label": "LogRocket", + "count": 1 + }, + { + "label": "Loki", + "count": 1 + }, + { + "label": "LuckyOrange", + "count": 1 + }, + { + "label": "metrics", + "count": 1 + }, + { + "label": "Microanalytics", + "count": 1 + }, + { + "label": "Most of our solution is in the world of hardware and not software", + "count": 1 + }, + { + "label": "Mouseflow", + "count": 1 + }, + { + "label": "MouseFlow", + "count": 1 + }, + { + "label": "Ms clarity", + "count": 1 + }, + { + "label": "N8N errors", + "count": 1 + }, + { + "label": "Nagios 😅", + "count": 1 + }, + { + "label": "Nil", + "count": 1 + }, + { + "label": "Ninguna", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "not at that stage yet", + "count": 1 + }, + { + "label": "not sure yet", + "count": 1 + }, + { + "label": "not suree", + "count": 1 + }, + { + "label": "Not using it yet", + "count": 1 + }, + { + "label": "Not yet", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "ohdear.app", + "count": 1 + }, + { + "label": "Opentelmetry and Loki", + "count": 1 + }, + { + "label": "Other", + "count": 1 + }, + { + "label": "our startup uses a combination of tools to monitor and observe our backend systems and charging infrastructure", + "count": 1 + }, + { + "label": "Plausible", + "count": 1 + }, + { + "label": "Railway", + "count": 1 + }, + { + "label": "Railway’s built-in observability + PostHog", + "count": 1 + }, + { + "label": "Railway/Render built-in logs", + "count": 1 + }, + { + "label": "Signoz", + "count": 1 + }, + { + "label": "SigNoz", + "count": 1 + }, + { + "label": "Skylight", + "count": 1 + }, + { + "label": "Subtrace", + "count": 1 + }, + { + "label": "Supabase dashboard", + "count": 1 + }, + { + "label": "Supabase Logs & Dashboard", + "count": 1 + }, + { + "label": "Supabase Logs + React Native Debugging Tools + Python Logging", + "count": 1 + }, + { + "label": "There again the AI built it I have no idea how we built it or what's in it", + "count": 1 + }, + { + "label": "thinking about helicone", + "count": 1 + }, + { + "label": "uptime kuma", + "count": 1 + }, + { + "label": "UptimeRobot", + "count": 1 + }, + { + "label": "uxcam", + "count": 1 + }, + { + "label": "Uxcam", + "count": 1 + }, + { + "label": "Vercel Analytics", + "count": 1 + }, + { + "label": "Vercel Analytics & Monitoring", + "count": 1 + }, + { + "label": "Vercel Observability and Axiom", + "count": 1 + }, + { + "label": "Vercel+Supabase (planning to add PostHog)", + "count": 1 + }, + { + "label": "Vigilant", + "count": 1 + }, + { + "label": "VoltOps", + "count": 1 + }, + { + "label": "we plan to integrate OpenTelemetry for unified tracing", + "count": 1 + }, + { + "label": "WIP", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|growth_tools|multi|": { + "rows": [ + { + "label": "Google Analytics", + "count": 312 + }, + { + "label": "I don’t track this yet", + "count": 195 + }, + { + "label": "PostHog", + "count": 119 + }, + { + "label": "Custom-built dashboards", + "count": 111 + }, + { + "label": "HubSpot", + "count": 60 + }, + { + "label": "Mixpanel", + "count": 32 + }, + { + "label": "Salesforce", + "count": 26 + }, + { + "label": "Amplitude", + "count": 24 + }, + { + "label": "Segment", + "count": 23 + }, + { + "label": "Rudderstack", + "count": 4 + }, + { + "label": "Matomo", + "count": 2 + }, + { + "label": "Vercel", + "count": 2 + }, + { + "label": "Vercel Analytics", + "count": 2 + }, + { + "label": "and Amplitude post alpha launch.", + "count": 1 + }, + { + "label": "App Store/google play reports", + "count": 1 + }, + { + "label": "Aptabase", + "count": 1 + }, + { + "label": "Attio", + "count": 1 + }, + { + "label": "Bitrix24", + "count": 1 + }, + { + "label": "Brevo", + "count": 1 + }, + { + "label": "Clarity", + "count": 1 + }, + { + "label": "clerk", + "count": 1 + }, + { + "label": "Cloudflare", + "count": 1 + }, + { + "label": "countries and usage stats", + "count": 1 + }, + { + "label": "CRM - NOTION", + "count": 1 + }, + { + "label": "CRM tools", + "count": 1 + }, + { + "label": "Custom build ones", + "count": 1 + }, + { + "label": "Dub", + "count": 1 + }, + { + "label": "Eventually", + "count": 1 + }, + { + "label": "expo insights", + "count": 1 + }, + { + "label": "Fibery", + "count": 1 + }, + { + "label": "framer analytics", + "count": 1 + }, + { + "label": "Go access", + "count": 1 + }, + { + "label": "Google Ads", + "count": 1 + }, + { + "label": "Heap", + "count": 1 + }, + { + "label": "Hotjar", + "count": 1 + }, + { + "label": "HotJAr/Smartlook", + "count": 1 + }, + { + "label": "I'm not tracking really much", + "count": 1 + }, + { + "label": "Internal tools; this is one of our products that we dogfood", + "count": 1 + }, + { + "label": "just Umami. Basically retention", + "count": 1 + }, + { + "label": "Looker Studio", + "count": 1 + }, + { + "label": "metricool", + "count": 1 + }, + { + "label": "Microanalytics", + "count": 1 + }, + { + "label": "Microsoft Clarity", + "count": 1 + }, + { + "label": "nothing yet", + "count": 1 + }, + { + "label": "Pipedrive", + "count": 1 + }, + { + "label": "piwik", + "count": 1 + }, + { + "label": "Plausible", + "count": 1 + }, + { + "label": "RevenueCat", + "count": 1 + }, + { + "label": "Simple Analytics", + "count": 1 + }, + { + "label": "Stripe", + "count": 1 + }, + { + "label": "Supabase reports/sql", + "count": 1 + }, + { + "label": "Umami", + "count": 1 + }, + { + "label": "UXCam", + "count": 1 + }, + { + "label": "vercel analytics", + "count": 1 + }, + { + "label": "We plan to use Google analytics", + "count": 1 + }, + { + "label": "we will use PostHog for the Cloud/SaaS", + "count": 1 + }, + { + "label": "Zoho", + "count": 1 + }, + { + "label": "Zoho Analytics", + "count": 1 + }, + { + "label": "Zoho and Tally", + "count": 1 + } + ], + "respondentCount": 673 + }, + "2025|dev_community_built|single|": { + "rows": [ + { + "label": "No", + "count": 294 + }, + { + "label": "In progress / planning to", + "count": 181 + }, + { + "label": "Not relevant to our audience", + "count": 131 + }, + { + "label": "Yes", + "count": 67 + } + ], + "respondentCount": 673 + }, + "2025|initial_paying_customers|multi|": { + "rows": [ + { + "label": "Personal/professional network", + "count": 391 + }, + { + "label": "Inbound from social media (Twitter, LinkedIn, etc.)", + "count": 224 + }, + { + "label": "Cold outreach or sales", + "count": 209 + }, + { + "label": "Content (blog, newsletter, SEO)", + "count": 171 + }, + { + "label": "Developer communities (Discord, Slack, Reddit, etc.)", + "count": 98 + }, + { + "label": "Open source users who converted", + "count": 67 + }, + { + "label": "Accelerators/incubators", + "count": 66 + }, + { + "label": "Hacker News or Product Hunt", + "count": 62 + }, + { + "label": "No paying customers", + "count": 2 + }, + { + "label": "Accounting firms", + "count": 1 + }, + { + "label": "Ads", + "count": 1 + }, + { + "label": "Advertisement in relevant platforms", + "count": 1 + }, + { + "label": "and B2B partnerships with HR/legal teams.", + "count": 1 + }, + { + "label": "and Coimbatore. These airports are ideal for piloting our electric charging transmission system due to: Their strategic locations on short-to-mid distance domestic routes. Growing interest in sustainable and green aviation infrastructure. Opportunities to collaborate with local airlines operating these routes. By partnering with these airports and associated airlines", + "count": 1 + }, + { + "label": "and collaborating with local design organizations and vocational schools. These real-world engagements allowed us to demonstrate the practical value of our AI + SketchUp MCP system", + "count": 1 + }, + { + "label": "and convert early adopters—primarily interior designers and small studios—into our first paying customers. This bottom-up approach not only validated product-market fit but also laid the foundation for a strong word-of-mouth growth engine within the design ecosystem.", + "count": 1 + }, + { + "label": "and I will be using affiliates", + "count": 1 + }, + { + "label": "and primarily through social media where we actively share value-driven content to build an engaged community.", + "count": 1 + }, + { + "label": "Any business owners wanting to manage their finances and inventory", + "count": 1 + }, + { + "label": "App Store", + "count": 1 + }, + { + "label": "App Store organic", + "count": 1 + }, + { + "label": "Bangalore", + "count": 1 + }, + { + "label": "Betalist", + "count": 1 + }, + { + "label": "building strong case studies for further expansion across India.", + "count": 1 + }, + { + "label": "but I have a clear vision", + "count": 1 + }, + { + "label": "Chat agent recommendations", + "count": 1 + }, + { + "label": "community forums", + "count": 1 + }, + { + "label": "Don't have any yet; currently testing with initial users.", + "count": 1 + }, + { + "label": "everybody", + "count": 1 + }, + { + "label": "Existing customer list", + "count": 1 + }, + { + "label": "Facebook Ads", + "count": 1 + }, + { + "label": "Facebook Groups", + "count": 1 + }, + { + "label": "Free feeder app into core product", + "count": 1 + }, + { + "label": "gain immediate feedback", + "count": 1 + }, + { + "label": "Google Ads", + "count": 1 + }, + { + "label": "hosting product demo sessions at design industry meetups", + "count": 1 + }, + { + "label": "I do not yet have paying customers", + "count": 1 + }, + { + "label": "I haven't launched yet", + "count": 1 + }, + { + "label": "I've been promoting it on social but it's slowly growing there. It seems like it was a genuine new user who stumbled on the site.", + "count": 1 + }, + { + "label": "Inbound from events", + "count": 1 + }, + { + "label": "Instagram trafic", + "count": 1 + }, + { + "label": "Launching soon", + "count": 1 + }, + { + "label": "Local partnerships with pilot testing", + "count": 1 + }, + { + "label": "Madurai", + "count": 1 + }, + { + "label": "Meta Ads", + "count": 1 + }, + { + "label": "n/a", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "no monetisation yet", + "count": 1 + }, + { + "label": "no paying customers", + "count": 1 + }, + { + "label": "No paying users but most of our users have come from LinkedIn + Reddit", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "NONE YET", + "count": 1 + }, + { + "label": "NOt", + "count": 1 + }, + { + "label": "Not gone to market yet", + "count": 1 + }, + { + "label": "Not in market yet", + "count": 1 + }, + { + "label": "not yet", + "count": 1 + }, + { + "label": "Not yet started but am a veteran direct sales representative now Founder of Audax Nitor inc.", + "count": 1 + }, + { + "label": "offline conference", + "count": 1 + }, + { + "label": "Organic search on google", + "count": 1 + }, + { + "label": "our early users (and future paying customers) are coming from a mix of personal and professional networks", + "count": 1 + }, + { + "label": "Our initial paying customers came through a combination of grassroots industry outreach and educational partnerships. We actively engaged with the local interior design and architecture communities by participating in SketchUp-focused training programs", + "count": 1 + }, + { + "label": "Our startup’s initial paying customers will primarily come from regional airports along key domestic corridors such as Cochin", + "count": 1 + }, + { + "label": "our website (via SEO-optimized content and blogs)", + "count": 1 + }, + { + "label": "Outreach", + "count": 1 + }, + { + "label": "Post secondaries", + "count": 1 + }, + { + "label": "search engine marketing", + "count": 1 + }, + { + "label": "Sister companies within group", + "count": 1 + }, + { + "label": "still testing with 3 users", + "count": 1 + }, + { + "label": "student community", + "count": 1 + }, + { + "label": "The Real World", + "count": 1 + }, + { + "label": "TikTok", + "count": 1 + }, + { + "label": "Unity Cloud", + "count": 1 + }, + { + "label": "Unsure", + "count": 1 + }, + { + "label": "Upwork.com", + "count": 1 + }, + { + "label": "Users Platform", + "count": 1 + }, + { + "label": "we aim to demonstrate the feasibility and benefits of our system", + "count": 1 + }, + { + "label": "We are a spinoff of a company that is also our first client", + "count": 1 + }, + { + "label": "we are not so far that the product generates income", + "count": 1 + }, + { + "label": "We are pre-revenue. We haven't onboarded paying customers yet — initial users will come through organic outreach", + "count": 1 + }, + { + "label": "We don't have paying customers yet. Still fitting out product into the market :(", + "count": 1 + }, + { + "label": "We haven’t launched paid plans yet", + "count": 1 + }, + { + "label": "We’re currently in our alpha stage and not actively prioritizing monetization yet — our main focus is on finding product-market fit and validating engagement. So far", + "count": 1 + }, + { + "label": "Webflow Marketplace", + "count": 1 + }, + { + "label": "Word of mouth", + "count": 1 + } + ], + "respondentCount": 673 + }, + "2025|initial_paying_customers|multi|[[\"dev_community_built\",\"Yes\"]]": { + "rows": [ + { + "label": "Personal/professional network", + "count": 40 + }, + { + "label": "Developer communities (Discord, Slack, Reddit, etc.)", + "count": 25 + }, + { + "label": "Inbound from social media (Twitter, LinkedIn, etc.)", + "count": 24 + }, + { + "label": "Content (blog, newsletter, SEO)", + "count": 19 + }, + { + "label": "Open source users who converted", + "count": 19 + }, + { + "label": "Cold outreach or sales", + "count": 13 + }, + { + "label": "Accelerators/incubators", + "count": 12 + }, + { + "label": "Hacker News or Product Hunt", + "count": 12 + }, + { + "label": "and Coimbatore. These airports are ideal for piloting our electric charging transmission system due to: Their strategic locations on short-to-mid distance domestic routes. Growing interest in sustainable and green aviation infrastructure. Opportunities to collaborate with local airlines operating these routes. By partnering with these airports and associated airlines", + "count": 1 + }, + { + "label": "and collaborating with local design organizations and vocational schools. These real-world engagements allowed us to demonstrate the practical value of our AI + SketchUp MCP system", + "count": 1 + }, + { + "label": "and convert early adopters—primarily interior designers and small studios—into our first paying customers. This bottom-up approach not only validated product-market fit but also laid the foundation for a strong word-of-mouth growth engine within the design ecosystem.", + "count": 1 + }, + { + "label": "Bangalore", + "count": 1 + }, + { + "label": "building strong case studies for further expansion across India.", + "count": 1 + }, + { + "label": "gain immediate feedback", + "count": 1 + }, + { + "label": "hosting product demo sessions at design industry meetups", + "count": 1 + }, + { + "label": "Madurai", + "count": 1 + }, + { + "label": "no monetisation yet", + "count": 1 + }, + { + "label": "No paying customers", + "count": 1 + }, + { + "label": "Our initial paying customers came through a combination of grassroots industry outreach and educational partnerships. We actively engaged with the local interior design and architecture communities by participating in SketchUp-focused training programs", + "count": 1 + }, + { + "label": "Our startup’s initial paying customers will primarily come from regional airports along key domestic corridors such as Cochin", + "count": 1 + }, + { + "label": "we aim to demonstrate the feasibility and benefits of our system", + "count": 1 + } + ], + "respondentCount": 67 + }, + "2025|initial_paying_customers|multi|[[\"dev_community_built\",\"No\"]]": { + "rows": [ + { + "label": "Personal/professional network", + "count": 157 + }, + { + "label": "Cold outreach or sales", + "count": 98 + }, + { + "label": "Inbound from social media (Twitter, LinkedIn, etc.)", + "count": 80 + }, + { + "label": "Content (blog, newsletter, SEO)", + "count": 64 + }, + { + "label": "Developer communities (Discord, Slack, Reddit, etc.)", + "count": 35 + }, + { + "label": "Accelerators/incubators", + "count": 26 + }, + { + "label": "Hacker News or Product Hunt", + "count": 26 + }, + { + "label": "Open source users who converted", + "count": 15 + }, + { + "label": "Accounting firms", + "count": 1 + }, + { + "label": "and I will be using affiliates", + "count": 1 + }, + { + "label": "and primarily through social media where we actively share value-driven content to build an engaged community.", + "count": 1 + }, + { + "label": "App Store organic", + "count": 1 + }, + { + "label": "but I have a clear vision", + "count": 1 + }, + { + "label": "Existing customer list", + "count": 1 + }, + { + "label": "Google Ads", + "count": 1 + }, + { + "label": "I do not yet have paying customers", + "count": 1 + }, + { + "label": "I haven't launched yet", + "count": 1 + }, + { + "label": "I've been promoting it on social but it's slowly growing there. It seems like it was a genuine new user who stumbled on the site.", + "count": 1 + }, + { + "label": "Instagram trafic", + "count": 1 + }, + { + "label": "Launching soon", + "count": 1 + }, + { + "label": "No paying customers", + "count": 1 + }, + { + "label": "NOt", + "count": 1 + }, + { + "label": "Not gone to market yet", + "count": 1 + }, + { + "label": "Not in market yet", + "count": 1 + }, + { + "label": "offline conference", + "count": 1 + }, + { + "label": "Organic search on google", + "count": 1 + }, + { + "label": "our early users (and future paying customers) are coming from a mix of personal and professional networks", + "count": 1 + }, + { + "label": "our website (via SEO-optimized content and blogs)", + "count": 1 + }, + { + "label": "Outreach", + "count": 1 + }, + { + "label": "Post secondaries", + "count": 1 + }, + { + "label": "search engine marketing", + "count": 1 + }, + { + "label": "still testing with 3 users", + "count": 1 + }, + { + "label": "student community", + "count": 1 + }, + { + "label": "The Real World", + "count": 1 + }, + { + "label": "TikTok", + "count": 1 + }, + { + "label": "Unity Cloud", + "count": 1 + }, + { + "label": "Unsure", + "count": 1 + }, + { + "label": "we are not so far that the product generates income", + "count": 1 + }, + { + "label": "We’re currently in our alpha stage and not actively prioritizing monetization yet — our main focus is on finding product-market fit and validating engagement. So far", + "count": 1 + }, + { + "label": "Webflow Marketplace", + "count": 1 + } + ], + "respondentCount": 294 + }, + "2025|dedicated_sales_function|single|": { + "rows": [ + { + "label": "No, but planning to build one", + "count": 226 + }, + { + "label": "Yes, but it’s founder-led or part-time", + "count": 184 + }, + { + "label": "No, and no plans to add one yet", + "count": 179 + }, + { + "label": "Yes, full-time sales team", + "count": 84 + } + ], + "respondentCount": 673 + }, + "2025|market_model|multi|": { + "rows": [ + { + "label": "Product-led growth", + "count": 980 + }, + { + "label": "Not sure yet", + "count": 679 + }, + { + "label": "Sales-led growth", + "count": 545 + }, + { + "label": "Channel / partnerships", + "count": 499 + } + ], + "respondentCount": 2110 + }, + "2025|sales_primary_responsible|single|": { + "rows": [ + { + "label": "Founder(s)", + "count": 504 + }, + { + "label": "We don’t have anyone focused on sales yet", + "count": 74 + }, + { + "label": "Full-time sales rep or team", + "count": 46 + }, + { + "label": "Business development / partnerships team", + "count": 30 + }, + { + "label": "Customer success or support team", + "count": 19 + } + ], + "respondentCount": 673 + }, + "2025|pricing|multi|": { + "rows": [ + { + "label": "Still experimenting", + "count": 262 + }, + { + "label": "Flat-rate plans", + "count": 230 + }, + { + "label": "Usage-based pricing", + "count": 179 + }, + { + "label": "Custom pricing for enterprise", + "count": 163 + }, + { + "label": "Tiered feature plans", + "count": 149 + }, + { + "label": "% of AUM + success fee", + "count": 1 + }, + { + "label": "20 USD", + "count": 1 + }, + { + "label": "although there’s really nothing else in the marketplace like this. So with that being said", + "count": 1 + }, + { + "label": "and annual billing cycles. This flexible pricing model allows users to choose the plan that best fits their needs and encourages adoption through a risk-free trial.", + "count": 1 + }, + { + "label": "Based on user company size", + "count": 1 + }, + { + "label": "Benchmark", + "count": 1 + }, + { + "label": "but", + "count": 1 + }, + { + "label": "Coaches set their own rate", + "count": 1 + }, + { + "label": "Combination of B and C", + "count": 1 + }, + { + "label": "Commision based", + "count": 1 + }, + { + "label": "Did not put any rates and note selling anything", + "count": 1 + }, + { + "label": "Figuring this out", + "count": 1 + }, + { + "label": "Fixed rate or hourly", + "count": 1 + }, + { + "label": "free", + "count": 1 + }, + { + "label": "free for lifetime", + "count": 1 + }, + { + "label": "free with transaction fees", + "count": 1 + }, + { + "label": "Freemium", + "count": 1 + }, + { + "label": "Haven’t decided", + "count": 1 + }, + { + "label": "havent yet", + "count": 1 + }, + { + "label": "Hybrid", + "count": 1 + }, + { + "label": "It is outright sale and will consider capex for customer.", + "count": 1 + }, + { + "label": "it will be Feature Tiers + Custom Enterprise pricing", + "count": 1 + }, + { + "label": "Lowest market prices", + "count": 1 + }, + { + "label": "monthly fees", + "count": 1 + }, + { + "label": "MRR", + "count": 1 + }, + { + "label": "No pricing yet", + "count": 1 + }, + { + "label": "None as of now", + "count": 1 + }, + { + "label": "nope", + "count": 1 + }, + { + "label": "Not current billing on any product yet all is free for Now to know our user's wants and needs", + "count": 1 + }, + { + "label": "Not yet priced. Will have a free tier and a subscription tier", + "count": 1 + }, + { + "label": "One off lifetime", + "count": 1 + }, + { + "label": "One time perp lic. for each major release + Support and Maintenance plan", + "count": 1 + }, + { + "label": "Pct fees", + "count": 1 + }, + { + "label": "Per appointment", + "count": 1 + }, + { + "label": "Platform + Modules", + "count": 1 + }, + { + "label": "Pricing user qty dependent", + "count": 1 + }, + { + "label": "professional definition", + "count": 1 + }, + { + "label": "quarterly", + "count": 1 + }, + { + "label": "Seat-based", + "count": 1 + }, + { + "label": "Seller choice.", + "count": 1 + }, + { + "label": "Subscriptions", + "count": 1 + }, + { + "label": "Success %", + "count": 1 + }, + { + "label": "suscriptions", + "count": 1 + }, + { + "label": "This is going to be complex; Each integration has its own cost. we still need to figure it out.", + "count": 1 + }, + { + "label": "Transaction Fees", + "count": 1 + }, + { + "label": "upcoming flat monthly sub", + "count": 1 + }, + { + "label": "We are not building SaaS. We operate on revenue sharing with our experts.", + "count": 1 + }, + { + "label": "we have an expected target price based upon the general prices that developers are willing to pay for similar type of tools", + "count": 1 + }, + { + "label": "we may sell the software as a service later on", + "count": 1 + }, + { + "label": "We offer a 14-day free trial period followed by subscription plans available in monthly", + "count": 1 + }, + { + "label": "We sell a physical product at the moment", + "count": 1 + }, + { + "label": "We’re not at that stage yet", + "count": 1 + }, + { + "label": "we’re still experimenting.", + "count": 1 + } + ], + "respondentCount": 673 + }, + "2025|regular_social_media_use|multi|": { + "rows": [ + { + "label": "YouTube", + "count": 1268 + }, + { + "label": "LinkedIn", + "count": 1170 + }, + { + "label": "Instagram", + "count": 1031 + }, + { + "label": "X (Twitter)", + "count": 925 + }, + { + "label": "Reddit", + "count": 659 + }, + { + "label": "Discord", + "count": 547 + }, + { + "label": "TikTok", + "count": 320 + }, + { + "label": "I’ve given up social media", + "count": 150 + }, + { + "label": "Threads", + "count": 126 + }, + { + "label": "BlueSky", + "count": 93 + }, + { + "label": "Facebook", + "count": 24 + }, + { + "label": "Mastodon", + "count": 19 + }, + { + "label": "Hacker News", + "count": 2 + }, + { + "label": "Whatsapp", + "count": 2 + }, + { + "label": "1-2x only currently (LinkedIn and X)", + "count": 1 + }, + { + "label": "and planning on getting into discord", + "count": 1 + }, + { + "label": "and Reddit sometimes it’s good sometimes it’s bad. It’s full of a lot of rhetoric and makes it hard to just use it the way you originally was intended.", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "bilibili", + "count": 1 + }, + { + "label": "bluesky for testing", + "count": 1 + }, + { + "label": "Custom Matrix", + "count": 1 + }, + { + "label": "facebook", + "count": 1 + }, + { + "label": "Facebook and WhatsApp", + "count": 1 + }, + { + "label": "Farcaster", + "count": 1 + }, + { + "label": "fb", + "count": 1 + }, + { + "label": "Fb", + "count": 1 + }, + { + "label": "FB", + "count": 1 + }, + { + "label": "GitHub", + "count": 1 + }, + { + "label": "HN - this isn't listed!?!", + "count": 1 + }, + { + "label": "I also use threads but very rarely", + "count": 1 + }, + { + "label": "I have no clue which one the AI is going to use I didn't build it the AI did have no clue that's why I'm here doing this either the AI told me to", + "count": 1 + }, + { + "label": "I never used social media", + "count": 1 + }, + { + "label": "internshala", + "count": 1 + }, + { + "label": "Lemmy", + "count": 1 + }, + { + "label": "Most of them", + "count": 1 + }, + { + "label": "Never", + "count": 1 + }, + { + "label": "never used social media", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "only for education", + "count": 1 + }, + { + "label": "Other", + "count": 1 + }, + { + "label": "Others", + "count": 1 + }, + { + "label": "Skool", + "count": 1 + }, + { + "label": "snapchat", + "count": 1 + }, + { + "label": "Snapchat", + "count": 1 + }, + { + "label": "some news out of linkedIN", + "count": 1 + }, + { + "label": "Telegram", + "count": 1 + }, + { + "label": "Telegram and Signal", + "count": 1 + }, + { + "label": "Truth Social", + "count": 1 + }, + { + "label": "WhatsApp", + "count": 1 + }, + { + "label": "will be adding tik tok soon", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|events|multi|": { + "rows": [ + { + "label": "None of the above", + "count": 1123 + }, + { + "label": "Google Cloud Next", + "count": 321 + }, + { + "label": "AWS re:Invent", + "count": 252 + }, + { + "label": "Y Combinator Demo Day", + "count": 245 + }, + { + "label": "Microsoft Build", + "count": 209 + }, + { + "label": "Web Summit", + "count": 187 + }, + { + "label": "Open Source Summit", + "count": 174 + }, + { + "label": "AI Engineer World’s Fair", + "count": 147 + }, + { + "label": "TechCrunch Disrupt", + "count": 94 + }, + { + "label": "Kubecon", + "count": 81 + }, + { + "label": "SXSW", + "count": 71 + }, + { + "label": "Slush", + "count": 40 + }, + { + "label": "FOSDEM", + "count": 33 + }, + { + "label": "None", + "count": 23 + }, + { + "label": "none", + "count": 16 + }, + { + "label": "Vivatech", + "count": 3 + }, + { + "label": "NA", + "count": 2 + }, + { + "label": "no", + "count": 2 + }, + { + "label": "Vercel Ship", + "count": 2 + }, + { + "label": "WWDC", + "count": 2 + }, + { + "label": "-", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Agro startups", + "count": 1 + }, + { + "label": "AI for Good Summit in Geneva", + "count": 1 + }, + { + "label": "AI Week", + "count": 1 + }, + { + "label": "AIAI", + "count": 1 + }, + { + "label": "All In (canadian AI conference)", + "count": 1 + }, + { + "label": "All in summit", + "count": 1 + }, + { + "label": "And none of them below either", + "count": 1 + }, + { + "label": "and that was a while ago. I’ve checked off several the ones I would love to attend in the future and some of them I’ve seen through YouTube.", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App.js Conf", + "count": 1 + }, + { + "label": "ASM /ODA", + "count": 1 + }, + { + "label": "AWS COMMUNITY DAY", + "count": 1 + }, + { + "label": "AWS coud experience", + "count": 1 + }, + { + "label": "Aws sap hackaton", + "count": 1 + }, + { + "label": "AWS Summit", + "count": 1 + }, + { + "label": "Beirut Berytech", + "count": 1 + }, + { + "label": "Bitcoin", + "count": 1 + }, + { + "label": "Boulder Tech", + "count": 1 + }, + { + "label": "bug bash", + "count": 1 + }, + { + "label": "CCC conferences", + "count": 1 + }, + { + "label": "clojure-conj", + "count": 1 + }, + { + "label": "Cloudfest Rust", + "count": 1 + }, + { + "label": "Collision", + "count": 1 + }, + { + "label": "Collision Conf", + "count": 1 + }, + { + "label": "Cybersecurity conference", + "count": 1 + }, + { + "label": "Defcon", + "count": 1 + }, + { + "label": "DevWeek", + "count": 1 + }, + { + "label": "Dreamforce", + "count": 1 + }, + { + "label": "Festival of Modern Owners", + "count": 1 + }, + { + "label": "Figcon", + "count": 1 + }, + { + "label": "fossasia", + "count": 1 + }, + { + "label": "Founders Connect", + "count": 1 + }, + { + "label": "Gitex", + "count": 1 + }, + { + "label": "Gitex Africa and more", + "count": 1 + }, + { + "label": "Global Fintech Fest", + "count": 1 + }, + { + "label": "Google Developer Group Harare", + "count": 1 + }, + { + "label": "GOOGLE DEVFEST", + "count": 1 + }, + { + "label": "Google Wow Summit", + "count": 1 + }, + { + "label": "gophercon", + "count": 1 + }, + { + "label": "GrowthX", + "count": 1 + }, + { + "label": "Haven't thought to attend currently", + "count": 1 + }, + { + "label": "HPE and NVIDIA workshops", + "count": 1 + }, + { + "label": "I build stuff. I dont waste time at wanky nerd parties.", + "count": 1 + }, + { + "label": "I have not personally attended any of these. I have viewed several of these through YouTube. But there are several of them that I would love to attend once the businesses in that position. I have attended maker affairs in which the hobbies developer entrepreneur goes to see what the rest of the community is building. That was in person in New York", + "count": 1 + }, + { + "label": "I haven't been to any", + "count": 1 + }, + { + "label": "I plan to attend on all but have never actually attended any before Looking For a sponsorship", + "count": 1 + }, + { + "label": "iam in srilakna :(", + "count": 1 + }, + { + "label": "IndiaFOSS", + "count": 1 + }, + { + "label": "La Product Conf", + "count": 1 + }, + { + "label": "Latitude 59", + "count": 1 + }, + { + "label": "Lattitude59", + "count": 1 + }, + { + "label": "leep", + "count": 1 + }, + { + "label": "LlamaCon", + "count": 1 + }, + { + "label": "Microconf", + "count": 1 + }, + { + "label": "Missouri Startup Weekend", + "count": 1 + }, + { + "label": "Money 2020", + "count": 1 + }, + { + "label": "MWC/4yfn", + "count": 1 + }, + { + "label": "n/a", + "count": 1 + }, + { + "label": "NDC", + "count": 1 + }, + { + "label": "Nerdearla", + "count": 1 + }, + { + "label": "Next.js Conf", + "count": 1 + }, + { + "label": "No", + "count": 1 + }, + { + "label": "no one", + "count": 1 + }, + { + "label": "Non", + "count": 1 + }, + { + "label": "non-tech industry events", + "count": 1 + }, + { + "label": "None of them", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "NONE YET", + "count": 1 + }, + { + "label": "Nonr", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "not sure yet", + "count": 1 + }, + { + "label": "Nvidia", + "count": 1 + }, + { + "label": "Nvidia GTC", + "count": 1 + }, + { + "label": "NVidia GTC", + "count": 1 + }, + { + "label": "opensips / kamailio", + "count": 1 + }, + { + "label": "P2D2", + "count": 1 + }, + { + "label": "PGday Chicago", + "count": 1 + }, + { + "label": "Platzi Demo Day", + "count": 1 + }, + { + "label": "political events", + "count": 1 + }, + { + "label": "Propolys Demo day", + "count": 1 + }, + { + "label": "Pycon", + "count": 1 + }, + { + "label": "PyCon/PyData", + "count": 1 + }, + { + "label": "QCON", + "count": 1 + }, + { + "label": "Relativity Fest", + "count": 1 + }, + { + "label": "Riseup", + "count": 1 + }, + { + "label": "SaaSter", + "count": 1 + }, + { + "label": "Set", + "count": 1 + }, + { + "label": "SF Tech Week", + "count": 1 + }, + { + "label": "Ship", + "count": 1 + }, + { + "label": "Snowflake dev day", + "count": 1 + }, + { + "label": "Social media concentions/game conventions", + "count": 1 + }, + { + "label": "South Summit", + "count": 1 + }, + { + "label": "startup summit brasil", + "count": 1 + }, + { + "label": "Supabase Harare Meetup", + "count": 1 + }, + { + "label": "Supabase summit", + "count": 1 + }, + { + "label": "Svelte Summit", + "count": 1 + }, + { + "label": "Tableau Conference", + "count": 1 + }, + { + "label": "tech: Europe", + "count": 1 + }, + { + "label": "TED", + "count": 1 + }, + { + "label": "TribuIA Meetups", + "count": 1 + }, + { + "label": "Unrelated cybersecurity conferences", + "count": 1 + }, + { + "label": "Vercel conference", + "count": 1 + }, + { + "label": "VivaTech", + "count": 1 + }, + { + "label": "Voxel51", + "count": 1 + }, + { + "label": "WeAreDevelopers", + "count": 1 + }, + { + "label": "WeAreDevelopers Berlin and DevWorld Amsterdam", + "count": 1 + }, + { + "label": "web summit", + "count": 1 + }, + { + "label": "WWDC25", + "count": 1 + }, + { + "label": "x", + "count": 1 + }, + { + "label": "Yc ai startup school", + "count": 1 + }, + { + "label": "YC AI Startup School", + "count": 1 + }, + { + "label": "YC Startup School", + "count": 1 + }, + { + "label": "Yes", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|biggest_challenge|single|": { + "rows": [ + { + "label": "Customer acquisition", + "count": 657 + }, + { + "label": "Technical complexity", + "count": 486 + }, + { + "label": "Fundraising", + "count": 398 + }, + { + "label": "Product-market fit", + "count": 394 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 6 + }, + { + "label": "Scaling", + "count": 4 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "--", + "count": 1 + }, + { + "label": "aaa", + "count": 1 + }, + { + "label": "Adoption", + "count": 1 + }, + { + "label": "answering this again so i can provide email", + "count": 1 + }, + { + "label": "App development", + "count": 1 + }, + { + "label": "As an independent developer/student project, the biggest challenge is finding users and gaining traction.", + "count": 1 + }, + { + "label": "balancing growth", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "Building a solid foundation", + "count": 1 + }, + { + "label": "Building the site", + "count": 1 + }, + { + "label": "CASH FLOW MANAGEMENT", + "count": 1 + }, + { + "label": "co-founder challenges", + "count": 1 + }, + { + "label": "Cost", + "count": 1 + }, + { + "label": "Customer success and education", + "count": 1 + }, + { + "label": "Customers are devolving rapidly", + "count": 1 + }, + { + "label": "Dev capacity (to build product)", + "count": 1 + }, + { + "label": "developing as a side project", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Essas e outras por conta do mercado local.", + "count": 1 + }, + { + "label": "Expansion to mid market", + "count": 1 + }, + { + "label": "Finalizing a strategy and launching", + "count": 1 + }, + { + "label": "Finding investments", + "count": 1 + }, + { + "label": "Founder", + "count": 1 + }, + { + "label": "Getting from 0 to 1", + "count": 1 + }, + { + "label": "Getting started", + "count": 1 + }, + { + "label": "Getting started with all government compliance requirements", + "count": 1 + }, + { + "label": "Handling all-hats as a solopreneur", + "count": 1 + }, + { + "label": "It's a side-hustle from our main business", + "count": 1 + }, + { + "label": "keeping up with dev", + "count": 1 + }, + { + "label": "Lack of focus.", + "count": 1 + }, + { + "label": "Lack of processes", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "na", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "none - we're still in early R&D", + "count": 1 + }, + { + "label": "not sure i am allowed to share this", + "count": 1 + }, + { + "label": "Not yet launch still in development mode, but we already have a working integration", + "count": 1 + }, + { + "label": "Our biggest challenge right now is proving long-term retention and engagement in a category that’s emotionally important but often under-prioritized — relationship health. While early users love the concept, turning that initial interest into consistent usage and eventually monetization requires careful product iteration.", + "count": 1 + }, + { + "label": "Pricing", + "count": 1 + }, + { + "label": "Pricing our product", + "count": 1 + }, + { + "label": "Product has no moat. Competitors easily replicate it", + "count": 1 + }, + { + "label": "Regional language inclusion in the app", + "count": 1 + }, + { + "label": "Scale", + "count": 1 + }, + { + "label": "Seems the only problem I'm having is getting through this", + "count": 1 + }, + { + "label": "Shinny Objects Syndrome", + "count": 1 + }, + { + "label": "Shitty AI", + "count": 1 + }, + { + "label": "Still finding out", + "count": 1 + }, + { + "label": "Test-phase", + "count": 1 + }, + { + "label": "Testing in focus groups", + "count": 1 + }, + { + "label": "Time & manpower", + "count": 1 + }, + { + "label": "Time as a sideproject", + "count": 1 + }, + { + "label": "Time, I am the main developer", + "count": 1 + }, + { + "label": "Time. We run an agency to make money to allow us to bootstrap, our biggest limitation is time at the moment", + "count": 1 + }, + { + "label": "Um beta testing", + "count": 1 + }, + { + "label": "User engagement", + "count": 1 + }, + { + "label": "velocity", + "count": 1 + }, + { + "label": "Volume of work with small team", + "count": 1 + }, + { + "label": "We have a lot of demmand but we don´t have enough people to onboarding them all at once, lack of tutorials and CS tools", + "count": 1 + }, + { + "label": "We're iterating quickly to align our AI-driven SketchUp modeling system with the diverse, localized requirements of interior and architectural regulations across regions. Ensuring that AI-generated designs are both compliant and practically executable is a core part of our product-market fit journey.", + "count": 1 + }, + { + "label": "Working with few resources but committed to bootstrapping", + "count": 1 + }, + { + "label": "x", + "count": 1 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|[[\"role\",\"Founder / Co-founder\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 974 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 409 + }, + { + "label": "Pessimistic", + "count": 225 + } + ], + "respondentCount": 1608 + }, + "2025|world_outlook|single|[[\"role\",[\"Engineer\",\"Product Management\",\"Marketing\",\"Sales\",\"Legal or Ops\",\"Other\"]]]": { + "rows": [ + { + "label": "Optimistic", + "count": 251 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 169 + }, + { + "label": "Pessimistic", + "count": 82 + } + ], + "respondentCount": 502 + }, + "2025|world_outlook|single|[[\"ai_generated_codebase_percent\",\"76-100%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|[[\"ai_generated_codebase_percent\",\"0%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|[[\"ai_generated_codebase_percent\",\"1-10%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|[[\"ai_generated_codebase_percent\",\"11-25%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|[[\"ai_generated_codebase_percent\",\"26-50%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2025|world_outlook|single|[[\"ai_generated_codebase_percent\",\"51-75%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1225 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 578 + }, + { + "label": "Pessimistic", + "count": 307 + } + ], + "respondentCount": 2110 + }, + "2026|ai_generated_codebase_percent|single|": { + "rows": [ + { + "label": "76-100%", + "count": 1105 + }, + { + "label": "51-75%", + "count": 585 + }, + { + "label": "26-50%", + "count": 445 + }, + { + "label": "11-25%", + "count": 301 + }, + { + "label": "1-10%", + "count": 240 + }, + { + "label": "0%", + "count": 63 + } + ], + "respondentCount": 2739 + }, + "2026|ai_coding_tools|multi|": { + "rows": [ + { + "label": "Claude Code", + "count": 1717 + }, + { + "label": "Visual Studio Code", + "count": 1209 + }, + { + "label": "Cursor", + "count": 837 + }, + { + "label": "Antigravity", + "count": 610 + }, + { + "label": "Lovable", + "count": 409 + }, + { + "label": "ChatGPT / Codex", + "count": 356 + }, + { + "label": "v0", + "count": 191 + }, + { + "label": "Windsurf", + "count": 131 + }, + { + "label": "Bolt", + "count": 116 + }, + { + "label": "Replit Agent", + "count": 103 + }, + { + "label": "None", + "count": 64 + }, + { + "label": "Cline", + "count": 56 + }, + { + "label": "Trae", + "count": 54 + }, + { + "label": "Devin", + "count": 21 + }, + { + "label": "Gemini", + "count": 21 + }, + { + "label": "Aider", + "count": 15 + }, + { + "label": "OpenCode", + "count": 14 + }, + { + "label": "Tempo", + "count": 13 + }, + { + "label": "Opencode", + "count": 9 + }, + { + "label": "Gemini CLI", + "count": 7 + }, + { + "label": "Zed", + "count": 7 + }, + { + "label": "OpenAI Codex", + "count": 6 + }, + { + "label": "Github Copilot", + "count": 5 + }, + { + "label": "Base44", + "count": 4 + }, + { + "label": "Claude", + "count": 4 + }, + { + "label": "Copilot", + "count": 4 + }, + { + "label": "Deepseek", + "count": 4 + }, + { + "label": "GitHub Copilot", + "count": 4 + }, + { + "label": "Google AI Studio", + "count": 4 + }, + { + "label": "Kiro", + "count": 4 + }, + { + "label": "opencode", + "count": 4 + }, + { + "label": "Conductor", + "count": 3 + }, + { + "label": "Grok", + "count": 3 + }, + { + "label": "none", + "count": 3 + }, + { + "label": "Perplexity", + "count": 3 + }, + { + "label": "Rork", + "count": 3 + }, + { + "label": "Stitch", + "count": 3 + }, + { + "label": "Abacus", + "count": 2 + }, + { + "label": "ChatGPT Codex", + "count": 2 + }, + { + "label": "Codex CLI", + "count": 2 + }, + { + "label": "Dyad", + "count": 2 + }, + { + "label": "Emergent", + "count": 2 + }, + { + "label": "Enter.pro", + "count": 2 + }, + { + "label": "Figma Make", + "count": 2 + }, + { + "label": "Flutterflow", + "count": 2 + }, + { + "label": "GitHub copilot", + "count": 2 + }, + { + "label": "Google ai studio", + "count": 2 + }, + { + "label": "GPT", + "count": 2 + }, + { + "label": "Kilo Code", + "count": 2 + }, + { + "label": "Replit", + "count": 2 + }, + { + "label": "Rocket.new", + "count": 2 + }, + { + "label": "zed", + "count": 2 + }, + { + "label": "Ai studio", + "count": 1 + }, + { + "label": "Ai studio google", + "count": 1 + }, + { + "label": "AI wastes more time that it saves", + "count": 1 + }, + { + "label": "aistudio", + "count": 1 + }, + { + "label": "AIStudio", + "count": 1 + }, + { + "label": "Alpha Dualite", + "count": 1 + }, + { + "label": "Amazon Q developer", + "count": 1 + }, + { + "label": "amp", + "count": 1 + }, + { + "label": "Android Studio", + "count": 1 + }, + { + "label": "AntiGravity", + "count": 1 + }, + { + "label": "Augment", + "count": 1 + }, + { + "label": "Augment code", + "count": 1 + }, + { + "label": "Beyond Better", + "count": 1 + }, + { + "label": "Blackbox", + "count": 1 + }, + { + "label": "Bubble.io", + "count": 1 + }, + { + "label": "BUILDER.IO", + "count": 1 + }, + { + "label": "chat", + "count": 1 + }, + { + "label": "Chat GPT", + "count": 1 + }, + { + "label": "Chat GPT and Gemini", + "count": 1 + }, + { + "label": "ChatGPT / Claude (Anthropic API)", + "count": 1 + }, + { + "label": "ChatGPT & Copilot", + "count": 1 + }, + { + "label": "ChatGPT 5 4", + "count": 1 + }, + { + "label": "ChatGPT and Gemini", + "count": 1 + }, + { + "label": "Chats", + "count": 1 + }, + { + "label": "claude", + "count": 1 + }, + { + "label": "CLAUDE", + "count": 1 + }, + { + "label": "Claude (exclusivley through the browser)", + "count": 1 + }, + { + "label": "Claude and gemini for code and debug", + "count": 1 + }, + { + "label": "Claude Cowork", + "count": 1 + }, + { + "label": "Claude Desktop", + "count": 1 + }, + { + "label": "Co-pilot", + "count": 1 + }, + { + "label": "codebuddy by Tencent", + "count": 1 + }, + { + "label": "Codex / ChatGPT", + "count": 1 + }, + { + "label": "codex cli", + "count": 1 + }, + { + "label": "Codex Open Ai", + "count": 1 + }, + { + "label": "Codex OpenAI", + "count": 1 + }, + { + "label": "Codex OpenCode", + "count": 1 + }, + { + "label": "Codex(GPT-5.4/5.5))", + "count": 1 + }, + { + "label": "copilot", + "count": 1 + }, + { + "label": "Copilot cli", + "count": 1 + }, + { + "label": "Copilot Cli", + "count": 1 + }, + { + "label": "Copilot Github", + "count": 1 + }, + { + "label": "Copilot(rarely if never)", + "count": 1 + }, + { + "label": "Copilote", + "count": 1 + }, + { + "label": "Cotyper", + "count": 1 + }, + { + "label": "currently 60% of above generate 5 to 14 times the versions of code before meeting our minimum secure coding standards.", + "count": 1 + }, + { + "label": "deek seek", + "count": 1 + }, + { + "label": "Deep seek chat gpt copilot ect", + "count": 1 + }, + { + "label": "deepseek", + "count": 1 + }, + { + "label": "DeepSeek", + "count": 1 + }, + { + "label": "deepseek build free", + "count": 1 + }, + { + "label": "Dreamflow", + "count": 1 + }, + { + "label": "DreamFlow", + "count": 1 + }, + { + "label": "emergent", + "count": 1 + }, + { + "label": "exploring constantly to keep up with how fast this industry changes and learning how much I didn't previously know.", + "count": 1 + }, + { + "label": "Famous ai", + "count": 1 + }, + { + "label": "Gastown", + "count": 1 + }, + { + "label": "gemini", + "count": 1 + }, + { + "label": "GEMINI", + "count": 1 + }, + { + "label": "Gemini canvas", + "count": 1 + }, + { + "label": "Gemini for arch review", + "count": 1 + }, + { + "label": "Gemini in Android Studio", + "count": 1 + }, + { + "label": "Gemini pro", + "count": 1 + }, + { + "label": "Gemini Tools", + "count": 1 + }, + { + "label": "Gemini Ultra / Pro", + "count": 1 + }, + { + "label": "Gemini.", + "count": 1 + }, + { + "label": "Gemma 4 (Local)", + "count": 1 + }, + { + "label": "Gipity", + "count": 1 + }, + { + "label": "GitHub Co-pilot", + "count": 1 + }, + { + "label": "Github copilot", + "count": 1 + }, + { + "label": "Github CoPilot", + "count": 1 + }, + { + "label": "GitHub CoPilot", + "count": 1 + }, + { + "label": "Github Copilot (Student)", + "count": 1 + }, + { + "label": "GitHub Copilot + OpenAI Codex + JetBrains Webstorm AI", + "count": 1 + }, + { + "label": "GitHub Copilot Agent", + "count": 1 + }, + { + "label": "Github Copilot CLI", + "count": 1 + }, + { + "label": "GLM-4", + "count": 1 + }, + { + "label": "Google Ai Studio", + "count": 1 + }, + { + "label": "Google AI studio", + "count": 1 + }, + { + "label": "Google Ai Studio (Gemini)", + "count": 1 + }, + { + "label": "Google AiStudio + Supabase + vercel", + "count": 1 + }, + { + "label": "Google cli", + "count": 1 + }, + { + "label": "Google Gemini Pro", + "count": 1 + }, + { + "label": "Google Stitch", + "count": 1 + }, + { + "label": "gpt", + "count": 1 + }, + { + "label": "Gpt", + "count": 1 + }, + { + "label": "GPT 5.4 CodeX", + "count": 1 + }, + { + "label": "GPT-5.2", + "count": 1 + }, + { + "label": "gpt-codex", + "count": 1 + }, + { + "label": "grok", + "count": 1 + }, + { + "label": "GROK / Co pilot / GPT / CODEX / PERPLEXITY", + "count": 1 + }, + { + "label": "Grok AI", + "count": 1 + }, + { + "label": "Hapi (fork of Happy, use my own fork of it for full claude code conversational voice).", + "count": 1 + }, + { + "label": "Huawei Mindspore CAN", + "count": 1 + }, + { + "label": "I'm not using AI yet", + "count": 1 + }, + { + "label": "In 4th month of evaluating Models", + "count": 1 + }, + { + "label": "Intellijea Tools", + "count": 1 + }, + { + "label": "Jetbrains", + "count": 1 + }, + { + "label": "JetBrains", + "count": 1 + }, + { + "label": "Jules", + "count": 1 + }, + { + "label": "Junie", + "count": 1 + }, + { + "label": "kilo", + "count": 1 + }, + { + "label": "kilocode", + "count": 1 + }, + { + "label": "kimi", + "count": 1 + }, + { + "label": "Kimi", + "count": 1 + }, + { + "label": "kiro", + "count": 1 + }, + { + "label": "Kiro Code", + "count": 1 + }, + { + "label": "LMStudio - Own Model", + "count": 1 + }, + { + "label": "Manus", + "count": 1 + }, + { + "label": "maybe if I'm able to leverage these projects that I have someday", + "count": 1 + }, + { + "label": "Meta and deepseek", + "count": 1 + }, + { + "label": "Nano Banana", + "count": 1 + }, + { + "label": "Normal Claude and Normal ChatGPT", + "count": 1 + }, + { + "label": "notepad++", + "count": 1 + }, + { + "label": "open code", + "count": 1 + }, + { + "label": "Open Code", + "count": 1 + }, + { + "label": "openai API", + "count": 1 + }, + { + "label": "OpenAI codex", + "count": 1 + }, + { + "label": "openclaw", + "count": 1 + }, + { + "label": "Opencode and Kilo", + "count": 1 + }, + { + "label": "Orchids", + "count": 1 + }, + { + "label": "Orchids IDE", + "count": 1 + }, + { + "label": "perplexity", + "count": 1 + }, + { + "label": "Pi", + "count": 1 + }, + { + "label": "Plan to move to local Opensource models or Antigravity", + "count": 1 + }, + { + "label": "Polsia", + "count": 1 + }, + { + "label": "qoder", + "count": 1 + }, + { + "label": "Readdy", + "count": 1 + }, + { + "label": "Repoprompt", + "count": 1 + }, + { + "label": "rest of code we write ourself.", + "count": 1 + }, + { + "label": "Roo code", + "count": 1 + }, + { + "label": "Roo Code", + "count": 1 + }, + { + "label": "RooCode", + "count": 1 + }, + { + "label": "Rork and ChatGPT", + "count": 1 + }, + { + "label": "Rovo dev", + "count": 1 + }, + { + "label": "Scratch", + "count": 1 + }, + { + "label": "Self developed multi agent coding Council", + "count": 1 + }, + { + "label": "Shogo", + "count": 1 + }, + { + "label": "Softgen", + "count": 1 + }, + { + "label": "sometimes Chat/Grok/Claude for ideation or small projects to conserve tokens", + "count": 1 + }, + { + "label": "Strawberry AI", + "count": 1 + }, + { + "label": "T3 Code", + "count": 1 + }, + { + "label": "Traycer and OpenCode", + "count": 1 + }, + { + "label": "Trying codex after having used claude code", + "count": 1 + }, + { + "label": "Various LLMs", + "count": 1 + }, + { + "label": "Warp", + "count": 1 + }, + { + "label": "warp ai", + "count": 1 + }, + { + "label": "We use deepseek r1 reasoning model for coding purposes", + "count": 1 + }, + { + "label": "Xcode Agent", + "count": 1 + }, + { + "label": "Yet to decide as the project development has not yet reached that stage.", + "count": 1 + }, + { + "label": "Z.AI", + "count": 1 + }, + { + "label": "zed agent", + "count": 1 + }, + { + "label": "Zed IDE", + "count": 1 + }, + { + "label": "Zed. Other (AI assistants integrated in VS Code)", + "count": 1 + }, + { + "label": "Zed.dev", + "count": 1 + }, + { + "label": "люси", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|databases|multi|": { + "rows": [ + { + "label": "Supabase", + "count": 2191 + }, + { + "label": "PostgreSQL", + "count": 980 + }, + { + "label": "Redis", + "count": 271 + }, + { + "label": "MySQL", + "count": 227 + }, + { + "label": "Firebase", + "count": 218 + }, + { + "label": "SQLite", + "count": 205 + }, + { + "label": "MongoDB", + "count": 177 + }, + { + "label": "Neon", + "count": 63 + }, + { + "label": "DynamoDB", + "count": 41 + }, + { + "label": "ClickHouse", + "count": 39 + }, + { + "label": "Convex", + "count": 29 + }, + { + "label": "PlanetScale", + "count": 20 + }, + { + "label": "CockroachDB", + "count": 19 + }, + { + "label": "Turso", + "count": 15 + }, + { + "label": "MariaDB", + "count": 4 + }, + { + "label": "Cloudflare D1", + "count": 3 + }, + { + "label": "none", + "count": 3 + }, + { + "label": "Elasticsearch", + "count": 2 + }, + { + "label": "Neo4j", + "count": 2 + }, + { + "label": "SQL Server", + "count": 2 + }, + { + "label": "airtable", + "count": 1 + }, + { + "label": "Antigravit", + "count": 1 + }, + { + "label": "Any database. as long its support https", + "count": 1 + }, + { + "label": "appwrite", + "count": 1 + }, + { + "label": "Appwrite", + "count": 1 + }, + { + "label": "AWS", + "count": 1 + }, + { + "label": "but i can switch to supabse if i get some support", + "count": 1 + }, + { + "label": "but Redis soon", + "count": 1 + }, + { + "label": "CDF", + "count": 1 + }, + { + "label": "cells", + "count": 1 + }, + { + "label": "Claude Code", + "count": 1 + }, + { + "label": "CloudDB on Scratch", + "count": 1 + }, + { + "label": "Cloudflare D1 (SQLite)", + "count": 1 + }, + { + "label": "Cloudflare R2", + "count": 1 + }, + { + "label": "Cosmos DB", + "count": 1 + }, + { + "label": "DatoCMS", + "count": 1 + }, + { + "label": "Dyad", + "count": 1 + }, + { + "label": "Elastic Search", + "count": 1 + }, + { + "label": "Elasticearch", + "count": 1 + }, + { + "label": "ElasticSearch", + "count": 1 + }, + { + "label": "ERP Systems Integration: integrates directly with existing enterprise systems", + "count": 1 + }, + { + "label": "gcr", + "count": 1 + }, + { + "label": "ghost.build", + "count": 1 + }, + { + "label": "GhostDB for local development", + "count": 1 + }, + { + "label": "google app script", + "count": 1 + }, + { + "label": "H6", + "count": 1 + }, + { + "label": "influxdb", + "count": 1 + }, + { + "label": "Instantdb", + "count": 1 + }, + { + "label": "it will connect", + "count": 1 + }, + { + "label": "LanceDB", + "count": 1 + }, + { + "label": "local hosted supabase", + "count": 1 + }, + { + "label": "Lovable Cloud", + "count": 1 + }, + { + "label": "Lovable.dev", + "count": 1 + }, + { + "label": "may Add or change aswel", + "count": 1 + }, + { + "label": "milvor", + "count": 1 + }, + { + "label": "mottor", + "count": 1 + }, + { + "label": "MS Sql", + "count": 1 + }, + { + "label": "MS-SQL", + "count": 1 + }, + { + "label": "MSSQL", + "count": 1 + }, + { + "label": "n8n (but will change soon)", + "count": 1 + }, + { + "label": "Neo4J", + "count": 1 + }, + { + "label": "Netlify", + "count": 1 + }, + { + "label": "No database — static site; data managed via ActiveCampaign and SamCart", + "count": 1 + }, + { + "label": "no database yet", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "Not really but it’s functional", + "count": 1 + }, + { + "label": "Not sure", + "count": 1 + }, + { + "label": "Not yet", + "count": 1 + }, + { + "label": "Obsidian Wiki", + "count": 1 + }, + { + "label": "Oracle PL/SQL", + "count": 1 + }, + { + "label": "Pinecone", + "count": 1 + }, + { + "label": "Postgres", + "count": 1 + }, + { + "label": "posthog", + "count": 1 + }, + { + "label": "Posthog", + "count": 1 + }, + { + "label": "PowerSync", + "count": 1 + }, + { + "label": "Qdrant", + "count": 1 + }, + { + "label": "rather than replacing them. DataZen & MemoryZen: These modules within the Zen Platform(In-house platform) manage the connection to business data and ensure the AI models retain memory and context across interactions.", + "count": 1 + }, + { + "label": "remote fire base state", + "count": 1 + }, + { + "label": "RocksDB", + "count": 1 + }, + { + "label": "S3 Tables", + "count": 1 + }, + { + "label": "Sheets", + "count": 1 + }, + { + "label": "Softr", + "count": 1 + }, + { + "label": "Sql server", + "count": 1 + }, + { + "label": "SQL Server T-SQL", + "count": 1 + }, + { + "label": "such as SAP Ariba", + "count": 1 + }, + { + "label": "T-SQL", + "count": 1 + }, + { + "label": "Tembor", + "count": 1 + }, + { + "label": "The Odds API", + "count": 1 + }, + { + "label": "Tiger DB", + "count": 1 + }, + { + "label": "TinyBird for analytics", + "count": 1 + }, + { + "label": "to ingest data for procurement and spend analysis", + "count": 1 + }, + { + "label": "Unsure", + "count": 1 + }, + { + "label": "vector db", + "count": 1 + }, + { + "label": "vercel", + "count": 1 + }, + { + "label": "We are building one are self", + "count": 1 + }, + { + "label": "We use our own", + "count": 1 + }, + { + "label": "we will incoprate redis when we scale", + "count": 1 + }, + { + "label": "Xata", + "count": 1 + }, + { + "label": "ziliz", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|building_multi_agent_systems|single|": { + "rows": [ + { + "label": "Planning to", + "count": 493 + }, + { + "label": "Yes, in production", + "count": 347 + }, + { + "label": "Yes, in development", + "count": 295 + }, + { + "label": "No", + "count": 227 + }, + { + "label": "Not sure what this means", + "count": 58 + } + ], + "respondentCount": 1420 + }, + "2026|sales_tools|multi|": { + "rows": [ + { + "label": "We don’t have a formal CRM or sales tool yet", + "count": 510 + }, + { + "label": "Google Sheets", + "count": 226 + }, + { + "label": "Notion / Airtable", + "count": 136 + }, + { + "label": "HubSpot", + "count": 106 + }, + { + "label": "Salesforce", + "count": 42 + }, + { + "label": "Pipedrive", + "count": 24 + }, + { + "label": "Close.com", + "count": 20 + }, + { + "label": "Attio", + "count": 10 + }, + { + "label": "Custom", + "count": 3 + }, + { + "label": "Monday.com", + "count": 3 + }, + { + "label": "Clay", + "count": 2 + }, + { + "label": "ClickUp", + "count": 2 + }, + { + "label": "Custom CRM", + "count": 2 + }, + { + "label": "Odoo", + "count": 2 + }, + { + "label": "RD Station", + "count": 2 + }, + { + "label": "Zoho", + "count": 2 + }, + { + "label": "Zoho CRM", + "count": 2 + }, + { + "label": "\"Custom-built CRM dashboard integrated within our Supabase backend to track lead diagnostics and client ROI directly.\"", + "count": 1 + }, + { + "label": "allowing us to manage leads", + "count": 1 + }, + { + "label": "and B2B partnerships with real-time product data", + "count": 1 + }, + { + "label": "Antigravity and supabase", + "count": 1 + }, + { + "label": "Attractwell", + "count": 1 + }, + { + "label": "baltanor.com", + "count": 1 + }, + { + "label": "Bitrix", + "count": 1 + }, + { + "label": "Brevo", + "count": 1 + }, + { + "label": "building our own custom crm", + "count": 1 + }, + { + "label": "Built my own", + "count": 1 + }, + { + "label": "Ccdsuite.com", + "count": 1 + }, + { + "label": "chatgpt para crear pitch junto con notebooklm para avanzar", + "count": 1 + }, + { + "label": "clickup", + "count": 1 + }, + { + "label": "Clio Grow", + "count": 1 + }, + { + "label": "crm", + "count": 1 + }, + { + "label": "Cue.ai", + "count": 1 + }, + { + "label": "custom", + "count": 1 + }, + { + "label": "Custom Build All-in-oNE CRM", + "count": 1 + }, + { + "label": "Custom built CRM", + "count": 1 + }, + { + "label": "Custom built from my Supabase database because it's a natural result of my workflow", + "count": 1 + }, + { + "label": "Custom built in-house", + "count": 1 + }, + { + "label": "Custom built solution", + "count": 1 + }, + { + "label": "custom crm", + "count": 1 + }, + { + "label": "Custom Dashboard", + "count": 1 + }, + { + "label": "Custom flow", + "count": 1 + }, + { + "label": "Custom internal made tool", + "count": 1 + }, + { + "label": "custom made", + "count": 1 + }, + { + "label": "Custom made outreach tool with Claude code", + "count": 1 + }, + { + "label": "Custom tool", + "count": 1 + }, + { + "label": "Custom-built", + "count": 1 + }, + { + "label": "Custom-built CRM (in-house)", + "count": 1 + }, + { + "label": "Custom-built CRM (NexoX) integrated directly into our platform", + "count": 1 + }, + { + "label": "Excel", + "count": 1 + }, + { + "label": "Folk", + "count": 1 + }, + { + "label": "Freshsales", + "count": 1 + }, + { + "label": "GitHub Projects (Kanban + Tables)", + "count": 1 + }, + { + "label": "Go high level", + "count": 1 + }, + { + "label": "Gohighlevel", + "count": 1 + }, + { + "label": "Hacked own local tool", + "count": 1 + }, + { + "label": "HighLevel", + "count": 1 + }, + { + "label": "Homegrown crm", + "count": 1 + }, + { + "label": "Homemade CRM", + "count": 1 + }, + { + "label": "I’m only working with a few family offices right now. I have access to a bunch through relationships I have with many family offices.", + "count": 1 + }, + { + "label": "I’ve built my own custom dashboard but I’m also using sales force and actually love ut", + "count": 1 + }, + { + "label": "Idk", + "count": 1 + }, + { + "label": "Ill build one", + "count": 1 + }, + { + "label": "in house", + "count": 1 + }, + { + "label": "In house built CRM", + "count": 1 + }, + { + "label": "in-app CRM", + "count": 1 + }, + { + "label": "In-house built solution", + "count": 1 + }, + { + "label": "inbuild dashboars", + "count": 1 + }, + { + "label": "Inside system admin(s) of EduCore UI", + "count": 1 + }, + { + "label": "Instantly.ai - Experimenting", + "count": 1 + }, + { + "label": "Internal admin tools and Discord", + "count": 1 + }, + { + "label": "investors", + "count": 1 + }, + { + "label": "Invoice Ninja", + "count": 1 + }, + { + "label": "junto con whatsap y google sheets para llevar control y seguimiento", + "count": 1 + }, + { + "label": "Laravel + Filament", + "count": 1 + }, + { + "label": "Linear", + "count": 1 + }, + { + "label": "Microsoft Excel", + "count": 1 + }, + { + "label": "mottor", + "count": 1 + }, + { + "label": "My own CRM (created with lovable)", + "count": 1 + }, + { + "label": "My personal CRM", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "Nectar CRM", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "Notion", + "count": 1 + }, + { + "label": "oddly enough", + "count": 1 + }, + { + "label": "odoo", + "count": 1 + }, + { + "label": "Our own custom build CRM", + "count": 1 + }, + { + "label": "Own built CRM tool inside application", + "count": 1 + }, + { + "label": "Own CRM", + "count": 1 + }, + { + "label": "own product", + "count": 1 + }, + { + "label": "own system", + "count": 1 + }, + { + "label": "own tool", + "count": 1 + }, + { + "label": "Paper", + "count": 1 + }, + { + "label": "Pen", + "count": 1 + }, + { + "label": "product-led growth", + "count": 1 + }, + { + "label": "Quickbooks", + "count": 1 + }, + { + "label": "rd station", + "count": 1 + }, + { + "label": "RevenueCat", + "count": 1 + }, + { + "label": "Scot Moz Command Cenyer", + "count": 1 + }, + { + "label": "Script scraping para paginas", + "count": 1 + }, + { + "label": "Self built form with stripe webhook connection", + "count": 1 + }, + { + "label": "self expanision", + "count": 1 + }, + { + "label": "simple tooling", + "count": 1 + }, + { + "label": "smart contract", + "count": 1 + }, + { + "label": "Spreadsheets", + "count": 1 + }, + { + "label": "Stripe", + "count": 1 + }, + { + "label": "Stripe Dashboard & Custom SQL dashboards (Supabase)", + "count": 1 + }, + { + "label": "stripe/obsidian", + "count": 1 + }, + { + "label": "Tencent Docs", + "count": 1 + }, + { + "label": "There is a Claude-powered pipeline in the app", + "count": 1 + }, + { + "label": "today I dont need any sales tool.", + "count": 1 + }, + { + "label": "Topline", + "count": 1 + }, + { + "label": "Twenty", + "count": 1 + }, + { + "label": "twenty custom", + "count": 1 + }, + { + "label": "TwentyCRM", + "count": 1 + }, + { + "label": "We built our own CRM", + "count": 1 + }, + { + "label": "We created a custom CRM for our platform", + "count": 1 + }, + { + "label": "We made our own CRM", + "count": 1 + }, + { + "label": "We're handling it through our own product", + "count": 1 + }, + { + "label": "Whaticket for WhatsApp management integrated with custom AI agents", + "count": 1 + }, + { + "label": "Zairocrm", + "count": 1 + }, + { + "label": "zcrm custom built crm", + "count": 1 + }, + { + "label": "zoho", + "count": 1 + }, + { + "label": "Zoho Bigin", + "count": 1 + }, + { + "label": "Zorv ERP", + "count": 1 + } + ], + "respondentCount": 967 + }, + "2026|founder_count|single|": { + "rows": [ + { + "label": "1", + "count": 1652 + }, + { + "label": "2", + "count": 775 + }, + { + "label": "3", + "count": 193 + }, + { + "label": "4+", + "count": 79 + } + ], + "respondentCount": 2699 + }, + "2026|founders_are_technical|boolean|": { + "rows": [ + { + "label": "FALSE", + "count": 576 + }, + { + "label": "TRUE", + "count": 2043 + } + ], + "respondentCount": 2619 + }, + "2026|previous_company|boolean|": { + "rows": [ + { + "label": "FALSE", + "count": 1695 + }, + { + "label": "TRUE", + "count": 914 + } + ], + "respondentCount": 2609 + }, + "2026|person_age|single|": { + "rows": [ + { + "label": "22–29", + "count": 876 + }, + { + "label": "30–39", + "count": 668 + }, + { + "label": "18–21", + "count": 549 + }, + { + "label": "40–49", + "count": 385 + }, + { + "label": "50–59", + "count": 203 + }, + { + "label": "60+", + "count": 58 + } + ], + "respondentCount": 2739 + }, + "2026|location|single|": { + "rows": [ + { + "label": "North America", + "count": 774 + }, + { + "label": "Europe", + "count": 772 + }, + { + "label": "Asia", + "count": 477 + }, + { + "label": "Africa", + "count": 234 + }, + { + "label": "Remote", + "count": 193 + }, + { + "label": "South America", + "count": 164 + }, + { + "label": "Oceania", + "count": 76 + }, + { + "label": "Middle East", + "count": 49 + } + ], + "respondentCount": 2739 + }, + "2026|location_north_america|single|[[\"location\",\"North America\"]]": { + "rows": [ + { + "label": "San Francisco Bay Area", + "count": 69 + }, + { + "label": "New York City", + "count": 63 + }, + { + "label": "Toronto", + "count": 34 + }, + { + "label": "Austin", + "count": 21 + }, + { + "label": "Chicago", + "count": 21 + }, + { + "label": "Seattle", + "count": 19 + }, + { + "label": "Denver", + "count": 17 + }, + { + "label": "Los Angeles", + "count": 16 + }, + { + "label": "Boston", + "count": 14 + }, + { + "label": "Atlanta", + "count": 11 + }, + { + "label": "Canada", + "count": 10 + }, + { + "label": "Florida", + "count": 10 + }, + { + "label": "Dallas", + "count": 9 + }, + { + "label": "Montreal", + "count": 9 + }, + { + "label": "Raleigh", + "count": 9 + }, + { + "label": "Calgary", + "count": 8 + }, + { + "label": "Minneapolis", + "count": 8 + }, + { + "label": "Detroit", + "count": 7 + }, + { + "label": "Phoenix", + "count": 7 + }, + { + "label": "Utah", + "count": 7 + }, + { + "label": "Vancouver", + "count": 7 + }, + { + "label": "Charlotte", + "count": 6 + }, + { + "label": "Colorado", + "count": 6 + }, + { + "label": "Houston", + "count": 6 + }, + { + "label": "Indianapolis", + "count": 6 + }, + { + "label": "Las Vegas", + "count": 6 + }, + { + "label": "Mexico City", + "count": 6 + }, + { + "label": "Philadelphia", + "count": 6 + }, + { + "label": "Salt Lake City", + "count": 6 + }, + { + "label": "San Diego", + "count": 6 + }, + { + "label": "Miami", + "count": 5 + }, + { + "label": "Nashville", + "count": 5 + }, + { + "label": "New Jersey", + "count": 5 + }, + { + "label": "Orlando", + "count": 5 + }, + { + "label": "Pittsburgh", + "count": 5 + }, + { + "label": "Virginia", + "count": 5 + }, + { + "label": "Baltimore", + "count": 4 + }, + { + "label": "Cleveland", + "count": 4 + }, + { + "label": "Mexico", + "count": 4 + }, + { + "label": "North Carolina", + "count": 4 + }, + { + "label": "Vermont", + "count": 4 + }, + { + "label": "Columbus OH", + "count": 3 + }, + { + "label": "Indiana", + "count": 3 + }, + { + "label": "Kansas City", + "count": 3 + }, + { + "label": "Minnesota", + "count": 3 + }, + { + "label": "Monterrey, Mexico", + "count": 3 + }, + { + "label": "Oregon", + "count": 3 + }, + { + "label": "Pennsylvania", + "count": 3 + }, + { + "label": "Portland", + "count": 3 + }, + { + "label": "Raleigh, NC", + "count": 3 + }, + { + "label": "Tampa", + "count": 3 + }, + { + "label": "Ann Arbor", + "count": 2 + }, + { + "label": "Arizona", + "count": 2 + }, + { + "label": "Cincinnati", + "count": 2 + }, + { + "label": "Columbus, OH", + "count": 2 + }, + { + "label": "Connecticut", + "count": 2 + }, + { + "label": "Delaware", + "count": 2 + }, + { + "label": "Delware", + "count": 2 + }, + { + "label": "DFW", + "count": 2 + }, + { + "label": "Edmonton", + "count": 2 + }, + { + "label": "Exton, PA", + "count": 2 + }, + { + "label": "Hamilton", + "count": 2 + }, + { + "label": "Irvine", + "count": 2 + }, + { + "label": "Kansas", + "count": 2 + }, + { + "label": "LA", + "count": 2 + }, + { + "label": "Madison, WI", + "count": 2 + }, + { + "label": "México", + "count": 2 + }, + { + "label": "Muscatine", + "count": 2 + }, + { + "label": "Nevada", + "count": 2 + }, + { + "label": "New York State", + "count": 2 + }, + { + "label": "Ohio", + "count": 2 + }, + { + "label": "Ottawa", + "count": 2 + }, + { + "label": "Richmond", + "count": 2 + }, + { + "label": "Rochester NY", + "count": 2 + }, + { + "label": "Sacramento", + "count": 2 + }, + { + "label": "San Antonio", + "count": 2 + }, + { + "label": "San Juan", + "count": 2 + }, + { + "label": "Texas", + "count": 2 + }, + { + "label": "Vancouver, WA", + "count": 2 + }, + { + "label": "Washington DC", + "count": 2 + }, + { + "label": "Wisconsin", + "count": 2 + }, + { + "label": "Wyoming", + "count": 2 + }, + { + "label": "3 Hours from Austin in 78382", + "count": 1 + }, + { + "label": "Akron", + "count": 1 + }, + { + "label": "Alabama Gulf Coast", + "count": 1 + }, + { + "label": "Alaska", + "count": 1 + }, + { + "label": "Alexandria, VA", + "count": 1 + }, + { + "label": "Amarillo Texas", + "count": 1 + }, + { + "label": "Andrews, SC", + "count": 1 + }, + { + "label": "Arkansas", + "count": 1 + }, + { + "label": "Athens, GA", + "count": 1 + }, + { + "label": "Auburn", + "count": 1 + }, + { + "label": "Auburn, AL", + "count": 1 + }, + { + "label": "Aurora, Illinois", + "count": 1 + }, + { + "label": "Barrie, Ontario, Canada", + "count": 1 + }, + { + "label": "Baton Rouge", + "count": 1 + }, + { + "label": "Bentonville AR", + "count": 1 + }, + { + "label": "Bethlehem PA", + "count": 1 + }, + { + "label": "birmingham", + "count": 1 + }, + { + "label": "Boise", + "count": 1 + }, + { + "label": "Boise Metro", + "count": 1 + }, + { + "label": "Boone", + "count": 1 + }, + { + "label": "Boulder, CO", + "count": 1 + }, + { + "label": "Brasil", + "count": 1 + }, + { + "label": "BTV", + "count": 1 + }, + { + "label": "Buffalo, NY", + "count": 1 + }, + { + "label": "Burlington VT", + "count": 1 + }, + { + "label": "Cancun", + "count": 1 + }, + { + "label": "Canton", + "count": 1 + }, + { + "label": "Canton NY", + "count": 1 + }, + { + "label": "Casper, WY", + "count": 1 + }, + { + "label": "Cedar Rapids", + "count": 1 + }, + { + "label": "Central Kentucky", + "count": 1 + }, + { + "label": "Charleston, SC", + "count": 1 + }, + { + "label": "Charlotte NC", + "count": 1 + }, + { + "label": "Charlotte, NC", + "count": 1 + }, + { + "label": "Charlottesville VA", + "count": 1 + }, + { + "label": "Charlottetown", + "count": 1 + }, + { + "label": "Chattanooga, TN", + "count": 1 + }, + { + "label": "Chihuahua/Mexico", + "count": 1 + }, + { + "label": "Clearwater", + "count": 1 + }, + { + "label": "Clemmons", + "count": 1 + }, + { + "label": "Columbia, MO", + "count": 1 + }, + { + "label": "D.C.", + "count": 1 + }, + { + "label": "Dallas Metro Area", + "count": 1 + }, + { + "label": "Dallas, TX", + "count": 1 + }, + { + "label": "Danville, IL", + "count": 1 + }, + { + "label": "Dayton OH", + "count": 1 + }, + { + "label": "dc", + "count": 1 + }, + { + "label": "DC", + "count": 1 + }, + { + "label": "DCUnited States (Multi-location)", + "count": 1 + }, + { + "label": "Dover", + "count": 1 + }, + { + "label": "Durham, NC", + "count": 1 + }, + { + "label": "Edmonton Alberta", + "count": 1 + }, + { + "label": "El Paso", + "count": 1 + }, + { + "label": "Englewood", + "count": 1 + }, + { + "label": "florida", + "count": 1 + }, + { + "label": "Fort Collins, CO", + "count": 1 + }, + { + "label": "Fresno California", + "count": 1 + }, + { + "label": "Frisco", + "count": 1 + }, + { + "label": "Ft. Lauderdale", + "count": 1 + }, + { + "label": "Gainesville", + "count": 1 + }, + { + "label": "Gainesville, FL", + "count": 1 + }, + { + "label": "Hamilton, Ontario, Canada", + "count": 1 + }, + { + "label": "Hartford", + "count": 1 + }, + { + "label": "Hauston", + "count": 1 + }, + { + "label": "Hoboken", + "count": 1 + }, + { + "label": "Houston, Texas", + "count": 1 + }, + { + "label": "Hummelstown Pennsylvania", + "count": 1 + }, + { + "label": "Huntsville", + "count": 1 + }, + { + "label": "Huntsville, AL", + "count": 1 + }, + { + "label": "Idaho", + "count": 1 + }, + { + "label": "Illinois", + "count": 1 + }, + { + "label": "Iowa", + "count": 1 + }, + { + "label": "Irvine, CA", + "count": 1 + }, + { + "label": "Jackson MO", + "count": 1 + }, + { + "label": "Jacksonville fl", + "count": 1 + }, + { + "label": "Jacksonville IL", + "count": 1 + }, + { + "label": "Jacksonville, Fl", + "count": 1 + }, + { + "label": "joshua ttee", + "count": 1 + }, + { + "label": "Kentucky", + "count": 1 + }, + { + "label": "Kingston", + "count": 1 + }, + { + "label": "Knoxville", + "count": 1 + }, + { + "label": "LasVegas", + "count": 1 + }, + { + "label": "Laval", + "count": 1 + }, + { + "label": "Lehi", + "count": 1 + }, + { + "label": "Lehigh County, PA", + "count": 1 + }, + { + "label": "Lincoln, NE", + "count": 1 + }, + { + "label": "London, ON, Canada", + "count": 1 + }, + { + "label": "Long Island, NY", + "count": 1 + }, + { + "label": "Los Angeles, best city in the world", + "count": 1 + }, + { + "label": "Louisville", + "count": 1 + }, + { + "label": "Madison", + "count": 1 + }, + { + "label": "Manchester, NH", + "count": 1 + }, + { + "label": "Markham (Canada)", + "count": 1 + }, + { + "label": "Maryland", + "count": 1 + }, + { + "label": "Marysville", + "count": 1 + }, + { + "label": "Massachusetts", + "count": 1 + }, + { + "label": "Mechanicsburg", + "count": 1 + }, + { + "label": "Memphis", + "count": 1 + }, + { + "label": "Mexicali", + "count": 1 + }, + { + "label": "México city", + "count": 1 + }, + { + "label": "Mi", + "count": 1 + }, + { + "label": "Miamk", + "count": 1 + }, + { + "label": "Michigan", + "count": 1 + }, + { + "label": "Middletown, DE", + "count": 1 + }, + { + "label": "Milton", + "count": 1 + }, + { + "label": "MN", + "count": 1 + }, + { + "label": "Montecito", + "count": 1 + }, + { + "label": "Monterrey, México", + "count": 1 + }, + { + "label": "Montréal", + "count": 1 + }, + { + "label": "Muskoka", + "count": 1 + }, + { + "label": "Naperville IL", + "count": 1 + }, + { + "label": "NC", + "count": 1 + }, + { + "label": "New Jersey/NYC Area", + "count": 1 + }, + { + "label": "New Jersey/NYC metro", + "count": 1 + }, + { + "label": "New Mexico", + "count": 1 + }, + { + "label": "New Orleans", + "count": 1 + }, + { + "label": "New Port Richey Florida", + "count": 1 + }, + { + "label": "Newport Beach, CA", + "count": 1 + }, + { + "label": "No", + "count": 1 + }, + { + "label": "No in-person HQ", + "count": 1 + }, + { + "label": "North Central AR", + "count": 1 + }, + { + "label": "North Dakota", + "count": 1 + }, + { + "label": "North Georgia", + "count": 1 + }, + { + "label": "Northampton", + "count": 1 + }, + { + "label": "Northampton MA", + "count": 1 + }, + { + "label": "not a city", + "count": 1 + }, + { + "label": "O’ahu", + "count": 1 + }, + { + "label": "Oceanside, CA", + "count": 1 + }, + { + "label": "OKC", + "count": 1 + }, + { + "label": "oklahoma", + "count": 1 + }, + { + "label": "Oklahoma", + "count": 1 + }, + { + "label": "Online / Toronto + STL", + "count": 1 + }, + { + "label": "Ontario", + "count": 1 + }, + { + "label": "Palm Beach", + "count": 1 + }, + { + "label": "Panama City", + "count": 1 + }, + { + "label": "Pensacola", + "count": 1 + }, + { + "label": "Pewaukee", + "count": 1 + }, + { + "label": "Philadelphia area", + "count": 1 + }, + { + "label": "Philadephia", + "count": 1 + }, + { + "label": "Phoenix, AZ", + "count": 1 + }, + { + "label": "Phx", + "count": 1 + }, + { + "label": "Pittsburgh, PA", + "count": 1 + }, + { + "label": "Ponca city", + "count": 1 + }, + { + "label": "portland", + "count": 1 + }, + { + "label": "Portland Maine", + "count": 1 + }, + { + "label": "Portland Oregon", + "count": 1 + }, + { + "label": "Portland, OR", + "count": 1 + }, + { + "label": "Princeton, NJ", + "count": 1 + }, + { + "label": "Provo UT", + "count": 1 + }, + { + "label": "Puerto Rico", + "count": 1 + }, + { + "label": "Queretaro", + "count": 1 + }, + { + "label": "Querétaro, México", + "count": 1 + }, + { + "label": "Redlands CA", + "count": 1 + }, + { + "label": "remote", + "count": 1 + }, + { + "label": "Remote but Wyoming registered (planned)", + "count": 1 + }, + { + "label": "Reno", + "count": 1 + }, + { + "label": "Reno, NV", + "count": 1 + }, + { + "label": "Research Triangle, NC", + "count": 1 + }, + { + "label": "Sacramento area", + "count": 1 + }, + { + "label": "Safety Harbor", + "count": 1 + }, + { + "label": "Saint Augustine", + "count": 1 + }, + { + "label": "Salt Lake City, Utah", + "count": 1 + }, + { + "label": "San Antonio TX", + "count": 1 + }, + { + "label": "San Ysidro", + "count": 1 + }, + { + "label": "Santa Monica, CA", + "count": 1 + }, + { + "label": "Saratoga Springs", + "count": 1 + }, + { + "label": "Saskatoon", + "count": 1 + }, + { + "label": "Scottsdale", + "count": 1 + }, + { + "label": "Scranton pa", + "count": 1 + }, + { + "label": "Sherwood Park, Alberta Canada", + "count": 1 + }, + { + "label": "SoCal", + "count": 1 + }, + { + "label": "Soledad de graciano sanches", + "count": 1 + }, + { + "label": "South Carolina", + "count": 1 + }, + { + "label": "st louis", + "count": 1 + }, + { + "label": "St louis", + "count": 1 + }, + { + "label": "St Louis", + "count": 1 + }, + { + "label": "St Pete Beach", + "count": 1 + }, + { + "label": "St. john's", + "count": 1 + }, + { + "label": "St. Petersburg", + "count": 1 + }, + { + "label": "St. Petersburg, Florida", + "count": 1 + }, + { + "label": "Stevens Point, WI", + "count": 1 + }, + { + "label": "Summerville, SC", + "count": 1 + }, + { + "label": "Tampa.", + "count": 1 + }, + { + "label": "Taylors, SC", + "count": 1 + }, + { + "label": "Tennessee", + "count": 1 + }, + { + "label": "toronto", + "count": 1 + }, + { + "label": "Toronto, Canada", + "count": 1 + }, + { + "label": "Townsend DE", + "count": 1 + }, + { + "label": "Traverse City", + "count": 1 + }, + { + "label": "Truro", + "count": 1 + }, + { + "label": "utah", + "count": 1 + }, + { + "label": "Valdosta, GA", + "count": 1 + }, + { + "label": "Vancouver BC Canada", + "count": 1 + }, + { + "label": "vermont", + "count": 1 + }, + { + "label": "Wadsworth, OH", + "count": 1 + }, + { + "label": "Wainscott, NY", + "count": 1 + }, + { + "label": "Washington, DC", + "count": 1 + }, + { + "label": "Waukesha", + "count": 1 + }, + { + "label": "West Lafayette", + "count": 1 + }, + { + "label": "Western Massachusetts", + "count": 1 + }, + { + "label": "Will be in Delaware", + "count": 1 + }, + { + "label": "Windsor CT", + "count": 1 + } + ], + "respondentCount": 774 + }, + "2026|subscriptions|multi|": { + "rows": [ + { + "label": "Claude", + "count": 1610 + }, + { + "label": "OpenAI / ChatGPT", + "count": 1078 + }, + { + "label": "Gemini", + "count": 748 + }, + { + "label": "Cursor", + "count": 553 + }, + { + "label": "GitHub Copilot", + "count": 477 + }, + { + "label": "Lovable", + "count": 292 + }, + { + "label": "Perplexity", + "count": 200 + }, + { + "label": "v0", + "count": 96 + }, + { + "label": "None", + "count": 78 + }, + { + "label": "Bolt", + "count": 72 + }, + { + "label": "Midjourney", + "count": 61 + }, + { + "label": "none", + "count": 31 + }, + { + "label": "Grok", + "count": 7 + }, + { + "label": "Codex", + "count": 5 + }, + { + "label": "Supabase", + "count": 5 + }, + { + "label": "None yet", + "count": 4 + }, + { + "label": "Trae", + "count": 4 + }, + { + "label": "Antigravity", + "count": 3 + }, + { + "label": "Kimi", + "count": 3 + }, + { + "label": "Windsurf", + "count": 3 + }, + { + "label": ".", + "count": 2 + }, + { + "label": "Augment code", + "count": 2 + }, + { + "label": "Canva", + "count": 2 + }, + { + "label": "Figma", + "count": 2 + }, + { + "label": "Free tier", + "count": 2 + }, + { + "label": "Kiro", + "count": 2 + }, + { + "label": "Manus", + "count": 2 + }, + { + "label": "No", + "count": 2 + }, + { + "label": "no one", + "count": 2 + }, + { + "label": "non", + "count": 2 + }, + { + "label": "NONE", + "count": 2 + }, + { + "label": "None of the above", + "count": 2 + }, + { + "label": "none yet", + "count": 2 + }, + { + "label": "Notion", + "count": 2 + }, + { + "label": "Ollama", + "count": 2 + }, + { + "label": "Resend", + "count": 2 + }, + { + "label": "\"Gemini 3 Flash for real-time strategic assistance and code refinement", + "count": 1 + }, + { + "label": "0 :S no money for paying any if can payment anys: Supabase", + "count": 1 + }, + { + "label": "Adobe Creative Suite", + "count": 1 + }, + { + "label": "Ai studio", + "count": 1 + }, + { + "label": "Alpha Dualite", + "count": 1 + }, + { + "label": "amp", + "count": 1 + }, + { + "label": "and Hotmart for sales infrastructure.\"", + "count": 1 + }, + { + "label": "Artlist.io", + "count": 1 + }, + { + "label": "as a free tool to ask general questions", + "count": 1 + }, + { + "label": "Base44", + "count": 1 + }, + { + "label": "Bedrocks", + "count": 1 + }, + { + "label": "between Cursor", + "count": 1 + }, + { + "label": "Beyond Better", + "count": 1 + }, + { + "label": "Bidsmith (building)", + "count": 1 + }, + { + "label": "catcup", + "count": 1 + }, + { + "label": "Claud", + "count": 1 + }, + { + "label": "claude", + "count": 1 + }, + { + "label": "Claude AI", + "count": 1 + }, + { + "label": "Claude as of right now", + "count": 1 + }, + { + "label": "Claude code", + "count": 1 + }, + { + "label": "Cloudfare", + "count": 1 + }, + { + "label": "Copilot", + "count": 1 + }, + { + "label": "Cosverse AI", + "count": 1 + }, + { + "label": "Cotyper", + "count": 1 + }, + { + "label": "Currently", + "count": 1 + }, + { + "label": "currently on the Google Ai pro plan for students", + "count": 1 + }, + { + "label": "database management", + "count": 1 + }, + { + "label": "DeepSeek", + "count": 1 + }, + { + "label": "Deepseek (can dynamically change to similar services)", + "count": 1 + }, + { + "label": "deepseek api", + "count": 1 + }, + { + "label": "Devin", + "count": 1 + }, + { + "label": "Didn't paid anything", + "count": 1 + }, + { + "label": "domain yearly cost", + "count": 1 + }, + { + "label": "Don't pay", + "count": 1 + }, + { + "label": "Don't want to disclose", + "count": 1 + }, + { + "label": "Dreamflow", + "count": 1 + }, + { + "label": "DreamFlow", + "count": 1 + }, + { + "label": "ElevenLabs", + "count": 1 + }, + { + "label": "emergent", + "count": 1 + }, + { + "label": "Everything because self funded with profit after the initial $60", + "count": 1 + }, + { + "label": "Expo", + "count": 1 + }, + { + "label": "fal.ai", + "count": 1 + }, + { + "label": "Fal.ai (for image and video models)", + "count": 1 + }, + { + "label": "FIGMA", + "count": 1 + }, + { + "label": "Flutterflow", + "count": 1 + }, + { + "label": "for now", + "count": 1 + }, + { + "label": "for now I'm working on free levels.", + "count": 1 + }, + { + "label": "Free plan", + "count": 1 + }, + { + "label": "Free tier/learning", + "count": 1 + }, + { + "label": "Free version only", + "count": 1 + }, + { + "label": "gemini", + "count": 1 + }, + { + "label": "gemini free", + "count": 1 + }, + { + "label": "GitHub student developer pack and google one plan", + "count": 1 + }, + { + "label": "GLM z.ai codingplan", + "count": 1 + }, + { + "label": "GLM-4", + "count": 1 + }, + { + "label": "Google Ai Studio", + "count": 1 + }, + { + "label": "Google Workspace", + "count": 1 + }, + { + "label": "Higgsfield", + "count": 1 + }, + { + "label": "HOSTING", + "count": 1 + }, + { + "label": "I am using Credits received during our trials in 2026 so far. If we can get models to producing code that passes secure coding review within 2 iterations we are prepared to spend any where from $180 to $620 per developer (i.e., no image, icon, or video generations required)", + "count": 1 + }, + { + "label": "I do Not pay for anything.", + "count": 1 + }, + { + "label": "I don't know", + "count": 1 + }, + { + "label": "I don't pay", + "count": 1 + }, + { + "label": "I don't pay for AI", + "count": 1 + }, + { + "label": "I don't understand the question.. I don't use any", + "count": 1 + }, + { + "label": "I dont pay for GITHUB COPILOT", + "count": 1 + }, + { + "label": "I only rely on AI when I get stuck with features like IAP", + "count": 1 + }, + { + "label": "i pay for miniflux", + "count": 1 + }, + { + "label": "I treat Gemini", + "count": 1 + }, + { + "label": "I use student offers", + "count": 1 + }, + { + "label": "I'm a Founding Engineer as freelancer", + "count": 1 + }, + { + "label": "I'm paying claude code for myself", + "count": 1 + }, + { + "label": "instead we just use the free plan on most things", + "count": 1 + }, + { + "label": "JetBrains", + "count": 1 + }, + { + "label": "Kie AI API", + "count": 1 + }, + { + "label": "kilo code", + "count": 1 + }, + { + "label": "kilocode", + "count": 1 + }, + { + "label": "kiro", + "count": 1 + }, + { + "label": "Linear", + "count": 1 + }, + { + "label": "Mammouth", + "count": 1 + }, + { + "label": "Me", + "count": 1 + }, + { + "label": "minimax", + "count": 1 + }, + { + "label": "MiniMax M2.5", + "count": 1 + }, + { + "label": "minmax", + "count": 1 + }, + { + "label": "n/a", + "count": 1 + }, + { + "label": "Netlify and The Odds API", + "count": 1 + }, + { + "label": "Nil", + "count": 1 + }, + { + "label": "No one", + "count": 1 + }, + { + "label": "No paid subscription yet. Deepseek r1 works good according to what we need.", + "count": 1 + }, + { + "label": "No payment", + "count": 1 + }, + { + "label": "Non", + "count": 1 + }, + { + "label": "None - Free tier", + "count": 1 + }, + { + "label": "None 'cause we are able to use higher models with the help of subscribing using our college gmail id for free", + "count": 1 + }, + { + "label": "None (student licenses, not paid by startup)", + "count": 1 + }, + { + "label": "None at the current moment.", + "count": 1 + }, + { + "label": "None bcz I am student and a solo start-up builder", + "count": 1 + }, + { + "label": "None for now", + "count": 1 + }, + { + "label": "none of them", + "count": 1 + }, + { + "label": "None only Free tier", + "count": 1 + }, + { + "label": "NONE YET", + "count": 1 + }, + { + "label": "NONE! We don't pay for rubbish", + "count": 1 + }, + { + "label": "None.", + "count": 1 + }, + { + "label": "None. Using free tiers from multiple providers", + "count": 1 + }, + { + "label": "Nons", + "count": 1 + }, + { + "label": "not", + "count": 1 + }, + { + "label": "Not paying to anything", + "count": 1 + }, + { + "label": "Not paying yet", + "count": 1 + }, + { + "label": "Not using any subscription right now but thinking to buy claude code", + "count": 1 + }, + { + "label": "not yet i am planing to do that", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "Nothing", + "count": 1 + }, + { + "label": "occasionally Google GCP APIs", + "count": 1 + }, + { + "label": "Ollama Cloud", + "count": 1 + }, + { + "label": "Only free plans", + "count": 1 + }, + { + "label": "only used claude code for 1 month subscription only.", + "count": 1 + }, + { + "label": "Openart", + "count": 1 + }, + { + "label": "Opencode (free)", + "count": 1 + }, + { + "label": "Openrouter", + "count": 1 + }, + { + "label": "OpenRouter", + "count": 1 + }, + { + "label": "Opensource", + "count": 1 + }, + { + "label": "payments", + "count": 1 + }, + { + "label": "Render", + "count": 1 + }, + { + "label": "Replit", + "count": 1 + }, + { + "label": "retell.ai", + "count": 1 + }, + { + "label": "Rocket.new", + "count": 1 + }, + { + "label": "Sentry", + "count": 1 + }, + { + "label": "Sider Pro", + "count": 1 + }, + { + "label": "Still on student developer plan", + "count": 1 + }, + { + "label": "supabase", + "count": 1 + }, + { + "label": "Supabase Pro for scaling", + "count": 1 + }, + { + "label": "Surely others are being explored", + "count": 1 + }, + { + "label": "Tailwind Plus", + "count": 1 + }, + { + "label": "Trae & Antigravity", + "count": 1 + }, + { + "label": "using benefits from accelerators", + "count": 1 + }, + { + "label": "using free versions and developer subscriptions.", + "count": 1 + }, + { + "label": "UXpilot.ai", + "count": 1 + }, + { + "label": "Vecel", + "count": 1 + }, + { + "label": "Vercel Pro", + "count": 1 + }, + { + "label": "Warp AI", + "count": 1 + }, + { + "label": "We actually don't pay for any subscriptions", + "count": 1 + }, + { + "label": "we are 0 cost", + "count": 1 + }, + { + "label": "we are not paying for any team subscriptions and are using free development tools.", + "count": 1 + }, + { + "label": "We are working on student plan yet", + "count": 1 + }, + { + "label": "We don't pay for any", + "count": 1 + }, + { + "label": "We don’t pay for one. Bring your own model.", + "count": 1 + }, + { + "label": "we thinking about Grok", + "count": 1 + }, + { + "label": "we use free plan now", + "count": 1 + }, + { + "label": "we’re cheap", + "count": 1 + }, + { + "label": "Windsurd", + "count": 1 + }, + { + "label": "Xai", + "count": 1 + }, + { + "label": "Z.ai pro", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|ai_models_used|multi|": { + "rows": [ + { + "label": "Anthropic/Claude", + "count": 1752 + }, + { + "label": "OpenAI", + "count": 1411 + }, + { + "label": "Gemini", + "count": 1198 + }, + { + "label": "Grok", + "count": 314 + }, + { + "label": "Custom models", + "count": 297 + }, + { + "label": "Hugging Face", + "count": 273 + }, + { + "label": "Mistral", + "count": 147 + }, + { + "label": "Bedrock", + "count": 92 + }, + { + "label": "Replicate", + "count": 57 + }, + { + "label": "SageMaker", + "count": 38 + }, + { + "label": "Together AI", + "count": 36 + }, + { + "label": "Cohere", + "count": 28 + }, + { + "label": "None", + "count": 22 + }, + { + "label": "Qwen", + "count": 12 + }, + { + "label": "Groq", + "count": 10 + }, + { + "label": "Deepseek", + "count": 9 + }, + { + "label": "Not sure yet", + "count": 6 + }, + { + "label": "GLM", + "count": 5 + }, + { + "label": "Perplexity", + "count": 5 + }, + { + "label": "Claude", + "count": 4 + }, + { + "label": "Copilot", + "count": 4 + }, + { + "label": "DeepSeek", + "count": 4 + }, + { + "label": "Gemma", + "count": 4 + }, + { + "label": "Kimi", + "count": 4 + }, + { + "label": "none", + "count": 4 + }, + { + "label": "Ollama", + "count": 4 + }, + { + "label": "Gemma 4", + "count": 3 + }, + { + "label": "groq", + "count": 3 + }, + { + "label": "Lovable", + "count": 3 + }, + { + "label": "OpenRouter", + "count": 3 + }, + { + "label": "deepseek", + "count": 2 + }, + { + "label": "don't know yet", + "count": 2 + }, + { + "label": "Elevenlabs", + "count": 2 + }, + { + "label": "Fireworks", + "count": 2 + }, + { + "label": "Llama 3", + "count": 2 + }, + { + "label": "MiniMax", + "count": 2 + }, + { + "label": "not sure yet", + "count": 2 + }, + { + "label": "Open-source models", + "count": 2 + }, + { + "label": "Openrouter", + "count": 2 + }, + { + "label": "Undecided", + "count": 2 + }, + { + "label": "\"DeepSeek-V3 for high-efficiency logic processing and specialized Google Ads API data interpretation.\"", + "count": 1 + }, + { + "label": "11 Labs", + "count": 1 + }, + { + "label": "Alibaba Cloud", + "count": 1 + }, + { + "label": "all", + "count": 1 + }, + { + "label": "all from china techgiant", + "count": 1 + }, + { + "label": "all supported by pi-ai when it comes to what we suport in product. as for what we actually use", + "count": 1 + }, + { + "label": "Anthropic", + "count": 1 + }, + { + "label": "any model as long support access via http", + "count": 1 + }, + { + "label": "Azure", + "count": 1 + }, + { + "label": "Bolt", + "count": 1 + }, + { + "label": "bolt.new", + "count": 1 + }, + { + "label": "ByteDance", + "count": 1 + }, + { + "label": "Claude AI", + "count": 1 + }, + { + "label": "Cloudflare Workers ai", + "count": 1 + }, + { + "label": "Composer (by Cursor)", + "count": 1 + }, + { + "label": "Cosverse AI", + "count": 1 + }, + { + "label": "create our own AI for legaltech", + "count": 1 + }, + { + "label": "Cursor auto?", + "count": 1 + }, + { + "label": "Cursor built models", + "count": 1 + }, + { + "label": "custom", + "count": 1 + }, + { + "label": "deep seek", + "count": 1 + }, + { + "label": "Deepgram", + "count": 1 + }, + { + "label": "DeepSeak", + "count": 1 + }, + { + "label": "deepSeek", + "count": 1 + }, + { + "label": "Deepseek r1", + "count": 1 + }, + { + "label": "DeepSeek through OpenRouter", + "count": 1 + }, + { + "label": "deepsek", + "count": 1 + }, + { + "label": "Distributed Heuristic AI/ML with pre-populated memory models (distributed)", + "count": 1 + }, + { + "label": "Don't know yet", + "count": 1 + }, + { + "label": "Don’t know yet", + "count": 1 + }, + { + "label": "doubao yuanbao qwen deepseek", + "count": 1 + }, + { + "label": "Eleven", + "count": 1 + }, + { + "label": "ElevenLabs", + "count": 1 + }, + { + "label": "Emergent Built In AI it uses Claude Gemini and GPT", + "count": 1 + }, + { + "label": "fal ai", + "count": 1 + }, + { + "label": "Fal.ai", + "count": 1 + }, + { + "label": "falai", + "count": 1 + }, + { + "label": "FastRouter so many different ai", + "count": 1 + }, + { + "label": "FIGMA", + "count": 1 + }, + { + "label": "Fine-tuned variant of GPT-4o", + "count": 1 + }, + { + "label": "Fined Tuned", + "count": 1 + }, + { + "label": "Firecrawl", + "count": 1 + }, + { + "label": "Flux pro 2", + "count": 1 + }, + { + "label": "Foundational model", + "count": 1 + }, + { + "label": "Gemma4 4B", + "count": 1 + }, + { + "label": "GLM Air 4.5", + "count": 1 + }, + { + "label": "glm and minimax", + "count": 1 + }, + { + "label": "GLM for local development", + "count": 1 + }, + { + "label": "Google Ai studio", + "count": 1 + }, + { + "label": "Google AI Studio", + "count": 1 + }, + { + "label": "Google Antigravity", + "count": 1 + }, + { + "label": "I don't know yet", + "count": 1 + }, + { + "label": "I want to make my own model", + "count": 1 + }, + { + "label": "I will create a model based on my data", + "count": 1 + }, + { + "label": "Inception Labs (Mercury) + Yutori N1", + "count": 1 + }, + { + "label": "Initially free models via Openrouter", + "count": 1 + }, + { + "label": "its mainly codex.", + "count": 1 + }, + { + "label": "Kimi 2.5", + "count": 1 + }, + { + "label": "Kokoro", + "count": 1 + }, + { + "label": "Llama", + "count": 1 + }, + { + "label": "LLaMa", + "count": 1 + }, + { + "label": "LLAMA", + "count": 1 + }, + { + "label": "llama.cpp / vllm models", + "count": 1 + }, + { + "label": "Local", + "count": 1 + }, + { + "label": "local open source", + "count": 1 + }, + { + "label": "lot s of Qwen and some deepseek", + "count": 1 + }, + { + "label": "Lovable (AI-native development platform)", + "count": 1 + }, + { + "label": "Lovable?", + "count": 1 + }, + { + "label": "luma ia", + "count": 1 + }, + { + "label": "Maybe custom? Also cursor", + "count": 1 + }, + { + "label": "Meta Muse Spark", + "count": 1 + }, + { + "label": "Microsoft", + "count": 1 + }, + { + "label": "Microsoft Copilot", + "count": 1 + }, + { + "label": "Mini max", + "count": 1 + }, + { + "label": "minimax", + "count": 1 + }, + { + "label": "minmax", + "count": 1 + }, + { + "label": "Moonshot AI", + "count": 1 + }, + { + "label": "Multi model environment", + "count": 1 + }, + { + "label": "My own model.", + "count": 1 + }, + { + "label": "n/a", + "count": 1 + }, + { + "label": "NEMOTRON", + "count": 1 + }, + { + "label": "No plans yet", + "count": 1 + }, + { + "label": "NONE", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "Not sure", + "count": 1 + }, + { + "label": "Not this type of ai. More like ml", + "count": 1 + }, + { + "label": "Not using AI models currently", + "count": 1 + }, + { + "label": "Not using AI models yet (planning future AI features)", + "count": 1 + }, + { + "label": "Not yet", + "count": 1 + }, + { + "label": "NotebookLM", + "count": 1 + }, + { + "label": "ollama", + "count": 1 + }, + { + "label": "Ollama - Rag - Genius Assistant", + "count": 1 + }, + { + "label": "Ollama gemma", + "count": 1 + }, + { + "label": "On device local", + "count": 1 + }, + { + "label": "open router free (kimi <3)", + "count": 1 + }, + { + "label": "OpenAI Codex", + "count": 1 + }, + { + "label": "OpenAI via Azure", + "count": 1 + }, + { + "label": "openclaw", + "count": 1 + }, + { + "label": "Opencode", + "count": 1 + }, + { + "label": "OpenRouter API for easy switching", + "count": 1 + }, + { + "label": "Orchids", + "count": 1 + }, + { + "label": "Own SLMs", + "count": 1 + }, + { + "label": "perplexity", + "count": 1 + }, + { + "label": "Perplexity Computer", + "count": 1 + }, + { + "label": "Pexels", + "count": 1 + }, + { + "label": "qwen", + "count": 1 + }, + { + "label": "Sarvam AI", + "count": 1 + }, + { + "label": "Sarvam AI from India", + "count": 1 + }, + { + "label": "SCITELY", + "count": 1 + }, + { + "label": "Secret", + "count": 1 + }, + { + "label": "Selfhosted", + "count": 1 + }, + { + "label": "slms", + "count": 1 + }, + { + "label": "Something European", + "count": 1 + }, + { + "label": "stitch", + "count": 1 + }, + { + "label": "Tbc", + "count": 1 + }, + { + "label": "TBD", + "count": 1 + }, + { + "label": "Telnyx", + "count": 1 + }, + { + "label": "Textract", + "count": 1 + }, + { + "label": "This is going to be a heavily mixed architecture when complete for propietary reasons", + "count": 1 + }, + { + "label": "Trained heads on small models", + "count": 1 + }, + { + "label": "unsure", + "count": 1 + }, + { + "label": "Unsure", + "count": 1 + }, + { + "label": "Unsure at this time", + "count": 1 + }, + { + "label": "various offline embeddings models", + "count": 1 + }, + { + "label": "Vertex AI", + "count": 1 + }, + { + "label": "Voyage AI", + "count": 1 + }, + { + "label": "We haven’t decided that yet", + "count": 1 + }, + { + "label": "We use Claude 3.5 for pedagogical reasoning and OpenAI's Whisper for phonetic synchronization", + "count": 1 + }, + { + "label": "We use the access tokens of the user installed CLIs so that our tool is free to use", + "count": 1 + }, + { + "label": "Whatever is best for me to scale thx", + "count": 1 + }, + { + "label": "Whichever Lovable uses", + "count": 1 + }, + { + "label": "Whichever tools solve the problem", + "count": 1 + }, + { + "label": "why would you ask this if i said i dont use ai?", + "count": 1 + }, + { + "label": "Z.ai", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|ai_generated_codebase_percent|single|[[\"person_age\",[\"18–21\",\"22–29\",\"30–39\"]]]": { + "rows": [ + { + "label": "76-100%", + "count": 742 + }, + { + "label": "51-75%", + "count": 455 + }, + { + "label": "26-50%", + "count": 376 + }, + { + "label": "11-25%", + "count": 264 + }, + { + "label": "1-10%", + "count": 210 + }, + { + "label": "0%", + "count": 46 + } + ], + "respondentCount": 2093 + }, + "2026|ai_generated_codebase_percent|single|[[\"person_age\",\"40–49\"]]": { + "rows": [ + { + "label": "76-100%", + "count": 205 + }, + { + "label": "51-75%", + "count": 84 + }, + { + "label": "26-50%", + "count": 41 + }, + { + "label": "11-25%", + "count": 26 + }, + { + "label": "1-10%", + "count": 17 + }, + { + "label": "0%", + "count": 12 + } + ], + "respondentCount": 385 + }, + "2026|ai_generated_codebase_percent|single|[[\"person_age\",\"50–59\"]]": { + "rows": [ + { + "label": "76-100%", + "count": 122 + }, + { + "label": "51-75%", + "count": 38 + }, + { + "label": "26-50%", + "count": 21 + }, + { + "label": "1-10%", + "count": 10 + }, + { + "label": "11-25%", + "count": 10 + }, + { + "label": "0%", + "count": 2 + } + ], + "respondentCount": 203 + }, + "2026|ai_generated_codebase_percent|single|[[\"person_age\",\"60+\"]]": { + "rows": [ + { + "label": "76-100%", + "count": 36 + }, + { + "label": "51-75%", + "count": 8 + }, + { + "label": "26-50%", + "count": 7 + }, + { + "label": "0%", + "count": 3 + }, + { + "label": "1-10%", + "count": 3 + }, + { + "label": "11-25%", + "count": 1 + } + ], + "respondentCount": 58 + }, + "2026|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"76-100%\"]]": { + "rows": [ + { + "label": "No", + "count": 715 + }, + { + "label": "Yes", + "count": 345 + }, + { + "label": "No plans to monetize", + "count": 45 + } + ], + "respondentCount": 1105 + }, + "2026|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"0%\"]]": { + "rows": [ + { + "label": "Yes", + "count": 35 + }, + { + "label": "No", + "count": 20 + }, + { + "label": "No plans to monetize", + "count": 8 + } + ], + "respondentCount": 63 + }, + "2026|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"76-100%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 406 + }, + { + "label": "Product-market fit", + "count": 165 + }, + { + "label": "Technical complexity", + "count": 133 + }, + { + "label": "Fundraising", + "count": 123 + }, + { + "label": "Burn out / exhaustion", + "count": 94 + }, + { + "label": "AI competition / disruption", + "count": 74 + }, + { + "label": "Burn rate / runway", + "count": 44 + }, + { + "label": "Hiring", + "count": 23 + }, + { + "label": "Nothing", + "count": 2 + }, + { + "label": "Time", + "count": 2 + }, + { + "label": "automation", + "count": 1 + }, + { + "label": "Building the product", + "count": 1 + }, + { + "label": "cash frow / funding constraints", + "count": 1 + }, + { + "label": "Dinero Levantar algo tan innovador siendo pobre, dejar mi trabajo y tratar de responder monetariamente a mi familia a 600km de distancia por intentar avanzar", + "count": 1 + }, + { + "label": "Distribution (Florida legislature makes every district have a separate approval funnel for public school use)", + "count": 1 + }, + { + "label": "Divided attention", + "count": 1 + }, + { + "label": "Don't know if i want to", + "count": 1 + }, + { + "label": "Facebook app review — just a time factor. I have a near 0 burn rate. Dawg I thought this was a 7 minute survey. This has been like 45 minutes now.", + "count": 1 + }, + { + "label": "Finalizing something we are willing to present to investors", + "count": 1 + }, + { + "label": "First business - trying to figure out how to make it work", + "count": 1 + }, + { + "label": "Getting clients onto the app more often Disteibution", + "count": 1 + }, + { + "label": "Getting people to pay", + "count": 1 + }, + { + "label": "Having time to work on it", + "count": 1 + }, + { + "label": "I have little child", + "count": 1 + }, + { + "label": "I'm still in the test phrase", + "count": 1 + }, + { + "label": "I’m trying to do it part time as I have a young family and need my other job to bring in guaranteed salary", + "count": 1 + }, + { + "label": "I've just started", + "count": 1 + }, + { + "label": "Idea Validation", + "count": 1 + }, + { + "label": "Insurance partner", + "count": 1 + }, + { + "label": "Just getting started", + "count": 1 + }, + { + "label": "lack of clarity -> technical complexity -> burnout", + "count": 1 + }, + { + "label": "Learning the technical side of things while trying to launch fast", + "count": 1 + }, + { + "label": "Managing a more-than full time job and family with this project", + "count": 1 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "Moat", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "None but Time Itself", + "count": 1 + }, + { + "label": "Operational Workflow", + "count": 1 + }, + { + "label": "Other responsibilities like work and family", + "count": 1 + }, + { + "label": "Perpetuity", + "count": 1 + }, + { + "label": "Probably legal, although I’ve done a lot of that with ai.", + "count": 1 + }, + { + "label": "Regulations", + "count": 1 + }, + { + "label": "Sales", + "count": 1 + }, + { + "label": "Scaling, more demand than current solution (GAS) can accomodate", + "count": 1 + }, + { + "label": "Seeing something shiny and loosing focus", + "count": 1 + }, + { + "label": "Self hosted organization - taskmanager, comms, storage that can be deployed via netlify and stored in supabase", + "count": 1 + }, + { + "label": "Transitioning from part time to full time", + "count": 1 + }, + { + "label": "Working with AI is making me work too hard. I don’t switch off.", + "count": 1 + } + ], + "respondentCount": 1105 + }, + "2026|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"0%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 13 + }, + { + "label": "Fundraising", + "count": 12 + }, + { + "label": "Burn out / exhaustion", + "count": 11 + }, + { + "label": "Hiring", + "count": 6 + }, + { + "label": "Technical complexity", + "count": 6 + }, + { + "label": "AI competition / disruption", + "count": 5 + }, + { + "label": "Product-market fit", + "count": 5 + }, + { + "label": "None", + "count": 2 + }, + { + "label": "Burn rate / runway", + "count": 1 + }, + { + "label": "Funding", + "count": 1 + }, + { + "label": "i get tired a lot", + "count": 1 + } + ], + "respondentCount": 63 + }, + "2026|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"1-10%\"]]": { + "rows": [ + { + "label": "Yes", + "count": 123 + }, + { + "label": "No", + "count": 107 + }, + { + "label": "No plans to monetize", + "count": 10 + } + ], + "respondentCount": 240 + }, + "2026|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"1-10%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 79 + }, + { + "label": "Burn out / exhaustion", + "count": 32 + }, + { + "label": "Fundraising", + "count": 29 + }, + { + "label": "Product-market fit", + "count": 25 + }, + { + "label": "Technical complexity", + "count": 25 + }, + { + "label": "Hiring", + "count": 20 + }, + { + "label": "AI competition / disruption", + "count": 11 + }, + { + "label": "Burn rate / runway", + "count": 11 + }, + { + "label": "I just want to start", + "count": 1 + }, + { + "label": "I'm not facing any of the above listed problems. The hardest one is, I'm situated in Kabirwala, 3rd tier city of Pakisatn. Here, internet is just used for tiktok, youtube, instagram, scrolling and that kind of stuff. None is serious about what we are building. The most difficutl task was not to build, that was to convice my own principal just for trying our product even for free. People here mostly say, if the existing thing is working for me welll, why step into something more advnaced or difficult to manage. Like they feel painful to change themselves. Morever, I still have an extremely low end pc that even struggles to run windows 7(not even 64 bit). So, i have to mostly rely on cloud and web. I can't install tools locally. Then come a list of issues like internet speed, electricity.", + "count": 1 + }, + { + "label": "its my side job", + "count": 1 + }, + { + "label": "money", + "count": 1 + }, + { + "label": "None yet. Too new", + "count": 1 + }, + { + "label": "Product intention", + "count": 1 + }, + { + "label": "Products market is going down", + "count": 1 + }, + { + "label": "Tech Debt", + "count": 1 + } + ], + "respondentCount": 240 + }, + "2026|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"11-25%\"]]": { + "rows": [ + { + "label": "Yes", + "count": 142 + }, + { + "label": "No", + "count": 137 + }, + { + "label": "No plans to monetize", + "count": 22 + } + ], + "respondentCount": 301 + }, + "2026|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"11-25%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 74 + }, + { + "label": "Fundraising", + "count": 45 + }, + { + "label": "Burn out / exhaustion", + "count": 42 + }, + { + "label": "Product-market fit", + "count": 38 + }, + { + "label": "AI competition / disruption", + "count": 31 + }, + { + "label": "Technical complexity", + "count": 31 + }, + { + "label": "Burn rate / runway", + "count": 17 + }, + { + "label": "Hiring", + "count": 13 + }, + { + "label": "Cloud infrastructure cost optimization", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Don't have any of the challenges above, at least not yet anyway!", + "count": 1 + }, + { + "label": "Growth in new market segments", + "count": 1 + }, + { + "label": "Keep consistency at monthly revenue", + "count": 1 + }, + { + "label": "None of the above", + "count": 1 + }, + { + "label": "Optimalizing work flow", + "count": 1 + }, + { + "label": "Scalability", + "count": 1 + }, + { + "label": "stable electricity and balancing school", + "count": 1 + }, + { + "label": "Time", + "count": 1 + } + ], + "respondentCount": 301 + }, + "2026|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"26-50%\"]]": { + "rows": [ + { + "label": "No", + "count": 234 + }, + { + "label": "Yes", + "count": 182 + }, + { + "label": "No plans to monetize", + "count": 29 + } + ], + "respondentCount": 445 + }, + "2026|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"26-50%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 133 + }, + { + "label": "Fundraising", + "count": 68 + }, + { + "label": "Product-market fit", + "count": 60 + }, + { + "label": "Burn out / exhaustion", + "count": 51 + }, + { + "label": "Technical complexity", + "count": 47 + }, + { + "label": "AI competition / disruption", + "count": 43 + }, + { + "label": "Burn rate / runway", + "count": 24 + }, + { + "label": "Hiring", + "count": 17 + }, + { + "label": "Marketing", + "count": 1 + }, + { + "label": "Time, rightly or wrongly I am finishing my degree", + "count": 1 + } + ], + "respondentCount": 445 + }, + "2026|currently_monetizing|single|[[\"ai_generated_codebase_percent\",\"51-75%\"]]": { + "rows": [ + { + "label": "No", + "count": 328 + }, + { + "label": "Yes", + "count": 234 + }, + { + "label": "No plans to monetize", + "count": 23 + } + ], + "respondentCount": 585 + }, + "2026|biggest_challenge|single|[[\"ai_generated_codebase_percent\",\"51-75%\"]]": { + "rows": [ + { + "label": "Customer acquisition", + "count": 177 + }, + { + "label": "Product-market fit", + "count": 88 + }, + { + "label": "Fundraising", + "count": 85 + }, + { + "label": "Technical complexity", + "count": 70 + }, + { + "label": "Burn out / exhaustion", + "count": 68 + }, + { + "label": "AI competition / disruption", + "count": 37 + }, + { + "label": "Hiring", + "count": 22 + }, + { + "label": "Burn rate / runway", + "count": 20 + }, + { + "label": "Time", + "count": 2 + }, + { + "label": "3rd party partnerships", + "count": 1 + }, + { + "label": "AI generated PRDs", + "count": 1 + }, + { + "label": "all good", + "count": 1 + }, + { + "label": "Architecture implementation", + "count": 1 + }, + { + "label": "Bugs", + "count": 1 + }, + { + "label": "Competition", + "count": 1 + }, + { + "label": "Dependent on third-party providers", + "count": 1 + }, + { + "label": "Finding the time to dedicate to it (it's a side-hustle-startup to our main business)", + "count": 1 + }, + { + "label": "hard to handle many clients projects", + "count": 1 + }, + { + "label": "Maintaining the \"Flow\" state from user perspective", + "count": 1 + }, + { + "label": "Money and team", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "Patents, trademark and business licensing still needs to be done before going public", + "count": 1 + }, + { + "label": "Scaling enterprise AI deployments into repeatable, productized offerings while maintaining high customization and delivery quality.", + "count": 1 + }, + { + "label": "Time constraints", + "count": 1 + }, + { + "label": "we just in the beginning", + "count": 1 + } + ], + "respondentCount": 585 + }, + "2026|auth_provider|multi|": { + "rows": [ + { + "label": "Supabase Auth", + "count": 1961 + }, + { + "label": "Auth0", + "count": 344 + }, + { + "label": "NextAuth / Auth.js", + "count": 330 + }, + { + "label": "Custom-built", + "count": 288 + }, + { + "label": "Firebase Auth", + "count": 234 + }, + { + "label": "Clerk", + "count": 115 + }, + { + "label": "AWS Cognito", + "count": 86 + }, + { + "label": "Okta", + "count": 44 + }, + { + "label": "Keycloak", + "count": 37 + }, + { + "label": "Better Auth", + "count": 14 + }, + { + "label": "BetterAuth", + "count": 9 + }, + { + "label": "None", + "count": 7 + }, + { + "label": "WorkOS", + "count": 7 + }, + { + "label": "better-auth", + "count": 4 + }, + { + "label": "none", + "count": 4 + }, + { + "label": "None yet", + "count": 3 + }, + { + "label": "better auth", + "count": 2 + }, + { + "label": "Better-auth", + "count": 2 + }, + { + "label": "Better-Auth", + "count": 2 + }, + { + "label": "betterauth", + "count": 2 + }, + { + "label": "Convex", + "count": 2 + }, + { + "label": "Custom", + "count": 2 + }, + { + "label": "Google", + "count": 2 + }, + { + "label": "Google Auth", + "count": 2 + }, + { + "label": "Privy", + "count": 2 + }, + { + "label": "workos", + "count": 2 + }, + { + "label": ".", + "count": 1 + }, + { + "label": "\"Hotmart for digital product distribution", + "count": 1 + }, + { + "label": "and automated access management.\"", + "count": 1 + }, + { + "label": "Antigravity", + "count": 1 + }, + { + "label": "Apple", + "count": 1 + }, + { + "label": "Appwrite auth", + "count": 1 + }, + { + "label": "AuthKit by WorkOS", + "count": 1 + }, + { + "label": "Auto-confirm", + "count": 1 + }, + { + "label": "Azure AD", + "count": 1 + }, + { + "label": "Azure Entra", + "count": 1 + }, + { + "label": "better-auth+postgres", + "count": 1 + }, + { + "label": "Betterauth", + "count": 1 + }, + { + "label": "Bolt.new", + "count": 1 + }, + { + "label": "Cloudfalre", + "count": 1 + }, + { + "label": "cloudflare", + "count": 1 + }, + { + "label": "Cloudflare", + "count": 1 + }, + { + "label": "Coinbase smart wallet", + "count": 1 + }, + { + "label": "Custom made", + "count": 1 + }, + { + "label": "Custom quantum safe harbor for core services", + "count": 1 + }, + { + "label": "django", + "count": 1 + }, + { + "label": "Don't know", + "count": 1 + }, + { + "label": "done by bolt.new", + "count": 1 + }, + { + "label": "Entra ID", + "count": 1 + }, + { + "label": "EntraID", + "count": 1 + }, + { + "label": "fingerprints", + "count": 1 + }, + { + "label": "Fusion Auth", + "count": 1 + }, + { + "label": "global payments", + "count": 1 + }, + { + "label": "Google auth", + "count": 1 + }, + { + "label": "Google OAuth", + "count": 1 + }, + { + "label": "Google OAuth (custom implementation)", + "count": 1 + }, + { + "label": "I created my own authentication provider", + "count": 1 + }, + { + "label": "I would say Okta", + "count": 1 + }, + { + "label": "Initdata", + "count": 1 + }, + { + "label": "Instantdb", + "count": 1 + }, + { + "label": "just because supabase has no RBAC", + "count": 1 + }, + { + "label": "Kinde", + "count": 1 + }, + { + "label": "Laravel", + "count": 1 + }, + { + "label": "LicenseSpring", + "count": 1 + }, + { + "label": "Lovable", + "count": 1 + }, + { + "label": "Lovable Auth", + "count": 1 + }, + { + "label": "Low code", + "count": 1 + }, + { + "label": "maybe nextAuth?", + "count": 1 + }, + { + "label": "Microsoft Entra ID", + "count": 1 + }, + { + "label": "Mono API", + "count": 1 + }, + { + "label": "mottor", + "count": 1 + }, + { + "label": "n/a", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "Native Provider", + "count": 1 + }, + { + "label": "No auth", + "count": 1 + }, + { + "label": "No auth — static public site; checkout handled by SamCart", + "count": 1 + }, + { + "label": "no authentication method use yet", + "count": 1 + }, + { + "label": "None in-place yet", + "count": 1 + }, + { + "label": "not", + "count": 1 + }, + { + "label": "Not needed", + "count": 1 + }, + { + "label": "not needed until now", + "count": 1 + }, + { + "label": "Not setup yet", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "OIDC with Identity Provider", + "count": 1 + }, + { + "label": "Ory Kratos", + "count": 1 + }, + { + "label": "Outseta lined up", + "count": 1 + }, + { + "label": "own", + "count": 1 + }, + { + "label": "Prived", + "count": 1 + }, + { + "label": "Propelauth", + "count": 1 + }, + { + "label": "Propio", + "count": 1 + }, + { + "label": "Public Q&A interface", + "count": 1 + }, + { + "label": "RevenueCat", + "count": 1 + }, + { + "label": "SDK Telegram", + "count": 1 + }, + { + "label": "self", + "count": 1 + }, + { + "label": "Shopify Auth", + "count": 1 + }, + { + "label": "Signicat", + "count": 1 + }, + { + "label": "SIWE", + "count": 1 + }, + { + "label": "Softr", + "count": 1 + }, + { + "label": "Stych", + "count": 1 + }, + { + "label": "Stytch", + "count": 1 + }, + { + "label": "Supabase", + "count": 1 + }, + { + "label": "Tailwind css", + "count": 1 + }, + { + "label": "testing Supabase Auth for supporting 'free tier'", + "count": 1 + }, + { + "label": "We don", + "count": 1 + }, + { + "label": "We're an auth company", + "count": 1 + }, + { + "label": "What is offered by Lovable", + "count": 1 + }, + { + "label": "work os", + "count": 1 + }, + { + "label": "WorkOS.", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|cloud_providers|multi|": { + "rows": [ + { + "label": "Supabase", + "count": 1794 + }, + { + "label": "Vercel", + "count": 1245 + }, + { + "label": "Cloudflare", + "count": 737 + }, + { + "label": "AWS", + "count": 573 + }, + { + "label": "GCP", + "count": 254 + }, + { + "label": "Netlify", + "count": 251 + }, + { + "label": "Railway", + "count": 206 + }, + { + "label": "Azure", + "count": 173 + }, + { + "label": "Render", + "count": 173 + }, + { + "label": "Hetzner", + "count": 142 + }, + { + "label": "Digital Ocean", + "count": 122 + }, + { + "label": "Fly.io", + "count": 61 + }, + { + "label": "Hostinger", + "count": 12 + }, + { + "label": "Lovable", + "count": 6 + }, + { + "label": "Heroku", + "count": 5 + }, + { + "label": "OVH", + "count": 5 + }, + { + "label": "Contabo", + "count": 4 + }, + { + "label": "Firebase", + "count": 4 + }, + { + "label": "Bunny.net", + "count": 3 + }, + { + "label": "Github", + "count": 3 + }, + { + "label": "Cloudinary", + "count": 2 + }, + { + "label": "Google Cloud", + "count": 2 + }, + { + "label": "Modal", + "count": 2 + }, + { + "label": "none", + "count": 2 + }, + { + "label": "None", + "count": 2 + }, + { + "label": "Oracle", + "count": 2 + }, + { + "label": "Ovh", + "count": 2 + }, + { + "label": "Self hosting", + "count": 2 + }, + { + "label": "Strato", + "count": 2 + }, + { + "label": ".", + "count": 1 + }, + { + "label": "\"Google Cloud Platform (GCP) for Google Ads API integration and OAuth2 authentication.\"", + "count": 1 + }, + { + "label": "Akamai", + "count": 1 + }, + { + "label": "Alibaba Cloud", + "count": 1 + }, + { + "label": "Atlas", + "count": 1 + }, + { + "label": "beam.cloud", + "count": 1 + }, + { + "label": "Brevo", + "count": 1 + }, + { + "label": "Clerk", + "count": 1 + }, + { + "label": "Cleura", + "count": 1 + }, + { + "label": "Cloud Run", + "count": 1 + }, + { + "label": "cloudflare or vercel", + "count": 1 + }, + { + "label": "Contabo VPS", + "count": 1 + }, + { + "label": "Convex", + "count": 1 + }, + { + "label": "cranl", + "count": 1 + }, + { + "label": "Currently local not cloud based yet", + "count": 1 + }, + { + "label": "Custom Distributed Quantum Safe Harbor", + "count": 1 + }, + { + "label": "deek seek", + "count": 1 + }, + { + "label": "e2e", + "count": 1 + }, + { + "label": "E2e", + "count": 1 + }, + { + "label": "expo", + "count": 1 + }, + { + "label": "Expo Hosting & EAS", + "count": 1 + }, + { + "label": "For now we dont use", + "count": 1 + }, + { + "label": "GitHub", + "count": 1 + }, + { + "label": "GitHub pages", + "count": 1 + }, + { + "label": "GitHub Pages", + "count": 1 + }, + { + "label": "google", + "count": 1 + }, + { + "label": "Google Cloud Run", + "count": 1 + }, + { + "label": "hetzner", + "count": 1 + }, + { + "label": "HF spaces", + "count": 1 + }, + { + "label": "Horizon Hosting VPS", + "count": 1 + }, + { + "label": "Hyperstack", + "count": 1 + }, + { + "label": "I don't know", + "count": 1 + }, + { + "label": "infinityfree", + "count": 1 + }, + { + "label": "Infomaniak", + "count": 1 + }, + { + "label": "Infura", + "count": 1 + }, + { + "label": "Ionos", + "count": 1 + }, + { + "label": "It's pretty cool the app is on Vercel but the apps people make on the app are on fly.io", + "count": 1 + }, + { + "label": "joy.services", + "count": 1 + }, + { + "label": "just locals for now", + "count": 1 + }, + { + "label": "link and sync.", + "count": 1 + }, + { + "label": "linode(akamai)", + "count": 1 + }, + { + "label": "local", + "count": 1 + }, + { + "label": "Local server with supabase selfhosted", + "count": 1 + }, + { + "label": "lovable", + "count": 1 + }, + { + "label": "Lovable (AI-native app platform)", + "count": 1 + }, + { + "label": "Lovable cloud", + "count": 1 + }, + { + "label": "Lovable.dev", + "count": 1 + }, + { + "label": "may change - these are the selected", + "count": 1 + }, + { + "label": "MODAL", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "Namecheap", + "count": 1 + }, + { + "label": "nearlyfreespeech", + "count": 1 + }, + { + "label": "Netcup", + "count": 1 + }, + { + "label": "None / IONOS", + "count": 1 + }, + { + "label": "None yet", + "count": 1 + }, + { + "label": "None yet (not launched yet)", + "count": 1 + }, + { + "label": "Not yet decided either super base", + "count": 1 + }, + { + "label": "NUVEMSHOP", + "count": 1 + }, + { + "label": "OCI", + "count": 1 + }, + { + "label": "OpenRouter", + "count": 1 + }, + { + "label": "Oracle Cloud", + "count": 1 + }, + { + "label": "ovh", + "count": 1 + }, + { + "label": "OVH Cloud", + "count": 1 + }, + { + "label": "own", + "count": 1 + }, + { + "label": "Own Rootserver", + "count": 1 + }, + { + "label": "Own server with caprover", + "count": 1 + }, + { + "label": "Planning to pivot from netlify soon", + "count": 1 + }, + { + "label": "Planning to use Railway for things edge functions cant deal with", + "count": 1 + }, + { + "label": "Porkbun", + "count": 1 + }, + { + "label": "Render github actions", + "count": 1 + }, + { + "label": "Replit", + "count": 1 + }, + { + "label": "Resend", + "count": 1 + }, + { + "label": "resiz.es", + "count": 1 + }, + { + "label": "S3 Canadian Storage (like AWS)", + "count": 1 + }, + { + "label": "Scaleway", + "count": 1 + }, + { + "label": "Scalingo", + "count": 1 + }, + { + "label": "Scratch/Google", + "count": 1 + }, + { + "label": "Sealos", + "count": 1 + }, + { + "label": "Self hosted", + "count": 1 + }, + { + "label": "Self-hosted", + "count": 1 + }, + { + "label": "Self-Hosted", + "count": 1 + }, + { + "label": "Selfhosted", + "count": 1 + }, + { + "label": "Sheets", + "count": 1 + }, + { + "label": "Shiper", + "count": 1 + }, + { + "label": "sky?", + "count": 1 + }, + { + "label": "Stomerhost", + "count": 1 + }, + { + "label": "strato", + "count": 1 + }, + { + "label": "Tencent", + "count": 1 + }, + { + "label": "Trigger.dev", + "count": 1 + }, + { + "label": "Ubicloud", + "count": 1 + }, + { + "label": "Upstash", + "count": 1 + }, + { + "label": "Upstash redis", + "count": 1 + }, + { + "label": "vercel", + "count": 1 + }, + { + "label": "Vertex", + "count": 1 + }, + { + "label": "VPS", + "count": 1 + }, + { + "label": "VPS other countries", + "count": 1 + }, + { + "label": "vps whit coolify", + "count": 1 + }, + { + "label": "Webflow", + "count": 1 + }, + { + "label": "WeWeb", + "count": 1 + }, + { + "label": "Whatever lovable uses", + "count": 1 + }, + { + "label": "Wix (?)", + "count": 1 + }, + { + "label": "Xneelo (South African hosting provider)", + "count": 1 + }, + { + "label": "Yotta", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|frontend_stack|multi|": { + "rows": [ + { + "label": "React", + "count": 1546 + }, + { + "label": "Next.js", + "count": 1456 + }, + { + "label": "Native mobile (iOS / Android)", + "count": 494 + }, + { + "label": "Flutter", + "count": 293 + }, + { + "label": "Expo", + "count": 286 + }, + { + "label": "TanStack", + "count": 205 + }, + { + "label": "Vue", + "count": 193 + }, + { + "label": "HTMX", + "count": 98 + }, + { + "label": "Astro", + "count": 84 + }, + { + "label": "Svelte", + "count": 83 + }, + { + "label": "Remix", + "count": 42 + }, + { + "label": "Angular", + "count": 29 + }, + { + "label": "HTML", + "count": 8 + }, + { + "label": "CSS", + "count": 7 + }, + { + "label": "Vite", + "count": 7 + }, + { + "label": "Lovable", + "count": 5 + }, + { + "label": "Tailwind", + "count": 5 + }, + { + "label": "Nuxt", + "count": 4 + }, + { + "label": "Nuxt.js", + "count": 4 + }, + { + "label": "React Native", + "count": 4 + }, + { + "label": "Streamlit", + "count": 4 + }, + { + "label": "Typescript", + "count": 4 + }, + { + "label": "TypeScript", + "count": 4 + }, + { + "label": "Vanilla JS", + "count": 4 + }, + { + "label": "Custom", + "count": 3 + }, + { + "label": "Html", + "count": 3 + }, + { + "label": "Javascript", + "count": 3 + }, + { + "label": "Kotlin", + "count": 3 + }, + { + "label": "Alpine.js", + "count": 2 + }, + { + "label": "Bolt", + "count": 2 + }, + { + "label": "FlutterFlow", + "count": 2 + }, + { + "label": "I don't know", + "count": 2 + }, + { + "label": "none", + "count": 2 + }, + { + "label": "None", + "count": 2 + }, + { + "label": "Not sure", + "count": 2 + }, + { + "label": "Rust", + "count": 2 + }, + { + "label": "Swift", + "count": 2 + }, + { + "label": "Tailwind CSS", + "count": 2 + }, + { + "label": "Unsure", + "count": 2 + }, + { + "label": "WordPress / Elementor", + "count": 2 + }, + { + "label": ".", + "count": 1 + }, + { + "label": ".NET MAUI", + "count": 1 + }, + { + "label": "\"\"", + "count": 1 + }, + { + "label": "\"Tailwind CSS for premium UI/UX design", + "count": 1 + }, + { + "label": "(custom UI components + AI‑driven widgets", + "count": 1 + }, + { + "label": "4 layers front end stack. custom", + "count": 1 + }, + { + "label": "A no-code tool - bubble", + "count": 1 + }, + { + "label": "AI-generated React", + "count": 1 + }, + { + "label": "and Desktops. Chart.js: A high-performance library that turns your raw lead data into those beautiful", + "count": 1 + }, + { + "label": "and Framer Motion for interactive animations.\"", + "count": 1 + }, + { + "label": "and JavaScript", + "count": 1 + }, + { + "label": "and Python.", + "count": 1 + }, + { + "label": "and tailwind", + "count": 1 + }, + { + "label": "Androids", + "count": 1 + }, + { + "label": "Antigravit", + "count": 1 + }, + { + "label": "Any js stack (vanillajs, react, etc)", + "count": 1 + }, + { + "label": "at youHTML5 & Vanilla JavaScript: We are using standard web technologies so the app is lightning-fast and doesn't require complex \"build steps.\" Tailwind CSS: This is a \"utility-first\" framework used for the design. It allows for a premium", + "count": 1 + }, + { + "label": "Blazor", + "count": 1 + }, + { + "label": "Bolt.new", + "count": 1 + }, + { + "label": "Bolt.new and Lovable", + "count": 1 + }, + { + "label": "bootstrap", + "count": 1 + }, + { + "label": "Bootstrap", + "count": 1 + }, + { + "label": "C / D / Go", + "count": 1 + }, + { + "label": "Capacitor", + "count": 1 + }, + { + "label": "Capacitor (Hybrid Mobile)", + "count": 1 + }, + { + "label": "Chromium", + "count": 1 + }, + { + "label": "Claude", + "count": 1 + }, + { + "label": "Claude Code", + "count": 1 + }, + { + "label": "Cloudflare Turnstile", + "count": 1 + }, + { + "label": "Cocos Engine (Game Engine)", + "count": 1 + }, + { + "label": "css", + "count": 1 + }, + { + "label": "Custom HTML", + "count": 1 + }, + { + "label": "Custom solution", + "count": 1 + }, + { + "label": "custom UI (user interface) that is fully responsive", + "count": 1 + }, + { + "label": "deek seek", + "count": 1 + }, + { + "label": "Deno Fresh", + "count": 1 + }, + { + "label": "Dioxus", + "count": 1 + }, + { + "label": "done by claude", + "count": 1 + }, + { + "label": "Dyad and claude", + "count": 1 + }, + { + "label": "EJS engine", + "count": 1 + }, + { + "label": "Electron", + "count": 1 + }, + { + "label": "Electron and web based applications.", + "count": 1 + }, + { + "label": "Electron/Electron builder", + "count": 1 + }, + { + "label": "Emergent", + "count": 1 + }, + { + "label": "etc", + "count": 1 + }, + { + "label": "eyes", + "count": 1 + }, + { + "label": "FastAPI", + "count": 1 + }, + { + "label": "Flet", + "count": 1 + }, + { + "label": "Flutterflow", + "count": 1 + }, + { + "label": "FLutterFlow", + "count": 1 + }, + { + "label": "GOOGLE APP SCRIPT", + "count": 1 + }, + { + "label": "Htm5", + "count": 1 + }, + { + "label": "html", + "count": 1 + }, + { + "label": "html/css mostly", + "count": 1 + }, + { + "label": "HTML/CSS/JS/TS", + "count": 1 + }, + { + "label": "Html/js", + "count": 1 + }, + { + "label": "HTML/JS", + "count": 1 + }, + { + "label": "hugo", + "count": 1 + }, + { + "label": "I use HTML", + "count": 1 + }, + { + "label": "idk", + "count": 1 + }, + { + "label": "interactive charts. It handles the math and rendering on the user's device. Google Gemini API (2.5 Flash): This is the \"brain\" integrated into your frontend", + "count": 1 + }, + { + "label": "Ionic", + "count": 1 + }, + { + "label": "It's an api based service so vanilla js plugin and php based wp plugin", + "count": 1 + }, + { + "label": "Java", + "count": 1 + }, + { + "label": "JavaFX", + "count": 1 + }, + { + "label": "javascript", + "count": 1 + }, + { + "label": "JavaScript", + "count": 1 + }, + { + "label": "JavaScript (no framework)", + "count": 1 + }, + { + "label": "Javascript and HTML", + "count": 1 + }, + { + "label": "jekyl", + "count": 1 + }, + { + "label": "JS", + "count": 1 + }, + { + "label": "JSON", + "count": 1 + }, + { + "label": "just pure HTML/CSS/JS", + "count": 1 + }, + { + "label": "KMP", + "count": 1 + }, + { + "label": "Kotlin Multiplatform", + "count": 1 + }, + { + "label": "Kudosity", + "count": 1 + }, + { + "label": "Lavable et bolt", + "count": 1 + }, + { + "label": "Livewire", + "count": 1 + }, + { + "label": "lovable -vibecoded", + "count": 1 + }, + { + "label": "Lovable (AI-generated frontend platform)", + "count": 1 + }, + { + "label": "love to test for fun", + "count": 1 + }, + { + "label": "Loveable", + "count": 1 + }, + { + "label": "Low code", + "count": 1 + }, + { + "label": "Lucide", + "count": 1 + }, + { + "label": "Lucide Icons for modern interface visuals", + "count": 1 + }, + { + "label": "Magic Ui", + "count": 1 + }, + { + "label": "many", + "count": 1 + }, + { + "label": "meaning it looks perfect on iPhones", + "count": 1 + }, + { + "label": "n8n", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "Next.js & Vanilla JS", + "count": 1 + }, + { + "label": "No frotend", + "count": 1 + }, + { + "label": "No idea", + "count": 1 + }, + { + "label": "Not using", + "count": 1 + }, + { + "label": "Nothing yet. Expecting native react", + "count": 1 + }, + { + "label": "NUXT", + "count": 1 + }, + { + "label": "PDF.js", + "count": 1 + }, + { + "label": "Plain HTML/CSS/JS", + "count": 1 + }, + { + "label": "Planning to try tanstack", + "count": 1 + }, + { + "label": "Play", + "count": 1 + }, + { + "label": "Preact", + "count": 1 + }, + { + "label": "Python/JS", + "count": 1 + }, + { + "label": "re", + "count": 1 + }, + { + "label": "React Native (vanilla)", + "count": 1 + }, + { + "label": "React Native for iOS", + "count": 1 + }, + { + "label": "React-native", + "count": 1 + }, + { + "label": "Recharts", + "count": 1 + }, + { + "label": "Resend", + "count": 1 + }, + { + "label": "Shadcn", + "count": 1 + }, + { + "label": "skin", + "count": 1 + }, + { + "label": "Slack app", + "count": 1 + }, + { + "label": "Socket.io", + "count": 1 + }, + { + "label": "Softr", + "count": 1 + }, + { + "label": "Solid", + "count": 1 + }, + { + "label": "SolidJS", + "count": 1 + }, + { + "label": "Static on Vercel", + "count": 1 + }, + { + "label": "Storybook", + "count": 1 + }, + { + "label": "Synchfusion / Bootstrap", + "count": 1 + }, + { + "label": "Tailwind CSS shadcn/ui (component library)", + "count": 1 + }, + { + "label": "Tauri", + "count": 1 + }, + { + "label": "Thunkable", + "count": 1 + }, + { + "label": "TipTap", + "count": 1 + }, + { + "label": "Turbo", + "count": 1 + }, + { + "label": "Twilio", + "count": 1 + }, + { + "label": "typescript", + "count": 1 + }, + { + "label": "Typescript + Tailwind", + "count": 1 + }, + { + "label": "Unity", + "count": 1 + }, + { + "label": "unkown", + "count": 1 + }, + { + "label": "Uno / Vanilla JS", + "count": 1 + }, + { + "label": "Vanilla HTML", + "count": 1 + }, + { + "label": "Vanilla HTML/CSS/JavaScript — no framewor", + "count": 1 + }, + { + "label": "Vanilla HTML/CSS/JS", + "count": 1 + }, + { + "label": "Vanilla HTML/CSS/JS — modular multi-file static portal", + "count": 1 + }, + { + "label": "Vanilla JavaScript / HTML / CSS", + "count": 1 + }, + { + "label": "vanilla js", + "count": 1 + }, + { + "label": "Vanilla js", + "count": 1 + }, + { + "label": "Vanilla JS & HTML", + "count": 1 + }, + { + "label": "vanilla TypeScript", + "count": 1 + }, + { + "label": "vercel", + "count": 1 + }, + { + "label": "Vercel", + "count": 1 + }, + { + "label": "vite", + "count": 1 + }, + { + "label": "VITE", + "count": 1 + }, + { + "label": "Vite + React", + "count": 1 + }, + { + "label": "Vite + typescript", + "count": 1 + }, + { + "label": "We don't exactly need frontend..", + "count": 1 + }, + { + "label": "webflow", + "count": 1 + }, + { + "label": "What is offered by Lovable", + "count": 1 + }, + { + "label": "Whatever stack Bolt uses", + "count": 1 + }, + { + "label": "Wized", + "count": 1 + }, + { + "label": "Zustand", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|building_ai_agents|single|": { + "rows": [ + { + "label": "Yes", + "count": 1420 + }, + { + "label": "No", + "count": 780 + }, + { + "label": "Not sure", + "count": 539 + } + ], + "respondentCount": 2739 + }, + "2026|ai_agents_problems|multi|": { + "rows": [ + { + "label": "Workflow automation", + "count": 831 + }, + { + "label": "Data analysis", + "count": 701 + }, + { + "label": "Personalization and recommendations", + "count": 570 + }, + { + "label": "Automating customer support", + "count": 533 + }, + { + "label": "Content generation", + "count": 525 + }, + { + "label": "Research assistance", + "count": 443 + }, + { + "label": "Sales and lead generation", + "count": 409 + }, + { + "label": "Education and training", + "count": 387 + }, + { + "label": "Internal tools such as Slackbots and workflows", + "count": 349 + }, + { + "label": "Financial modeling or forecasting", + "count": 288 + }, + { + "label": "DevOps and incident management", + "count": 277 + }, + { + "label": "Scientific research", + "count": 168 + }, + { + "label": ".", + "count": 1 + }, + { + "label": "\"Real-time ROI auditing and automated detection of budget waste in Google Ads campaigns.\"", + "count": 1 + }, + { + "label": "Agent for user", + "count": 1 + }, + { + "label": "Agentic Infrastructure (AIOPS)", + "count": 1 + }, + { + "label": "AI actually being useful for your day-to-day life", + "count": 1 + }, + { + "label": "ai inbox handling", + "count": 1 + }, + { + "label": "all", + "count": 1 + }, + { + "label": "All", + "count": 1 + }, + { + "label": "and human-reviewed legal workflow assistance.", + "count": 1 + }, + { + "label": "Automated engineering design and inventory optimization", + "count": 1 + }, + { + "label": "Automated literacy assessment and pedagogical scaffolding.", + "count": 1 + }, + { + "label": "automating influencer marketing", + "count": 1 + }, + { + "label": "Being honest in what task it can do and better memory", + "count": 1 + }, + { + "label": "case preparation support", + "count": 1 + }, + { + "label": "Civic transparency", + "count": 1 + }, + { + "label": "Co-founder", + "count": 1 + }, + { + "label": "Coaching", + "count": 1 + }, + { + "label": "Code generation for developers", + "count": 1 + }, + { + "label": "Coding and developement", + "count": 1 + }, + { + "label": "compliance checks", + "count": 1 + }, + { + "label": "Consumer healthcare concierge", + "count": 1 + }, + { + "label": "Content Capture / Data Gathering", + "count": 1 + }, + { + "label": "custom agents for GIS and RAG prep", + "count": 1 + }, + { + "label": "Custom N8N flows", + "count": 1 + }, + { + "label": "Customer Support: Virtual Assistants- we power digital products that serve as virtual assistants", + "count": 1 + }, + { + "label": "Data Extraction and structuring", + "count": 1 + }, + { + "label": "Data Scraping", + "count": 1 + }, + { + "label": "document structuring", + "count": 1 + }, + { + "label": "Emotional Support", + "count": 1 + }, + { + "label": "Enabling our creators to sell their custom agents", + "count": 1 + }, + { + "label": "enagaging customers in real-time to improve responsiveness", + "count": 1 + }, + { + "label": "Error management", + "count": 1 + }, + { + "label": "Ethical transparency and trauma recovery rates", + "count": 1 + }, + { + "label": "Everything for small business", + "count": 1 + }, + { + "label": "generate itinerary based on customer response", + "count": 1 + }, + { + "label": "Hackable Personal AI Agent on Edge Hardware", + "count": 1 + }, + { + "label": "Helping customers get more insight in their data", + "count": 1 + }, + { + "label": "Helping users verify the authenticity of the information they see online", + "count": 1 + }, + { + "label": "Internal Tools: SaaS integration - Our agents are designed to embed into existing enterprise SaaS workflows (like HR and CRM systems) to streamline internal functions like payroll and onboarding.", + "count": 1 + }, + { + "label": "Inventory management", + "count": 1 + }, + { + "label": "Legal intake triage", + "count": 1 + }, + { + "label": "Legal Service", + "count": 1 + }, + { + "label": "Listen to Users without judgement", + "count": 1 + }, + { + "label": "Market regime detection & decision filtering (when not to trade)", + "count": 1 + }, + { + "label": "Mentorship", + "count": 1 + }, + { + "label": "more or less like a true friend..", + "count": 1 + }, + { + "label": "navigation on a website", + "count": 1 + }, + { + "label": "Organization", + "count": 1 + }, + { + "label": "Personalized Cooking Recipe Generation and Grocery Ordering", + "count": 1 + }, + { + "label": "Planning", + "count": 1 + }, + { + "label": "Product demos", + "count": 1 + }, + { + "label": "Product Management", + "count": 1 + }, + { + "label": "Research", + "count": 1 + }, + { + "label": "Saving time :)", + "count": 1 + }, + { + "label": "System Design Visualization", + "count": 1 + }, + { + "label": "Tariff Classification", + "count": 1 + }, + { + "label": "They will be digital assistants", + "count": 1 + }, + { + "label": "Translation and editing", + "count": 1 + }, + { + "label": "User personalisation", + "count": 1 + }, + { + "label": "user-proxy RAG", + "count": 1 + }, + { + "label": "Warehouse automation", + "count": 1 + }, + { + "label": "Website Building", + "count": 1 + }, + { + "label": "Zero Trust security monitoring and identity verification", + "count": 1 + } + ], + "respondentCount": 1420 + }, + "2026|prompt_management|multi|": { + "rows": [ + { + "label": "No formal system yet", + "count": 674 + }, + { + "label": "Hardcoded in source code", + "count": 375 + }, + { + "label": "Version-controlled prompt files", + "count": 348 + }, + { + "label": "Prompt management platform (PromptLayer, Humanloop, etc.)", + "count": 157 + }, + { + "label": "Feature flags for prompt variants", + "count": 137 + }, + { + "label": "CMS or config service", + "count": 120 + }, + { + "label": "\"Template-based prompt architecture with dynamic data injection via Gemini for context-aware Google Ads auditing.\"", + "count": 1 + }, + { + "label": "(dynamic prompts via orchestrator + RAG)", + "count": 1 + }, + { + "label": "always second guessing for hallucinationations", + "count": 1 + }, + { + "label": "and monitoring prompts across production environments. This platform-based approach avoids the fragmentation of low-code tools.", + "count": 1 + }, + { + "label": "and sometimes I will ask several AI tools the same prompt / for counsel/advice/reasoning", + "count": 1 + }, + { + "label": "built custom system", + "count": 1 + }, + { + "label": "claude code", + "count": 1 + }, + { + "label": "cloned", + "count": 1 + }, + { + "label": "Custom LLM assisted git tracking for configs and prompt md files.", + "count": 1 + }, + { + "label": "custom prompt cms attached to custom mcp server", + "count": 1 + }, + { + "label": "deploying", + "count": 1 + }, + { + "label": "Documenting features", + "count": 1 + }, + { + "label": "frengency based", + "count": 1 + }, + { + "label": "Hardcoded in source code but can pass in an override prompt right from the browser", + "count": 1 + }, + { + "label": "hardcoded in source code but we really should use feature flags and .env injection tbh", + "count": 1 + }, + { + "label": "Human-in-the-loop validation against a predefined gold dataset/skill showcase", + "count": 1 + }, + { + "label": "I did not build it so I am unsure", + "count": 1 + }, + { + "label": "Input is the prompt", + "count": 1 + }, + { + "label": "Langfuse", + "count": 1 + }, + { + "label": "Language Translation System generated prompts per specialty; with prompt language-based system theory and optimization to reduce # of versions an LLM generates by context", + "count": 1 + }, + { + "label": "Manual prompt iteration with environment-based configs", + "count": 1 + }, + { + "label": "Manual testing / prompt iteration", + "count": 1 + }, + { + "label": "Mastra.ai framework", + "count": 1 + }, + { + "label": "Native version-controlled prompt text in our platform", + "count": 1 + }, + { + "label": "Non of the above", + "count": 1 + }, + { + "label": "not merging or committing to main repo", + "count": 1 + }, + { + "label": "Not started yet", + "count": 1 + }, + { + "label": "not yet", + "count": 1 + }, + { + "label": "OpenAI prompt objects", + "count": 1 + }, + { + "label": "OpenIA", + "count": 1 + }, + { + "label": "Plan to change into live function", + "count": 1 + }, + { + "label": "Posthog", + "count": 1 + }, + { + "label": "Project specific: branch of main repo", + "count": 1 + }, + { + "label": "Prompt management + version control + feature flags", + "count": 1 + }, + { + "label": "Prompt Verification Agent (in-house)", + "count": 1 + }, + { + "label": "prompts are handled through internal documentation and manual iteration; production prompt versioning will be added before launch of AI features.", + "count": 1 + }, + { + "label": "Purpose built suit of apps designed for AI agents interaction", + "count": 1 + }, + { + "label": "redacting pii/sensitive data", + "count": 1 + }, + { + "label": "Run time prompt composition based off of user data and a static template.", + "count": 1 + }, + { + "label": "Self and by in combination with skills", + "count": 1 + }, + { + "label": "Still in development", + "count": 1 + }, + { + "label": "testing", + "count": 1 + }, + { + "label": "then merge the prompts into a single consolidated gauntlet tested output. Never to touch live prod data.", + "count": 1 + }, + { + "label": "Undecided", + "count": 1 + }, + { + "label": "Use cases feeded as DB registries and user input for specific tasks", + "count": 1 + }, + { + "label": "User prompts saved to templates in db", + "count": 1 + }, + { + "label": "user supplied", + "count": 1 + }, + { + "label": "uses version controlled prompt files", + "count": 1 + }, + { + "label": "We are not managing production AI prompts yet because customer-facing AI agents are not live. For now", + "count": 1 + }, + { + "label": "We built our own system/database", + "count": 1 + }, + { + "label": "We have our own prompt management platform (Zen Platform)", + "count": 1 + }, + { + "label": "which advocates using a centralized system for versioning", + "count": 1 + }, + { + "label": "With the help of my product", + "count": 1 + } + ], + "respondentCount": 1420 + }, + "2026|ai_evaluation_testing|multi|": { + "rows": [ + { + "label": "Manual testing / prompt iteration", + "count": 733 + }, + { + "label": "We don't have a formal eval process yet", + "count": 518 + }, + { + "label": "User feedback loops", + "count": 383 + }, + { + "label": "LLM-as-judge", + "count": 364 + }, + { + "label": "A/B testing in production", + "count": 285 + }, + { + "label": "Automated eval suites (custom-built)", + "count": 239 + }, + { + "label": "Third-party eval tools (Braintrust, Humanloop, etc.)", + "count": 106 + }, + { + "label": ".", + "count": 1 + }, + { + "label": "\"Cross-model verification using Gemini 3 Flash to audit and refine agent reasoning before delivering final Google Ads diagnostics.\"", + "count": 1 + }, + { + "label": "(orchestrator-level validation + compliance checks)", + "count": 1 + }, + { + "label": "1 pentesting otro pentesting y 1 explorador cuando todos llegamos a 1 acuerdo es que se ejecuta la accion y luego que se contruye 1 blocked completo hacemos otra deep explorer con MCP Y SKILL para el pentesting", + "count": 1 + }, + { + "label": "Also manual code review in critical areas", + "count": 1 + }, + { + "label": "analizo el resultado personalmente", + "count": 1 + }, + { + "label": "archtect to core vector", + "count": 1 + }, + { + "label": "axLLM or DSPYs type of wrameworks", + "count": 1 + }, + { + "label": "Creating this currently", + "count": 1 + }, + { + "label": "Custom python scripts", + "count": 1 + }, + { + "label": "custom test specific mcp server for main", + "count": 1 + }, + { + "label": "Depends on AI scope (eg. RAGAS, DeepEval, ARES, etc.)", + "count": 1 + }, + { + "label": "Human review", + "count": 1 + }, + { + "label": "human-in-the-loop evals", + "count": 1 + }, + { + "label": "i dont know what i dont know", + "count": 1 + }, + { + "label": "i dont use", + "count": 1 + }, + { + "label": "langfuse", + "count": 1 + }, + { + "label": "luego comparto respuesta con 3 agentes 1 general", + "count": 1 + }, + { + "label": "Mastra.ai eval framework", + "count": 1 + }, + { + "label": "Not started", + "count": 1 + }, + { + "label": "Not yet there", + "count": 1 + }, + { + "label": "QA team with a custom-built platform", + "count": 1 + }, + { + "label": "Using evaluation from Google ADK Web", + "count": 1 + }, + { + "label": "We are not using AI agents in production yet. Current evaluation is mainly manual prompt testing and human review", + "count": 1 + }, + { + "label": "we use custom preset for each type of testing cases", + "count": 1 + }, + { + "label": "with plans to add structured evals before any customer-facing AI workflow.", + "count": 1 + } + ], + "respondentCount": 1420 + }, + "2026|ai_observability|multi|": { + "rows": [ + { + "label": "We don't monitor AI workloads specifically", + "count": 838 + }, + { + "label": "Custom-built dashboards", + "count": 284 + }, + { + "label": "OpenTelemetry", + "count": 133 + }, + { + "label": "Langfuse", + "count": 104 + }, + { + "label": "LangSmith", + "count": 97 + }, + { + "label": "Datadog", + "count": 93 + }, + { + "label": "Weights & Biases", + "count": 55 + }, + { + "label": "Arize", + "count": 32 + }, + { + "label": "Helicone", + "count": 29 + }, + { + "label": "Posthog", + "count": 6 + }, + { + "label": "PostHog", + "count": 5 + }, + { + "label": "Braintrust", + "count": 2 + }, + { + "label": "none", + "count": 2 + }, + { + "label": "None", + "count": 2 + }, + { + "label": "None yet", + "count": 2 + }, + { + "label": "posthog", + "count": 2 + }, + { + "label": "Sentry", + "count": 2 + }, + { + "label": "\"Supabase Logs for real-time API monitoring and custom edge function tracing to ensure Google Ads data integrity.\"", + "count": 1 + }, + { + "label": "(orchestrator-level monitoring + audit trail)", + "count": 1 + }, + { + "label": "AG", + "count": 1 + }, + { + "label": "and performance metrics to troubleshoot AI agents.", + "count": 1 + }, + { + "label": "and pipeline steps. It captures traces", + "count": 1 + }, + { + "label": "As I have not built it yet I don't know and I am learning as I go along", + "count": 1 + }, + { + "label": "aún no hemos implementado herramientas especializadas (como LangSmith o Helicone) para rastrear los costos", + "count": 1 + }, + { + "label": "AvA System", + "count": 1 + }, + { + "label": "AWS CloudWatch ought be implemented if not utilized already.", + "count": 1 + }, + { + "label": "AWS console", + "count": 1 + }, + { + "label": "Better Stack", + "count": 1 + }, + { + "label": "botpress", + "count": 1 + }, + { + "label": "conversation", + "count": 1 + }, + { + "label": "dependemos de los paneles básicos que nos dan los proveedores (OpenAI/Google) y de nuestras propias pruebas manuales", + "count": 1 + }, + { + "label": "Elastic", + "count": 1 + }, + { + "label": "G: We don't monitor AI workloads specifically (No monitoreamos las cargas de trabajo de IA específicamente) ¿Por qué? Actualmente estamos centrados en construir la funcionalidad core y la experiencia de usuario. Como vimos en las preguntas anteriores sobre observabilidad general", + "count": 1 + }, + { + "label": "GCP", + "count": 1 + }, + { + "label": "Grafana + Prometheus", + "count": 1 + }, + { + "label": "Human Interventions", + "count": 1 + }, + { + "label": "Human-in-the-loop validation against a predefined gold dataset/skill showcase", + "count": 1 + }, + { + "label": "i dont use", + "count": 1 + }, + { + "label": "lo cual es perfectamente aceptable y normal en esta etapa del proyecto.", + "count": 1 + }, + { + "label": "Logfire", + "count": 1 + }, + { + "label": "loggingsucks.com -> postgreas", + "count": 1 + }, + { + "label": "LogRocket", + "count": 1 + }, + { + "label": "logs", + "count": 1 + }, + { + "label": "Mastra Observability", + "count": 1 + }, + { + "label": "Mixpanel", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "NeMo", + "count": 1 + }, + { + "label": "no cost attribution per installation", + "count": 1 + }, + { + "label": "no drift detection. we know we should have it", + "count": 1 + }, + { + "label": "no per-request latency", + "count": 1 + }, + { + "label": "Non", + "count": 1 + }, + { + "label": "None for now", + "count": 1 + }, + { + "label": "None.", + "count": 1 + }, + { + "label": "Not having any yet", + "count": 1 + }, + { + "label": "not sure", + "count": 1 + }, + { + "label": "Not using", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "Observezen: This is our internal", + "count": 1 + }, + { + "label": "Opik", + "count": 1 + }, + { + "label": "Prompt metrics", + "count": 1 + }, + { + "label": "promptfoo", + "count": 1 + }, + { + "label": "proprietary module within the Zen Platform", + "count": 1 + }, + { + "label": "Provider-side dashboards only (OpenAI usage page, Anthropic console). No token-level tracking", + "count": 1 + }, + { + "label": "Respan", + "count": 1 + }, + { + "label": "self", + "count": 1 + }, + { + "label": "self built", + "count": 1 + }, + { + "label": "Still deciding", + "count": 1 + }, + { + "label": "Supabase Edge Functions Logs.", + "count": 1 + }, + { + "label": "tailored specifically for deep visibility into agent execution", + "count": 1 + }, + { + "label": "Telegram bot alerts + DigitalOcean native monitoring + Google Analytics", + "count": 1 + }, + { + "label": "the trigger hasn't hit yet (>500$/month AI spend)", + "count": 1 + }, + { + "label": "tokens o la latencia de cada llamada a la IA de forma granular. Por ahora", + "count": 1 + }, + { + "label": "Using IAC solutions", + "count": 1 + }, + { + "label": "Vercel Analytics + Supabase logs", + "count": 1 + }, + { + "label": "Vercel Dashboard", + "count": 1 + }, + { + "label": "We don't have them running yet", + "count": 1 + }, + { + "label": "we have a plan", + "count": 1 + }, + { + "label": "Working on this", + "count": 1 + } + ], + "respondentCount": 1420 + }, + "2026|mcp_adoption|single|": { + "rows": [ + { + "label": "Yes, actively using in production", + "count": 412 + }, + { + "label": "Aware of it but not using yet", + "count": 408 + }, + { + "label": "Yes, experimenting", + "count": 400 + }, + { + "label": "Not familiar with MCP", + "count": 200 + } + ], + "respondentCount": 1420 + }, + "2026|observability|multi|": { + "rows": [ + { + "label": "We don’t use observability tools yet", + "count": 1529 + }, + { + "label": "Sentry", + "count": 509 + }, + { + "label": "Custom solution", + "count": 269 + }, + { + "label": "Grafana", + "count": 250 + }, + { + "label": "OpenTelemetry", + "count": 177 + }, + { + "label": "Datadog", + "count": 138 + }, + { + "label": "Prometheus", + "count": 137 + }, + { + "label": "Honeycomb", + "count": 51 + }, + { + "label": "New Relic", + "count": 38 + }, + { + "label": "Posthog", + "count": 30 + }, + { + "label": "PostHog", + "count": 27 + }, + { + "label": "Vercel", + "count": 7 + }, + { + "label": "None", + "count": 6 + }, + { + "label": "Langfuse", + "count": 5 + }, + { + "label": "Axiom", + "count": 4 + }, + { + "label": "Cloudflare", + "count": 3 + }, + { + "label": "Vercel Analytics", + "count": 3 + }, + { + "label": "Zabbix", + "count": 3 + }, + { + "label": "Betterstack", + "count": 2 + }, + { + "label": "Cloudwatch", + "count": 2 + }, + { + "label": "coralogix", + "count": 2 + }, + { + "label": "Dash0", + "count": 2 + }, + { + "label": "Google Analytics", + "count": 2 + }, + { + "label": "langfuse", + "count": 2 + }, + { + "label": "Logfire", + "count": 2 + }, + { + "label": "mixpanel", + "count": 2 + }, + { + "label": "none", + "count": 2 + }, + { + "label": "Other", + "count": 2 + }, + { + "label": "vercel", + "count": 2 + }, + { + "label": ".", + "count": 1 + }, + { + "label": "\"Vercel Analytics & Logs", + "count": 1 + }, + { + "label": "analytics by google", + "count": 1 + }, + { + "label": "and Logtail.\"", + "count": 1 + }, + { + "label": "and manual alerts for system issues. We plan to expand to a full observability stack with Grafana and OpenTelemetry in the future.", + "count": 1 + }, + { + "label": "Antithesis", + "count": 1 + }, + { + "label": "Application Insights", + "count": 1 + }, + { + "label": "AppSignal", + "count": 1 + }, + { + "label": "Aptabase", + "count": 1 + }, + { + "label": "Azure App Insights", + "count": 1 + }, + { + "label": "azure solutions", + "count": 1 + }, + { + "label": "basic analytics dashboards for monitoring user activity", + "count": 1 + }, + { + "label": "Because we use UptimeRobot.", + "count": 1 + }, + { + "label": "Better Auth Dashboard", + "count": 1 + }, + { + "label": "Better Stack", + "count": 1 + }, + { + "label": "betterstack", + "count": 1 + }, + { + "label": "BetterStack", + "count": 1 + }, + { + "label": "Betterstack through sentry dsn", + "count": 1 + }, + { + "label": "betterstack.com", + "count": 1 + }, + { + "label": "bugsink", + "count": 1 + }, + { + "label": "CheckMK", + "count": 1 + }, + { + "label": "Clarity", + "count": 1 + }, + { + "label": "ClickStack", + "count": 1 + }, + { + "label": "Cloudflare Telemetry", + "count": 1 + }, + { + "label": "Currently", + "count": 1 + }, + { + "label": "Currently no any specific. Google analytics", + "count": 1 + }, + { + "label": "custom", + "count": 1 + }, + { + "label": "Custom", + "count": 1 + }, + { + "label": "custom built local first", + "count": 1 + }, + { + "label": "dash0", + "count": 1 + }, + { + "label": "Digital ocean built in monitoring", + "count": 1 + }, + { + "label": "ElasticSearch", + "count": 1 + }, + { + "label": "elixir/liveView", + "count": 1 + }, + { + "label": "eye balls", + "count": 1 + }, + { + "label": "Firebase", + "count": 1 + }, + { + "label": "Firebase Analytics", + "count": 1 + }, + { + "label": "Firebase Genkit and custom solution", + "count": 1 + }, + { + "label": "GA", + "count": 1 + }, + { + "label": "GCP metrics", + "count": 1 + }, + { + "label": "GCP Observability Suite", + "count": 1 + }, + { + "label": "Github", + "count": 1 + }, + { + "label": "Github actions", + "count": 1 + }, + { + "label": "Google analytics", + "count": 1 + }, + { + "label": "Google Analytics / Firebase Crashlytics", + "count": 1 + }, + { + "label": "Google cloud", + "count": 1 + }, + { + "label": "Google Cloud tools", + "count": 1 + }, + { + "label": "Google tag manager", + "count": 1 + }, + { + "label": "Hentrix", + "count": 1 + }, + { + "label": "html", + "count": 1 + }, + { + "label": "I built an integrated tool", + "count": 1 + }, + { + "label": "I implemented logs in my backend for monitoring and observation", + "count": 1 + }, + { + "label": "Inbuilt tools provided by supabase and Cloudflare workers.", + "count": 1 + }, + { + "label": "jj", + "count": 1 + }, + { + "label": "LangFuse", + "count": 1 + }, + { + "label": "Langfuse (LLM observability)", + "count": 1 + }, + { + "label": "LangFuse and DBOS", + "count": 1 + }, + { + "label": "Log Drains", + "count": 1 + }, + { + "label": "LogRocket", + "count": 1 + }, + { + "label": "Loki", + "count": 1 + }, + { + "label": "Lovable", + "count": 1 + }, + { + "label": "Lumigo", + "count": 1 + }, + { + "label": "manual - in dev", + "count": 1 + }, + { + "label": "Mixpanel", + "count": 1 + }, + { + "label": "Monti APM", + "count": 1 + }, + { + "label": "Neon database metrics", + "count": 1 + }, + { + "label": "NONE", + "count": 1 + }, + { + "label": "None for now", + "count": 1 + }, + { + "label": "nothing", + "count": 1 + }, + { + "label": "Observability from Netlify", + "count": 1 + }, + { + "label": "Only the built-in tools organic to Supabase", + "count": 1 + }, + { + "label": "Own build", + "count": 1 + }, + { + "label": "Paystack", + "count": 1 + }, + { + "label": "Plausible", + "count": 1 + }, + { + "label": "Post Hog", + "count": 1 + }, + { + "label": "posthog", + "count": 1 + }, + { + "label": "Posthog + Axiom", + "count": 1 + }, + { + "label": "PostHog + django logs with custom dashboards", + "count": 1 + }, + { + "label": "Posthog.", + "count": 1 + }, + { + "label": "posthog. axiom", + "count": 1 + }, + { + "label": "Private", + "count": 1 + }, + { + "label": "Prop", + "count": 1 + }, + { + "label": "Proprietary software", + "count": 1 + }, + { + "label": "railway", + "count": 1 + }, + { + "label": "Rejourney.co", + "count": 1 + }, + { + "label": "Signoz", + "count": 1 + }, + { + "label": "Stripe", + "count": 1 + }, + { + "label": "Supabase", + "count": 1 + }, + { + "label": "SUPABASE", + "count": 1 + }, + { + "label": "Supabase dashboard monitoring", + "count": 1 + }, + { + "label": "Supabase Dashboard Monitoring", + "count": 1 + }, + { + "label": "Supabase logs", + "count": 1 + }, + { + "label": "Supabase tools only", + "count": 1 + }, + { + "label": "supbase dashboard", + "count": 1 + }, + { + "label": "Superbase", + "count": 1 + }, + { + "label": "telegram Bot", + "count": 1 + }, + { + "label": "umami", + "count": 1 + }, + { + "label": "UptimeKuma", + "count": 1 + }, + { + "label": "UptimeRobot", + "count": 1 + }, + { + "label": "Used Datadog for a while but since moving to Supabase", + "count": 1 + }, + { + "label": "Using the AI for this", + "count": 1 + }, + { + "label": "Vercel analysis", + "count": 1 + }, + { + "label": "Vercel Analytics & built-in observability", + "count": 1 + }, + { + "label": "Vercel analytics + speed insights", + "count": 1 + }, + { + "label": "Vercel Analytics/Posthog", + "count": 1 + }, + { + "label": "Vercel Dashboard", + "count": 1 + }, + { + "label": "vercel logs", + "count": 1 + }, + { + "label": "Vercel Logs / Observability", + "count": 1 + }, + { + "label": "Vercels builtin", + "count": 1 + }, + { + "label": "vexo", + "count": 1 + }, + { + "label": "Vexo", + "count": 1 + }, + { + "label": "we use Supabase built-in logging for error tracking", + "count": 1 + }, + { + "label": "yet to decide on it.", + "count": 1 + }, + { + "label": "Яндекс Метрика", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|growth_tools|multi|": { + "rows": [ + { + "label": "Google Analytics", + "count": 419 + }, + { + "label": "I don’t track this yet", + "count": 323 + }, + { + "label": "Custom-built dashboards", + "count": 211 + }, + { + "label": "PostHog", + "count": 155 + }, + { + "label": "HubSpot", + "count": 59 + }, + { + "label": "Mixpanel", + "count": 35 + }, + { + "label": "Amplitude", + "count": 31 + }, + { + "label": "Salesforce", + "count": 29 + }, + { + "label": "Segment", + "count": 23 + }, + { + "label": "Rudderstack", + "count": 9 + }, + { + "label": "Plausible", + "count": 5 + }, + { + "label": "Notion", + "count": 2 + }, + { + "label": "Umami", + "count": 2 + }, + { + "label": "\"Supabase SQL snippets and Edge Functions for real-time conversion tracking", + "count": 1 + }, + { + "label": "Ahrefs", + "count": 1 + }, + { + "label": "Analyst by lovable", + "count": 1 + }, + { + "label": "Attio", + "count": 1 + }, + { + "label": "Axiom", + "count": 1 + }, + { + "label": "Built a custom one", + "count": 1 + }, + { + "label": "Clarity", + "count": 1 + }, + { + "label": "clarity/supabase", + "count": 1 + }, + { + "label": "ClickUp", + "count": 1 + }, + { + "label": "cloudflare analytics", + "count": 1 + }, + { + "label": "combined with Hotmart’s sales API for revenue attribution.\"", + "count": 1 + }, + { + "label": "DataFast", + "count": 1 + }, + { + "label": "GoHighLevel", + "count": 1 + }, + { + "label": "Google Sheets", + "count": 1 + }, + { + "label": "HighLevel", + "count": 1 + }, + { + "label": "I don’t need to track it", + "count": 1 + }, + { + "label": "I dont at the moment", + "count": 1 + }, + { + "label": "Invoice Ninja", + "count": 1 + }, + { + "label": "lightdash", + "count": 1 + }, + { + "label": "Manually on sheets", + "count": 1 + }, + { + "label": "Meta", + "count": 1 + }, + { + "label": "Microsoft Clarity", + "count": 1 + }, + { + "label": "none", + "count": 1 + }, + { + "label": "nothing yet", + "count": 1 + }, + { + "label": "Orgânico", + "count": 1 + }, + { + "label": "Orwel.io", + "count": 1 + }, + { + "label": "Own implementation", + "count": 1 + }, + { + "label": "pipedrive", + "count": 1 + }, + { + "label": "Pipedrive", + "count": 1 + }, + { + "label": "Pixel meta ads", + "count": 1 + }, + { + "label": "plausible", + "count": 1 + }, + { + "label": "Quickbooks", + "count": 1 + }, + { + "label": "rd station", + "count": 1 + }, + { + "label": "Rejourney.co", + "count": 1 + }, + { + "label": "Replit analytics", + "count": 1 + }, + { + "label": "Revenuecat", + "count": 1 + }, + { + "label": "SaaSGrid", + "count": 1 + }, + { + "label": "Simple Analytics", + "count": 1 + }, + { + "label": "Stat", + "count": 1 + }, + { + "label": "Supabase Dashboards", + "count": 1 + }, + { + "label": "Topline", + "count": 1 + }, + { + "label": "TwentyCRM", + "count": 1 + }, + { + "label": "umami", + "count": 1 + }, + { + "label": "Umami analitic", + "count": 1 + }, + { + "label": "Vercel", + "count": 1 + }, + { + "label": "vercel analytics", + "count": 1 + }, + { + "label": "Vercel Analytics for web traffic tracking and native Supabase backend metrics integrated into our custom-built CRM dashboard.", + "count": 1 + }, + { + "label": "We don't track how many users converted. We track which enterprisse deal is moving from conversation -> contract -> deployment -> expansion?", + "count": 1 + }, + { + "label": "We dont track this", + "count": 1 + }, + { + "label": "Wix", + "count": 1 + }, + { + "label": "Zoho", + "count": 1 + }, + { + "label": "Zoho Bigin", + "count": 1 + }, + { + "label": "zoho books", + "count": 1 + }, + { + "label": "Яндекс Метрика", + "count": 1 + } + ], + "respondentCount": 967 + }, + "2026|dev_community_built|single|": { + "rows": [ + { + "label": "No", + "count": 456 + }, + { + "label": "In progress / planning to", + "count": 229 + }, + { + "label": "Not relevant to our audience", + "count": 184 + }, + { + "label": "Yes", + "count": 98 + } + ], + "respondentCount": 967 + }, + "2026|initial_paying_customers|multi|": { + "rows": [ + { + "label": "Personal/professional network", + "count": 545 + }, + { + "label": "Cold outreach or sales", + "count": 335 + }, + { + "label": "Inbound from social media (Twitter, LinkedIn, etc.)", + "count": 281 + }, + { + "label": "Content (blog, newsletter, SEO)", + "count": 206 + }, + { + "label": "Developer communities (Discord, Slack, Reddit, etc.)", + "count": 131 + }, + { + "label": "Open source users who converted", + "count": 75 + }, + { + "label": "Accelerators/incubators", + "count": 63 + }, + { + "label": "Hacker News or Product Hunt", + "count": 57 + }, + { + "label": "No paying customers yet", + "count": 4 + }, + { + "label": "None yet", + "count": 2 + }, + { + "label": "Not yet", + "count": 2 + }, + { + "label": "\"Direct partnerships with digital marketing agencies and small retail business owners who need automated Google Ads auditing.\"", + "count": 1 + }, + { + "label": "(referrals + operational partnerships)", + "count": 1 + }, + { + "label": "1) Direct enterprise sales: custom deployments, co-building with clients, high-ticket deals; 2) Partnership / ecosystem: indirect acquisition via Consulting firms, implementation partners, enterprise vendors, 3) Content / thought leadership: we do publish - Research blogs, Enterprise AI narratives", + "count": 1 + }, + { + "label": "ads", + "count": 1 + }, + { + "label": "Advertisement", + "count": 1 + }, + { + "label": "Advertising", + "count": 1 + }, + { + "label": "and social/inbound interest during launch.", + "count": 1 + }, + { + "label": "and they came from people who already worked with us", + "count": 1 + }, + { + "label": "ASO", + "count": 1 + }, + { + "label": "Attending in person networking events.", + "count": 1 + }, + { + "label": "aun no he iniciado", + "count": 1 + }, + { + "label": "Beta-testing via specialized niche projects", + "count": 1 + }, + { + "label": "but it was through a different platform. Now", + "count": 1 + }, + { + "label": "but we have already hired a marketing company who is preparing content for Instagram", + "count": 1 + }, + { + "label": "but will be through connections", + "count": 1 + }, + { + "label": "by knowing what is needed", + "count": 1 + }, + { + "label": "ChatGPT!", + "count": 1 + }, + { + "label": "Colleges - Partnering up with colleges would be the best initial start", + "count": 1 + }, + { + "label": "con beta cerrada planificada para los próximos meses.", + "count": 1 + }, + { + "label": "Consumer startup so from paid ads", + "count": 1 + }, + { + "label": "currently acquiring early users through outreach and network", + "count": 1 + }, + { + "label": "Currently in beta testing / Pre-revenue", + "count": 1 + }, + { + "label": "Currently in pre-launch / invite-only phase with an active waitlist. Initial interest is coming from targeted outreach.", + "count": 1 + }, + { + "label": "delayed monetization to proove product points", + "count": 1 + }, + { + "label": "Don't have one yet..", + "count": 1 + }, + { + "label": "don't have paying customers yet", + "count": 1 + }, + { + "label": "Don't have paying customers yet. This is brand new.", + "count": 1 + }, + { + "label": "Don't yet", + "count": 1 + }, + { + "label": "Early users came from direct trust-based referrals", + "count": 1 + }, + { + "label": "eBay", + "count": 1 + }, + { + "label": "Events", + "count": 1 + }, + { + "label": "Facebook and Tik Tok and also paid ads", + "count": 1 + }, + { + "label": "Founding members rn", + "count": 1 + }, + { + "label": "Friends", + "count": 1 + }, + { + "label": "Google Cloud Partnership", + "count": 1 + }, + { + "label": "Google SEM", + "count": 1 + }, + { + "label": "GTM effort imminent: warm network & organic search", + "count": 1 + }, + { + "label": "Haven't got any yet", + "count": 1 + }, + { + "label": "Haven’t launched yet", + "count": 1 + }, + { + "label": "I have no payed customers yet", + "count": 1 + }, + { + "label": "I have started making a few LinkedIn posts but plan to advertise in the future", + "count": 1 + }, + { + "label": "I haven't launched it yet. I was curious about the options.", + "count": 1 + }, + { + "label": "I know people who work in Family Offices who will love this product. I’ll start with them and then go to banks", + "count": 1 + }, + { + "label": "just me", + "count": 1 + }, + { + "label": "kind of pre deal with our first client. so we have enough to go through the initla stage", + "count": 1 + }, + { + "label": "Meta ads", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "No customers yet", + "count": 1 + }, + { + "label": "No I haven't yet got paid subscriptions", + "count": 1 + }, + { + "label": "no paying customers yet", + "count": 1 + }, + { + "label": "No paying customers yet (beta)", + "count": 1 + }, + { + "label": "No paying customers yet (pre-revenue)", + "count": 1 + }, + { + "label": "No paying customers yet (pre‑revenue)", + "count": 1 + }, + { + "label": "no paying users yet", + "count": 1 + }, + { + "label": "No paying users yet", + "count": 1 + }, + { + "label": "no paying yet", + "count": 1 + }, + { + "label": "No payments", + "count": 1 + }, + { + "label": "No tenemos clientes de pago aún. Estamos en etapa pre-seed", + "count": 1 + }, + { + "label": "No yet funded", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "Not monetized yet.", + "count": 1 + }, + { + "label": "not paying because I'm working on the last few premium features before accepting revenue", + "count": 1 + }, + { + "label": "not sought them yet but cold outreach initially", + "count": 1 + }, + { + "label": "not we have yet. Me and my friend collected our money and rest we got as we have even signed first", + "count": 1 + }, + { + "label": "not yet", + "count": 1 + }, + { + "label": "Not yet paid", + "count": 1 + }, + { + "label": "Not yet there", + "count": 1 + }, + { + "label": "Online ads", + "count": 1 + }, + { + "label": "Organic", + "count": 1 + }, + { + "label": "Organizations and Business owners", + "count": 1 + }, + { + "label": "organizations looking to provide it for their employees.", + "count": 1 + }, + { + "label": "Paid marketing", + "count": 1 + }, + { + "label": "Partnership and donors", + "count": 1 + }, + { + "label": "Performance Marketing", + "count": 1 + }, + { + "label": "personal network", + "count": 1 + }, + { + "label": "Personally Pitching to Client", + "count": 1 + }, + { + "label": "Pre-revenue", + "count": 1 + }, + { + "label": "Pre-revenue / early testing phase - I will be using cold outreach for sales when ready to do so.", + "count": 1 + }, + { + "label": "Pre-revenue / early-stage (no paying customers yet)", + "count": 1 + }, + { + "label": "Pre-revenue / no paying customers yet", + "count": 1 + }, + { + "label": "Prior customers", + "count": 1 + }, + { + "label": "Public Bidding / Government Tenders", + "count": 1 + }, + { + "label": "Recommendation", + "count": 1 + }, + { + "label": "Researched potential use cases", + "count": 1 + }, + { + "label": "SEO/content around microcredit claims", + "count": 1 + }, + { + "label": "Social media", + "count": 1 + }, + { + "label": "Still waiting for my first customers currently in marketing stage", + "count": 1 + }, + { + "label": "The app is not yet live", + "count": 1 + }, + { + "label": "TikTok", + "count": 1 + }, + { + "label": "Waitlist", + "count": 1 + }, + { + "label": "we are building our own platform.", + "count": 1 + }, + { + "label": "We are still pre-launch", + "count": 1 + }, + { + "label": "We didn't have much initial paying", + "count": 1 + }, + { + "label": "We don’t have any paying customer yet", + "count": 1 + }, + { + "label": "We don’t have paying customers yet", + "count": 1 + }, + { + "label": "We only have 2 paying users", + "count": 1 + }, + { + "label": "word of mouth", + "count": 1 + }, + { + "label": "Word of mouth", + "count": 1 + }, + { + "label": "y sera boopstrap por saber el valor del producto que he diseñado", + "count": 1 + }, + { + "label": "Yet to see. It will probably be comtent", + "count": 1 + } + ], + "respondentCount": 967 + }, + "2026|initial_paying_customers|multi|[[\"dev_community_built\",\"Yes\"]]": { + "rows": [ + { + "label": "Personal/professional network", + "count": 46 + }, + { + "label": "Developer communities (Discord, Slack, Reddit, etc.)", + "count": 37 + }, + { + "label": "Content (blog, newsletter, SEO)", + "count": 34 + }, + { + "label": "Cold outreach or sales", + "count": 31 + }, + { + "label": "Inbound from social media (Twitter, LinkedIn, etc.)", + "count": 29 + }, + { + "label": "Open source users who converted", + "count": 28 + }, + { + "label": "Accelerators/incubators", + "count": 17 + }, + { + "label": "Hacker News or Product Hunt", + "count": 17 + } + ], + "respondentCount": 98 + }, + "2026|initial_paying_customers|multi|[[\"dev_community_built\",\"No\"]]": { + "rows": [ + { + "label": "Personal/professional network", + "count": 258 + }, + { + "label": "Cold outreach or sales", + "count": 166 + }, + { + "label": "Inbound from social media (Twitter, LinkedIn, etc.)", + "count": 122 + }, + { + "label": "Content (blog, newsletter, SEO)", + "count": 91 + }, + { + "label": "Developer communities (Discord, Slack, Reddit, etc.)", + "count": 31 + }, + { + "label": "Accelerators/incubators", + "count": 20 + }, + { + "label": "Hacker News or Product Hunt", + "count": 18 + }, + { + "label": "Open source users who converted", + "count": 14 + }, + { + "label": "No paying customers yet", + "count": 2 + }, + { + "label": "None yet", + "count": 2 + }, + { + "label": "Not yet", + "count": 2 + }, + { + "label": "Advertising", + "count": 1 + }, + { + "label": "and social/inbound interest during launch.", + "count": 1 + }, + { + "label": "and they came from people who already worked with us", + "count": 1 + }, + { + "label": "ASO", + "count": 1 + }, + { + "label": "but it was through a different platform. Now", + "count": 1 + }, + { + "label": "but we have already hired a marketing company who is preparing content for Instagram", + "count": 1 + }, + { + "label": "Don't yet", + "count": 1 + }, + { + "label": "Early users came from direct trust-based referrals", + "count": 1 + }, + { + "label": "Events", + "count": 1 + }, + { + "label": "Facebook and Tik Tok and also paid ads", + "count": 1 + }, + { + "label": "Friends", + "count": 1 + }, + { + "label": "Google Cloud Partnership", + "count": 1 + }, + { + "label": "Haven't got any yet", + "count": 1 + }, + { + "label": "I have no payed customers yet", + "count": 1 + }, + { + "label": "I have started making a few LinkedIn posts but plan to advertise in the future", + "count": 1 + }, + { + "label": "I know people who work in Family Offices who will love this product. I’ll start with them and then go to banks", + "count": 1 + }, + { + "label": "just me", + "count": 1 + }, + { + "label": "No customers yet", + "count": 1 + }, + { + "label": "No I haven't yet got paid subscriptions", + "count": 1 + }, + { + "label": "no paying customers yet", + "count": 1 + }, + { + "label": "No paying customers yet (pre-revenue)", + "count": 1 + }, + { + "label": "No paying customers yet (pre‑revenue)", + "count": 1 + }, + { + "label": "No paying users yet", + "count": 1 + }, + { + "label": "No yet funded", + "count": 1 + }, + { + "label": "None", + "count": 1 + }, + { + "label": "Not monetized yet.", + "count": 1 + }, + { + "label": "not yet", + "count": 1 + }, + { + "label": "Organic", + "count": 1 + }, + { + "label": "organizations looking to provide it for their employees.", + "count": 1 + }, + { + "label": "Performance Marketing", + "count": 1 + }, + { + "label": "personal network", + "count": 1 + }, + { + "label": "Personally Pitching to Client", + "count": 1 + }, + { + "label": "Prior customers", + "count": 1 + }, + { + "label": "Recommendation", + "count": 1 + }, + { + "label": "SEO/content around microcredit claims", + "count": 1 + }, + { + "label": "Social media", + "count": 1 + }, + { + "label": "Still waiting for my first customers currently in marketing stage", + "count": 1 + }, + { + "label": "The app is not yet live", + "count": 1 + }, + { + "label": "TikTok", + "count": 1 + }, + { + "label": "we are building our own platform.", + "count": 1 + }, + { + "label": "We don’t have paying customers yet", + "count": 1 + }, + { + "label": "We only have 2 paying users", + "count": 1 + } + ], + "respondentCount": 456 + }, + "2026|dedicated_sales_function|single|": { + "rows": [ + { + "label": "No, but planning to build one", + "count": 308 + }, + { + "label": "Yes, but it’s founder-led or part-time", + "count": 296 + }, + { + "label": "No, and no plans to add one yet", + "count": 255 + }, + { + "label": "Yes, full-time sales team", + "count": 108 + } + ], + "respondentCount": 967 + }, + "2026|market_model|multi|": { + "rows": [ + { + "label": "Product-led growth", + "count": 1389 + }, + { + "label": "Not sure yet", + "count": 808 + }, + { + "label": "Sales-led growth", + "count": 741 + }, + { + "label": "Channel / partnerships", + "count": 669 + } + ], + "respondentCount": 2739 + }, + "2026|sales_primary_responsible|single|": { + "rows": [ + { + "label": "Founder(s)", + "count": 720 + }, + { + "label": "We don’t have anyone focused on sales yet", + "count": 102 + }, + { + "label": "Full-time sales rep or team", + "count": 76 + }, + { + "label": "Business development / partnerships team", + "count": 35 + }, + { + "label": "Customer success or support team", + "count": 31 + }, + { + "label": "founder, 8 call center con data de posible consumidores 140.000 data con pitch de venta, 37 posible preguntas y respuesta para el call center y 3 vendedores fisicos", + "count": 1 + }, + { + "label": "Gemini, Claude & CHAT GPT", + "count": 1 + }, + { + "label": "No sales yet", + "count": 1 + } + ], + "respondentCount": 967 + }, + "2026|pricing|multi|": { + "rows": [ + { + "label": "Still experimenting", + "count": 344 + }, + { + "label": "Flat-rate plans", + "count": 339 + }, + { + "label": "Tiered feature plans", + "count": 324 + }, + { + "label": "Custom pricing for enterprise", + "count": 233 + }, + { + "label": "Usage-based pricing", + "count": 225 + }, + { + "label": "no pricing", + "count": 2 + }, + { + "label": "\"Hybrid model combining software subscription (SaaS) with high-value strategic education through our Academy", + "count": 1 + }, + { + "label": "20% + VAT success fee", + "count": 1 + }, + { + "label": "base rate and per mile charges", + "count": 1 + }, + { + "label": "Buy-in co-ownership", + "count": 1 + }, + { + "label": "commission", + "count": 1 + }, + { + "label": "Commissions", + "count": 1 + }, + { + "label": "Commissions and we will add a premium plan", + "count": 1 + }, + { + "label": "condition", + "count": 1 + }, + { + "label": "Equity", + "count": 1 + }, + { + "label": "fee for service or retainer", + "count": 1 + }, + { + "label": "fixed product price", + "count": 1 + }, + { + "label": "focused on maximizing client ROI.\"", + "count": 1 + }, + { + "label": "Free for no", + "count": 1 + }, + { + "label": "In app purchases", + "count": 1 + }, + { + "label": "INR 9 FOR 3 DAYS THEN INR 999/- a month", + "count": 1 + }, + { + "label": "Irrelevant options for consumer startup", + "count": 1 + }, + { + "label": "Lifetime Payment", + "count": 1 + }, + { + "label": "Marketplace - we take a commission", + "count": 1 + }, + { + "label": "Modular pricing", + "count": 1 + }, + { + "label": "module based", + "count": 1 + }, + { + "label": "more than efficiently. The quarter of what the i nternational softwares cost them without giving them entire contrl and freedom of their data.", + "count": 1 + }, + { + "label": "No cost for users", + "count": 1 + }, + { + "label": "no price structure yet", + "count": 1 + }, + { + "label": "not relevant for c2c marketplace", + "count": 1 + }, + { + "label": "Not yet", + "count": 1 + }, + { + "label": "One Time Payments", + "count": 1 + }, + { + "label": "only if there is recovery or equivalent economic benefit. No upfront payment.", + "count": 1 + }, + { + "label": "Open source - free for now", + "count": 1 + }, + { + "label": "Pay as you go or one time payment", + "count": 1 + }, + { + "label": "Per pupil pricing", + "count": 1 + }, + { + "label": "Percent based on event fees directly from event owners - any further details I might need to send you an NDA 😅", + "count": 1 + }, + { + "label": "Philosophically", + "count": 1 + }, + { + "label": "planning to monetize later", + "count": 1 + }, + { + "label": "Product", + "count": 1 + }, + { + "label": "Public Tender / B2G Bidding", + "count": 1 + }, + { + "label": "still in POC stage", + "count": 1 + }, + { + "label": "Stripe reccuring", + "count": 1 + }, + { + "label": "subscription", + "count": 1 + }, + { + "label": "Subscription 3 tier plus adding enrichment items", + "count": 1 + }, + { + "label": "subscription base pricing + high price hour rate for extras", + "count": 1 + }, + { + "label": "Subscriptions based on medication pricing", + "count": 1 + }, + { + "label": "that fits the costs not efficiently", + "count": 1 + }, + { + "label": "Tiered plans once or if you go over renderings paid for u pay a penny rendering", + "count": 1 + }, + { + "label": "Too early", + "count": 1 + }, + { + "label": "Transaction based pricing", + "count": 1 + }, + { + "label": "Transaction-based pricing", + "count": 1 + }, + { + "label": "Vendor pricing", + "count": 1 + }, + { + "label": "volume-percentage based", + "count": 1 + }, + { + "label": "We have desinged an enterprise grade solution according to Pakistan", + "count": 1 + }, + { + "label": "We sell products", + "count": 1 + }, + { + "label": "미진행", + "count": 1 + } + ], + "respondentCount": 967 + }, + "2026|regular_social_media_use|multi|": { + "rows": [ + { + "label": "YouTube", + "count": 1678 + }, + { + "label": "Instagram", + "count": 1407 + }, + { + "label": "LinkedIn", + "count": 1395 + }, + { + "label": "X (Twitter)", + "count": 1051 + }, + { + "label": "Reddit", + "count": 756 + }, + { + "label": "Discord", + "count": 586 + }, + { + "label": "TikTok", + "count": 502 + }, + { + "label": "I’ve given up social media", + "count": 292 + }, + { + "label": "Threads", + "count": 172 + }, + { + "label": "BlueSky", + "count": 72 + }, + { + "label": "Facebook", + "count": 37 + }, + { + "label": "Mastodon", + "count": 25 + }, + { + "label": "facebook", + "count": 8 + }, + { + "label": "Telegram", + "count": 5 + }, + { + "label": "None", + "count": 3 + }, + { + "label": "Fb", + "count": 2 + }, + { + "label": "FB", + "count": 2 + }, + { + "label": "Whatsapp", + "count": 2 + }, + { + "label": "9gag", + "count": 1 + }, + { + "label": "9Gag", + "count": 1 + }, + { + "label": "and I don't plan to in business either.", + "count": 1 + }, + { + "label": "and shows the good", + "count": 1 + }, + { + "label": "Antigravit", + "count": 1 + }, + { + "label": "because everyone smiles", + "count": 1 + }, + { + "label": "Blue sky once a week", + "count": 1 + }, + { + "label": "but always masking whats going on behind the scenes in their life. It's social posturing and I don't have FOMO for nothing nobody talmbout", + "count": 1 + }, + { + "label": "but for the brand I hope to get more active", + "count": 1 + }, + { + "label": "chat gpt", + "count": 1 + }, + { + "label": "Daily.dev", + "count": 1 + }, + { + "label": "does rss count? probably not?", + "count": 1 + }, + { + "label": "FACEBOOK", + "count": 1 + }, + { + "label": "Facebook and Instagram", + "count": 1 + }, + { + "label": "Facebook/messenger", + "count": 1 + }, + { + "label": "Facebook/Meta", + "count": 1 + }, + { + "label": "gemini", + "count": 1 + }, + { + "label": "hacker news", + "count": 1 + }, + { + "label": "I don‘t use any of them.But I plan to use in the Future.", + "count": 1 + }, + { + "label": "I just want to go meet and greet at wrestling events wearing my brand proudly.", + "count": 1 + }, + { + "label": "i will need to use almost all of them... so...", + "count": 1 + }, + { + "label": "I’ve given up", + "count": 1 + }, + { + "label": "I've not used SM is at least 10 years", + "count": 1 + }, + { + "label": "instagram is pointless", + "count": 1 + }, + { + "label": "Lemon8", + "count": 1 + }, + { + "label": "None — I don’t currently use social media platforms 3× per week.", + "count": 1 + }, + { + "label": "None of above.", + "count": 1 + }, + { + "label": "None: LinkedIn", + "count": 1 + }, + { + "label": "Notion", + "count": 1 + }, + { + "label": "once i launch", + "count": 1 + }, + { + "label": "pornhub", + "count": 1 + }, + { + "label": "Private WhatsApp groups", + "count": 1 + }, + { + "label": "Skool", + "count": 1 + }, + { + "label": "Snapchat", + "count": 1 + }, + { + "label": "Social Media is for the birds", + "count": 1 + }, + { + "label": "Starting X", + "count": 1 + }, + { + "label": "SubStack", + "count": 1 + }, + { + "label": "telegram", + "count": 1 + }, + { + "label": "there", + "count": 1 + }, + { + "label": "Though sometimes youtube if it's more convenient than podcasts", + "count": 1 + }, + { + "label": "Thread", + "count": 1 + }, + { + "label": "Tik Tok", + "count": 1 + }, + { + "label": "To clarify", + "count": 1 + }, + { + "label": "try and avoid socials as much as possible. We prefer real people and real life.", + "count": 1 + }, + { + "label": "Try to stay off personally", + "count": 1 + }, + { + "label": "Twitch", + "count": 1 + }, + { + "label": "Twitter", + "count": 1 + }, + { + "label": "unless I am promoting and growing the sport of wrestling at the premier destination for all things sports. Instagram posting hasn't been done since 2023. pre-icloud compromise - I intended to do a photo dump but without the photos", + "count": 1 + }, + { + "label": "Until now", + "count": 1 + }, + { + "label": "WeChat", + "count": 1 + }, + { + "label": "whatsap", + "count": 1 + }, + { + "label": "WhatsApp", + "count": 1 + }, + { + "label": "whatsapp telegram", + "count": 1 + }, + { + "label": "X periodically", + "count": 1 + }, + { + "label": "y otras de finanzas no tan conocidad", + "count": 1 + }, + { + "label": "YT just for learning", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|events|multi|": { + "rows": [ + { + "label": "None of the above", + "count": 1654 + }, + { + "label": "Google Cloud Next", + "count": 342 + }, + { + "label": "AWS re:Invent", + "count": 292 + }, + { + "label": "Y Combinator Demo Day", + "count": 252 + }, + { + "label": "Web Summit", + "count": 236 + }, + { + "label": "Microsoft Build", + "count": 224 + }, + { + "label": "Open Source Summit", + "count": 217 + }, + { + "label": "AI Engineer World’s Fair", + "count": 170 + }, + { + "label": "TechCrunch Disrupt", + "count": 113 + }, + { + "label": "SXSW", + "count": 88 + }, + { + "label": "Kubecon", + "count": 77 + }, + { + "label": "Slush", + "count": 60 + }, + { + "label": "FOSDEM", + "count": 46 + }, + { + "label": "None", + "count": 34 + }, + { + "label": "none", + "count": 18 + }, + { + "label": "WWDC", + "count": 3 + }, + { + "label": "AWS Summit Hamburg", + "count": 2 + }, + { + "label": "Makerfaire", + "count": 2 + }, + { + "label": "NA", + "count": 2 + }, + { + "label": "Null", + "count": 2 + }, + { + "label": "Stripe Sessions", + "count": 2 + }, + { + "label": "\"Supabase Launch Week (virtual events and local meetups) and specialized Google Ads API summits focused on automation and auditing.\"", + "count": 1 + }, + { + "label": "2 more = Worldef / Starship", + "count": 1 + }, + { + "label": "A Hackathon here in Kano state", + "count": 1 + }, + { + "label": "Adobe ai summit", + "count": 1 + }, + { + "label": "AI Dev Connect", + "count": 1 + }, + { + "label": "AI Engineer Tech Talk (at House of AI in SF)", + "count": 1 + }, + { + "label": "AI in Education events.", + "count": 1 + }, + { + "label": "AIdevs", + "count": 1 + }, + { + "label": "All Things Open", + "count": 1 + }, + { + "label": "and Frontend related events online", + "count": 1 + }, + { + "label": "Any supabase Fair", + "count": 1 + }, + { + "label": "Anything if they would accommodate my travel alone", + "count": 1 + }, + { + "label": "Apps.co", + "count": 1 + }, + { + "label": "as I know Hery Penzi on a personal level and wish I had access to photos of us together in downtown Austin. Huge film festival guy", + "count": 1 + }, + { + "label": "Boulder Startup Week", + "count": 1 + }, + { + "label": "Build with AI GDG", + "count": 1 + }, + { + "label": "BUILD WITH AI GDG", + "count": 1 + }, + { + "label": "CDW Partner Program Days", + "count": 1 + }, + { + "label": "Chaos Communication Congress", + "count": 1 + }, + { + "label": "Claude Code Community Events", + "count": 1 + }, + { + "label": "Clawcon", + "count": 1 + }, + { + "label": "Cloudfest in Rust", + "count": 1 + }, + { + "label": "Cursor Cafe", + "count": 1 + }, + { + "label": "Data Integration Summit", + "count": 1 + }, + { + "label": "dc startup", + "count": 1 + }, + { + "label": "def con", + "count": 1 + }, + { + "label": "defcon", + "count": 1 + }, + { + "label": "dev fest", + "count": 1 + }, + { + "label": "DevExpo Challenge", + "count": 1 + }, + { + "label": "DevFest", + "count": 1 + }, + { + "label": "devkorea", + "count": 1 + }, + { + "label": "DevWorld in Amsterdam", + "count": 1 + }, + { + "label": "Didacta", + "count": 1 + }, + { + "label": "DigitalOcean Deploy", + "count": 1 + }, + { + "label": "Don't plan to", + "count": 1 + }, + { + "label": "Droidcon Egypt", + "count": 1 + }, + { + "label": "eventos en mi pais", + "count": 1 + }, + { + "label": "Events cost money", + "count": 1 + }, + { + "label": "Experts Live DE", + "count": 1 + }, + { + "label": "FlutterCon", + "count": 1 + }, + { + "label": "Fluttercon USA", + "count": 1 + }, + { + "label": "Forbes Under 30 Summit", + "count": 1 + }, + { + "label": "GITEX AI SUMMIT", + "count": 1 + }, + { + "label": "Google Build with Ai", + "count": 1 + }, + { + "label": "Google I/O", + "count": 1 + }, + { + "label": "Google IO", + "count": 1 + }, + { + "label": "Google's GenAI APAC edition.", + "count": 1 + }, + { + "label": "GTC", + "count": 1 + }, + { + "label": "Hack Berlin", + "count": 1 + }, + { + "label": "have attended Hacker Haunted virtually during pandemic. I don't know what my organization or boss will allow or budget me to attend. If I had to pick", + "count": 1 + }, + { + "label": "have not attende any yet", + "count": 1 + }, + { + "label": "HPE Discover", + "count": 1 + }, + { + "label": "I don't have the budget to attend such conferences sadly. Would attend only for the experience and community catch up. Customers exist outside them.", + "count": 1 + }, + { + "label": "I need a few CEUs one conference would do the trick........... Would love for a SXSW visit opportunity", + "count": 1 + }, + { + "label": "I’m not interested", + "count": 1 + }, + { + "label": "If you are conferencing", + "count": 1 + }, + { + "label": "IIW", + "count": 1 + }, + { + "label": "Inmerge", + "count": 1 + }, + { + "label": "Interop.io", + "count": 1 + }, + { + "label": "it would be AI-related.", + "count": 1 + }, + { + "label": "It.con", + "count": 1 + }, + { + "label": "Italy AI Week", + "count": 1 + }, + { + "label": "keine", + "count": 1 + }, + { + "label": "Kotlin kolkata", + "count": 1 + }, + { + "label": "Laracon", + "count": 1 + }, + { + "label": "LEAP", + "count": 1 + }, + { + "label": "Linux foundation", + "count": 1 + }, + { + "label": "Local GDG events", + "count": 1 + }, + { + "label": "localhost", + "count": 1 + }, + { + "label": "Lovable event", + "count": 1 + }, + { + "label": "makerfaire", + "count": 1 + }, + { + "label": "Maybe someday", + "count": 1 + }, + { + "label": "meet.js and local events", + "count": 1 + }, + { + "label": "MicroConf", + "count": 1 + }, + { + "label": "Microsoft Learn", + "count": 1 + }, + { + "label": "n/a", + "count": 1 + }, + { + "label": "N/A", + "count": 1 + }, + { + "label": "never", + "count": 1 + }, + { + "label": "Nigerian..", + "count": 1 + }, + { + "label": "Nnone", + "count": 1 + }, + { + "label": "no", + "count": 1 + }, + { + "label": "No", + "count": 1 + }, + { + "label": "non", + "count": 1 + }, + { + "label": "none :(", + "count": 1 + }, + { + "label": "None because all are structure for organized scam", + "count": 1 + }, + { + "label": "none of them", + "count": 1 + }, + { + "label": "None so far", + "count": 1 + }, + { + "label": "nonse", + "count": 1 + }, + { + "label": "Not planning on attending any events", + "count": 1 + }, + { + "label": "not yet", + "count": 1 + }, + { + "label": "Not yet", + "count": 1 + }, + { + "label": "Nothing", + "count": 1 + }, + { + "label": "Nunca fui", + "count": 1 + }, + { + "label": "Nuxt", + "count": 1 + }, + { + "label": "Nvidia events", + "count": 1 + }, + { + "label": "NYC B2B", + "count": 1 + }, + { + "label": "ONLINE ANYONE in person", + "count": 1 + }, + { + "label": "Open ai summit and yc banglore", + "count": 1 + }, + { + "label": "OpenAI Dev Day", + "count": 1 + }, + { + "label": "or suggests I attend. Otherwise", + "count": 1 + }, + { + "label": "Panathenea", + "count": 1 + }, + { + "label": "PASS Data Summit", + "count": 1 + }, + { + "label": "plan to attend", + "count": 1 + }, + { + "label": "Planning to go to vercel ship", + "count": 1 + }, + { + "label": "PODIM", + "count": 1 + }, + { + "label": "Portugal Tech Week", + "count": 1 + }, + { + "label": "prefiero leer el resumen de la info que suben y si algo me llama la atencion lo investigo (realmente me causa fastidio, seguir algo que va dirigido a mucho para tomarlo para mi)", + "count": 1 + }, + { + "label": "React Miami", + "count": 1 + }, + { + "label": "Redbull Basement", + "count": 1 + }, + { + "label": "RedBull Program", + "count": 1 + }, + { + "label": "regional events", + "count": 1 + }, + { + "label": "Replay", + "count": 1 + }, + { + "label": "Right now I don’t have any plans to attend events.", + "count": 1 + }, + { + "label": "Rio Innovation Week", + "count": 1 + }, + { + "label": "Sandbox Global Demo Day", + "count": 1 + }, + { + "label": "SaSstr", + "count": 1 + }, + { + "label": "Silicon Slopes", + "count": 1 + }, + { + "label": "Silicon Slopes Summit", + "count": 1 + }, + { + "label": "Slovenian events mostly", + "count": 1 + }, + { + "label": "só assisto vídeos no YouTube de como fazer e vou botando as minhas soluções", + "count": 1 + }, + { + "label": "South Summit", + "count": 1 + }, + { + "label": "Start up Weeke", + "count": 1 + }, + { + "label": "Startup Grind", + "count": 1 + }, + { + "label": "State of AI", + "count": 1 + }, + { + "label": "Stripe Connect", + "count": 1 + }, + { + "label": "Supabase", + "count": 1 + }, + { + "label": "Supabase Community Day", + "count": 1 + }, + { + "label": "Supabase Day", + "count": 1 + }, + { + "label": "Supabase Select <3", + "count": 1 + }, + { + "label": "Tech Arena", + "count": 1 + }, + { + "label": "Tech Caribe", + "count": 1 + }, + { + "label": "tech show London", + "count": 1 + }, + { + "label": "TechBBQ", + "count": 1 + }, + { + "label": "Techweek Colombia", + "count": 1 + }, + { + "label": "TestCon", + "count": 1 + }, + { + "label": "then you are not building the product...", + "count": 1 + }, + { + "label": "Tokyo Gameshow", + "count": 1 + }, + { + "label": "Vapicon", + "count": 1 + }, + { + "label": "VDS SUMMERTECH", + "count": 1 + }, + { + "label": "Vercel Ship 2026", + "count": 1 + }, + { + "label": "Viteconf", + "count": 1 + }, + { + "label": "Vue", + "count": 1 + }, + { + "label": "Vue conferentions", + "count": 1 + }, + { + "label": "We haven’t planned our assistance to any event yet", + "count": 1 + }, + { + "label": "Wearedevelopers", + "count": 1 + }, + { + "label": "WeAreDevelopers Conference in Berlin", + "count": 1 + }, + { + "label": "web3 summit", + "count": 1 + }, + { + "label": "Whatever my boss allows me to attend", + "count": 1 + }, + { + "label": "World Summit AI - Amsterdam", + "count": 1 + }, + { + "label": "Y Combinator Startup School India", + "count": 1 + }, + { + "label": "YPIT", + "count": 1 + }, + { + "label": "없음", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|biggest_challenge|single|": { + "rows": [ + { + "label": "Customer acquisition", + "count": 882 + }, + { + "label": "Product-market fit", + "count": 381 + }, + { + "label": "Fundraising", + "count": 362 + }, + { + "label": "Technical complexity", + "count": 312 + }, + { + "label": "Burn out / exhaustion", + "count": 298 + }, + { + "label": "AI competition / disruption", + "count": 201 + }, + { + "label": "Burn rate / runway", + "count": 117 + }, + { + "label": "Hiring", + "count": 101 + }, + { + "label": "Time", + "count": 5 + }, + { + "label": "None", + "count": 4 + }, + { + "label": "Marketing", + "count": 2 + }, + { + "label": "Nothing", + "count": 2 + }, + { + "label": "3rd party partnerships", + "count": 1 + }, + { + "label": "AI generated PRDs", + "count": 1 + }, + { + "label": "all good", + "count": 1 + }, + { + "label": "Architecture implementation", + "count": 1 + }, + { + "label": "automation", + "count": 1 + }, + { + "label": "Bugs", + "count": 1 + }, + { + "label": "Building the product", + "count": 1 + }, + { + "label": "cash frow / funding constraints", + "count": 1 + }, + { + "label": "Cloud infrastructure cost optimization", + "count": 1 + }, + { + "label": "Competition", + "count": 1 + }, + { + "label": "Dependent on third-party providers", + "count": 1 + }, + { + "label": "Development", + "count": 1 + }, + { + "label": "Dinero Levantar algo tan innovador siendo pobre, dejar mi trabajo y tratar de responder monetariamente a mi familia a 600km de distancia por intentar avanzar", + "count": 1 + }, + { + "label": "Distribution (Florida legislature makes every district have a separate approval funnel for public school use)", + "count": 1 + }, + { + "label": "Divided attention", + "count": 1 + }, + { + "label": "Don't have any of the challenges above, at least not yet anyway!", + "count": 1 + }, + { + "label": "Don't know if i want to", + "count": 1 + }, + { + "label": "Facebook app review — just a time factor. I have a near 0 burn rate. Dawg I thought this was a 7 minute survey. This has been like 45 minutes now.", + "count": 1 + }, + { + "label": "Finalizing something we are willing to present to investors", + "count": 1 + }, + { + "label": "Finding the time to dedicate to it (it's a side-hustle-startup to our main business)", + "count": 1 + }, + { + "label": "First business - trying to figure out how to make it work", + "count": 1 + }, + { + "label": "Funding", + "count": 1 + }, + { + "label": "Getting clients onto the app more often Disteibution", + "count": 1 + }, + { + "label": "Getting people to pay", + "count": 1 + }, + { + "label": "Growth in new market segments", + "count": 1 + }, + { + "label": "hard to handle many clients projects", + "count": 1 + }, + { + "label": "Having time to work on it", + "count": 1 + }, + { + "label": "i get tired a lot", + "count": 1 + }, + { + "label": "I have little child", + "count": 1 + }, + { + "label": "I just want to start", + "count": 1 + }, + { + "label": "I'm not facing any of the above listed problems. The hardest one is, I'm situated in Kabirwala, 3rd tier city of Pakisatn. Here, internet is just used for tiktok, youtube, instagram, scrolling and that kind of stuff. None is serious about what we are building. The most difficutl task was not to build, that was to convice my own principal just for trying our product even for free. People here mostly say, if the existing thing is working for me welll, why step into something more advnaced or difficult to manage. Like they feel painful to change themselves. Morever, I still have an extremely low end pc that even struggles to run windows 7(not even 64 bit). So, i have to mostly rely on cloud and web. I can't install tools locally. Then come a list of issues like internet speed, electricity.", + "count": 1 + }, + { + "label": "I'm still in the test phrase", + "count": 1 + }, + { + "label": "I’m trying to do it part time as I have a young family and need my other job to bring in guaranteed salary", + "count": 1 + }, + { + "label": "I've just started", + "count": 1 + }, + { + "label": "Idea Validation", + "count": 1 + }, + { + "label": "Insurance partner", + "count": 1 + }, + { + "label": "its my side job", + "count": 1 + }, + { + "label": "Just getting started", + "count": 1 + }, + { + "label": "Keep consistency at monthly revenue", + "count": 1 + }, + { + "label": "lack of clarity -> technical complexity -> burnout", + "count": 1 + }, + { + "label": "Learning the technical side of things while trying to launch fast", + "count": 1 + }, + { + "label": "Maintaining the \"Flow\" state from user perspective", + "count": 1 + }, + { + "label": "Managing a more-than full time job and family with this project", + "count": 1 + }, + { + "label": "Moat", + "count": 1 + }, + { + "label": "money", + "count": 1 + }, + { + "label": "Money and team", + "count": 1 + }, + { + "label": "NA", + "count": 1 + }, + { + "label": "None but Time Itself", + "count": 1 + }, + { + "label": "None of the above", + "count": 1 + }, + { + "label": "None yet. Too new", + "count": 1 + }, + { + "label": "Operational Workflow", + "count": 1 + }, + { + "label": "Optimalizing work flow", + "count": 1 + }, + { + "label": "Other responsibilities like work and family", + "count": 1 + }, + { + "label": "Patents, trademark and business licensing still needs to be done before going public", + "count": 1 + }, + { + "label": "Perpetuity", + "count": 1 + }, + { + "label": "Probably legal, although I’ve done a lot of that with ai.", + "count": 1 + }, + { + "label": "Product intention", + "count": 1 + }, + { + "label": "Products market is going down", + "count": 1 + }, + { + "label": "Regulations", + "count": 1 + }, + { + "label": "Sales", + "count": 1 + }, + { + "label": "Scalability", + "count": 1 + }, + { + "label": "Scaling enterprise AI deployments into repeatable, productized offerings while maintaining high customization and delivery quality.", + "count": 1 + }, + { + "label": "Scaling, more demand than current solution (GAS) can accomodate", + "count": 1 + }, + { + "label": "Seeing something shiny and loosing focus", + "count": 1 + }, + { + "label": "Self hosted organization - taskmanager, comms, storage that can be deployed via netlify and stored in supabase", + "count": 1 + }, + { + "label": "stable electricity and balancing school", + "count": 1 + }, + { + "label": "Tech Debt", + "count": 1 + }, + { + "label": "Time constraints", + "count": 1 + }, + { + "label": "Time, rightly or wrongly I am finishing my degree", + "count": 1 + }, + { + "label": "Transitioning from part time to full time", + "count": 1 + }, + { + "label": "we just in the beginning", + "count": 1 + }, + { + "label": "Working with AI is making me work too hard. I don’t switch off.", + "count": 1 + } + ], + "respondentCount": 2739 + }, + "2026|world_outlook|single|": { + "rows": [ + { + "label": "Optimistic", + "count": 1561 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 750 + }, + { + "label": "Pessimistic", + "count": 428 + } + ], + "respondentCount": 2739 + }, + "2026|world_outlook|single|[[\"role\",\"Founder / Co-founder\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 1269 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 554 + }, + { + "label": "Pessimistic", + "count": 328 + } + ], + "respondentCount": 2151 + }, + "2026|world_outlook|single|[[\"role\",[\"Engineer\",\"Product Management\",\"Marketing\",\"Sales\",\"Legal or Ops\",\"Other\"]]]": { + "rows": [ + { + "label": "Optimistic", + "count": 292 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 196 + }, + { + "label": "Pessimistic", + "count": 100 + } + ], + "respondentCount": 588 + }, + "2026|world_outlook|single|[[\"ai_generated_codebase_percent\",\"76-100%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 673 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 282 + }, + { + "label": "Pessimistic", + "count": 150 + } + ], + "respondentCount": 1105 + }, + "2026|world_outlook|single|[[\"ai_generated_codebase_percent\",\"0%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 31 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 23 + }, + { + "label": "Pessimistic", + "count": 9 + } + ], + "respondentCount": 63 + }, + "2026|world_outlook|single|[[\"ai_generated_codebase_percent\",\"1-10%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 109 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 75 + }, + { + "label": "Pessimistic", + "count": 56 + } + ], + "respondentCount": 240 + }, + "2026|world_outlook|single|[[\"ai_generated_codebase_percent\",\"11-25%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 158 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 99 + }, + { + "label": "Pessimistic", + "count": 44 + } + ], + "respondentCount": 301 + }, + "2026|world_outlook|single|[[\"ai_generated_codebase_percent\",\"26-50%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 259 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 118 + }, + { + "label": "Pessimistic", + "count": 68 + } + ], + "respondentCount": 445 + }, + "2026|world_outlook|single|[[\"ai_generated_codebase_percent\",\"51-75%\"]]": { + "rows": [ + { + "label": "Optimistic", + "count": 331 + }, + { + "label": "Neither optimistic nor pessimistic", + "count": 153 + }, + { + "label": "Pessimistic", + "count": 101 + } + ], + "respondentCount": 585 + }, + "2026|databases|single|": { + "rows": [ + { + "label": "Supabase", + "count": 1342 + }, + { + "label": "PostgreSQL", + "count": 603 + }, + { + "label": "Other", + "count": 164 + }, + { + "label": "Redis", + "count": 164 + }, + { + "label": "MySQL", + "count": 137 + }, + { + "label": "Firebase", + "count": 137 + }, + { + "label": "SQLite", + "count": 110 + }, + { + "label": "MongoDB", + "count": 110 + } + ], + "respondentCount": 2739 + }, + "2025|must_have_tools|multi|": { + "rows": [ + { + "label": "Cursor", + "count": 504 + }, + { + "label": "Claude", + "count": 143 + }, + { + "label": "ChatGPT/Codex", + "count": 113 + } + ], + "respondentCount": 2110 + }, + "2026|must_have_tools|multi|": { + "rows": [ + { + "label": "Claude", + "count": 871 + }, + { + "label": "Cursor", + "count": 315 + }, + { + "label": "ChatGPT/Codex", + "count": 267 + } + ], + "respondentCount": 2739 + } + } +} diff --git a/apps/www/data/surveys/state-of-startups-participants.ts b/apps/www/data/surveys/state-of-startups-participants.ts new file mode 100644 index 00000000000..8536778d2d3 --- /dev/null +++ b/apps/www/data/surveys/state-of-startups-participants.ts @@ -0,0 +1,336 @@ +// Participating companies for State of Startups 2026 (real survey respondents +// who opted to be credited). Preserved verbatim from the prior data file. + +export interface Participant { + company: string + url: string +} + +export const participants: Participant[] = [ + { company: '440Hz', url: 'https://440hz.uk' }, + { company: '67prototypes.com', url: 'https://67prototypes.com' }, + { company: 'Abriz', url: 'https://abriz.ai' }, + { company: 'Adoptex LLC', url: 'https://adoptex.ai' }, + { company: 'adventuro', url: 'https://adventuro.com' }, + { company: 'AIVO.mx', url: 'https://aivo.mx' }, + { company: 'AJAI', url: 'https://ajai.pro' }, + { company: 'Akrisae LLC', url: 'https://akrisae.com' }, + { company: 'Alertint.com', url: 'https://alertint.com' }, + { company: 'Algebro', url: 'https://algebro.ai' }, + { company: 'Apdate', url: 'https://apdate.dev' }, + { company: 'App name: Vowfolio / company Meisal Media', url: 'https://meisal.com' }, + { company: 'Artsnoa.com', url: 'https://artsnoa.com' }, + { company: 'askOdin', url: 'https://askodin.app' }, + { company: 'AstraDev', url: 'https://astradev.org' }, + { company: 'Aurelo Technologies.', url: 'https://technologies.aurelo.cc' }, + { company: 'automate.engineer', url: 'https://automate.engineer' }, + { company: 'Babelbeez', url: 'https://babelbeez.com' }, + { company: 'Baltanor', url: 'https://baltanor.com' }, + { company: 'BelowGames', url: 'https://belowgames.com' }, + { company: 'Beyond Better', url: 'https://beyondbetter.app' }, + { company: 'BizzKings', url: 'https://bizzkings.com' }, + { company: 'BlueHero B.V.', url: 'https://bluehero.io' }, + { company: 'Bontetsu', url: 'https://bontetsu.jp' }, + { company: 'BrandLift AI', url: 'https://brandlift.pe' }, + { company: 'BuboIQ', url: 'https://buboiq.com' }, + { company: 'Built LMS', url: 'https://builtlms.com' }, + { company: 'BundlBe', url: 'https://bundlbe.com' }, + { company: 'Business Initiative', url: 'https://businessinitiative.org' }, + { company: 'Caelus labs', url: 'https://caeluslabs.io' }, + { company: 'Celsa', url: 'https://celsa.app' }, + { company: 'Cenobix', url: 'https://cenobix.com' }, + { company: 'Chartmon', url: 'https://chartmon.com' }, + { company: 'Circuit', url: 'https://withcircuit.com' }, + { company: 'ClearCash.app', url: 'https://clearcash.app' }, + { company: 'Cloud Logics', url: 'https://cloudlogics.dev' }, + { company: 'Cloudflow', url: 'https://cloudflowtechnology.com' }, + { company: 'CloudMES.ai', url: 'https://cloudmes.ai' }, + { company: 'ClubCentric', url: 'https://clubcentric.org' }, + { company: 'CodePlanet', url: 'https://acodeplanet.tech' }, + { company: 'ColabWize', url: 'https://colabwize.com' }, + { company: 'CologneAI GmbH', url: 'https://cologneai.de' }, + { company: 'Complia', url: 'https://complia.tech' }, + { company: 'Cosverse AI', url: 'https://cosverse.ai' }, + { company: 'Cotalent AI', url: 'https://cotalentai.com' }, + { company: 'Courage Library', url: 'https://couragelibrary.in' }, + { company: 'CRONIA', url: 'https://cronia.co' }, + { company: 'Darouta Ltd', url: 'https://darouta.com' }, + { company: 'Datapods', url: 'https://datapods.app' }, + { company: 'Datatensei', url: 'https://datatensei.com' }, + { company: 'Debt Clarity Tools', url: 'https://debtclaritytools.com' }, + { company: 'DECODE GR', url: 'https://decode.gr' }, + { company: 'DepthNode', url: 'https://depthnode.ai' }, + { company: 'Desert Odes', url: 'https://desertodes.com' }, + { company: 'Dinerly', url: 'https://dinerly.com' }, + { company: 'Dispatch', url: 'https://dispatch.space' }, + { company: 'docforce', url: 'https://docforce.de' }, + { company: 'DoctorStatus', url: 'https://doctorstatus.in' }, + { company: 'Dragon Tech', url: 'https://dragon-tech.biz' }, + { company: 'DREAMSDEPT.COM', url: 'https://dreamsdept.com' }, + { company: 'DSAT16', url: 'https://dsat16.com' }, + { company: 'Dualmind Labs', url: 'https://dualmindlab.tech' }, + { company: 'Dzyn72', url: 'https://dzyn72.com' }, + { company: 'Ebihara Solutions', url: 'https://ebihara-solutions.com' }, + { company: 'EchoKana', url: 'https://echokana.com' }, + { company: 'ecoTriver', url: 'https://ecotriver.com' }, + { company: 'EdgarLens', url: 'https://edgarlens.ai' }, + { company: 'Edgaze', url: 'https://edgaze.ai' }, + { company: 'EdgeGhost', url: 'https://edgeghost.com' }, + { company: 'EduvisKar', url: 'https://eduviskar.com' }, + { company: 'Elokins Innovation SARL', url: 'https://elokins.com' }, + { company: 'Emerald Sky', url: 'https://emeraldskygroup.com' }, + { company: 'EnglishGPT', url: 'https://englishgpt.org' }, + { company: 'Entelechy Corporation', url: 'https://entel.com' }, + { company: 'Enzonic LLC', url: 'https://enzonic.com' }, + { company: 'epilinked.com', url: 'https://epilinked.com' }, + { company: 'Expanse', url: 'https://expanse.com' }, + { company: 'Farofa Labs', url: 'https://farofalabs.com' }, + { company: 'fibidy', url: 'https://fibidy.com' }, + { company: 'Fictionry', url: 'https://fictionry.com' }, + { company: 'FloSports', url: 'https://flosports.tv' }, + { company: 'Fluum', url: 'https://fluum.ai' }, + { company: 'Flyweel', url: 'https://flyweel.co' }, + { company: 'fog', url: 'https://fog.do' }, + { company: 'FoodWeb AI Ltd.', url: 'https://foodweb.ai' }, + { company: 'Forestate Technologies Inc.', url: 'https://forestate.ca' }, + { company: 'FriendlyBet (soon to be registered)', url: 'https://friendlybet.app' }, + { company: 'FTL', url: 'https://ftl.build' }, + { company: 'Future Wave Technologies', url: 'https://futurewave.in' }, + { company: 'futurefluencyindex', url: 'https://futurefluencyindex.com' }, + { company: 'Ganttra', url: 'https://ganttra.com' }, + { company: 'Gaslighting Check', url: 'https://gaslightingcheck.com' }, + { company: 'Gathr', url: 'https://joingathr.com' }, + { company: 'Geo Insights', url: 'https://geo-insights.nl' }, + { company: 'Geosyncracy, Inc.', url: 'https://geosyncracy.com' }, + { company: 'Get', url: 'https://getshitdone.cl' }, + { company: 'GetFit', url: 'https://getfitapp.io' }, + { company: 'Goldfish', url: 'https://goldfish.sh' }, + { company: 'Guetton Technologies', url: 'https://guetton.dev' }, + { company: 'Haizzy', url: 'https://haizzy.fr' }, + { company: 'Harbour AI', url: 'https://harbour-ai.com' }, + { company: 'Heartly Apps UG', url: 'https://heartly.io' }, + { company: 'Helix Ag Systems', url: 'https://helixagsystems.com' }, + { company: 'Hemma', url: 'https://gethemma.app' }, + { company: 'Hemsy', url: 'https://hemsy.ai' }, + { company: 'hoachatdesk.com', url: 'https://hoachatdesk.com' }, + { company: 'Hostly', url: 'https://hostly.so' }, + { company: 'HS Partner AS', url: 'https://hspartner.no' }, + { company: 'HyperRep', url: 'https://hyperrep.ai' }, + { company: 'ignitd.ai', url: 'https://ignitd.ai' }, + { company: 'In the Money AI', url: 'https://inthemoney.ai' }, + { company: 'Innovacio', url: 'https://innovacio.nl' }, + { company: 'InstaAgent', url: 'https://instaagent.co' }, + { company: 'Instantreply.co', url: 'https://instantreply.co' }, + { company: 'InsterSwap', url: 'https://insterswap.com' }, + { company: 'Intellstra Limited', url: 'https://intellstra.com' }, + { company: 'Intrepid ATG', url: 'https://intrepidatg.com' }, + { company: 'Intrinziq', url: 'https://intrinziq.com' }, + { company: 'Ionio.ai', url: 'https://ionio.io' }, + { company: 'IronCalc', url: 'https://ironcalc.com' }, + { company: 'isavisa', url: 'https://isavisa.com' }, + { company: 'iTTD Ltd', url: 'https://ittd.works' }, + { company: 'jashio.com', url: 'https://jashio.com' }, + { company: 'JustEnglish.lk', url: 'https://justenglish.lk' }, + { company: 'K K Create Pvt. Ltd', url: 'https://kkcreate.in' }, + { company: 'Kamoo.ai', url: 'https://kamoo.ai' }, + { company: 'Kensic LLC', url: 'https://kensic.app' }, + { company: 'KeyPort', url: 'https://keyport.sbs' }, + { company: 'Kids in Cyber', url: 'https://kidsincyber.com' }, + { company: 'Kindred', url: 'https://trykindred.com' }, + { company: 'Knovolo', url: 'https://knovolo.com' }, + { company: 'KNOWRON', url: 'https://knowron.com' }, + { company: 'KoalaFix', url: 'https://koalafix.com' }, + { company: 'koffiework', url: 'https://koffie.work' }, + { company: 'Kontxs', url: 'https://kontxs.com' }, + { company: 'LAiB and Asistime', url: 'https://asistime.ai' }, + { company: 'Layout.design', url: 'https://layout.design' }, + { company: 'Learn Biomimicry', url: 'https://learnbiomimicry.com' }, + { company: 'LectriCash', url: 'https://lectricash.com' }, + { company: 'LengkApp', url: 'https://lengk.app' }, + { company: 'LeoHub AI', url: 'https://leohub.cloud' }, + { company: 'ListingRisk', url: 'https://listingrisk.com' }, + { company: 'LiteSOC Sdn Bhd', url: 'https://litesoc.io' }, + { company: 'LitLife AI', url: 'https://litlife.ai' }, + { company: 'LocalClarity', url: 'https://localclarity.com' }, + { company: 'LOGICTIS', url: 'https://logictis.pl' }, + { company: 'machinetalk GmbH', url: 'https://machine-talk.ai' }, + { company: 'Maigie Ltd', url: 'https://maigie.com' }, + { company: 'Mana', url: 'https://meetmana.com' }, + { company: 'MapChat Social', url: 'https://mapchat.social' }, + { company: 'Mara', url: 'https://iammara.com' }, + { company: 'MarginLevers.com Co.', url: 'https://marginlevers.com' }, + { company: 'MediaCreators', url: 'https://mediacreators.io' }, + { company: 'Meguria inc.', url: 'https://meguria.com' }, + { company: 'Metadine GmbH', url: 'https://metadine.de' }, + { company: 'Metis Learning', url: 'https://metis-learn.io' }, + { company: 'Milivate', url: 'https://milivate.com' }, + { company: 'MindGazeAI', url: 'https://mindgazeai.com' }, + { company: 'MindMuse', url: 'https://mindmuse.care' }, + { company: 'MindQuant', url: 'https://mindquant.ai' }, + { company: 'Minonexus', url: 'https://minonexus.com' }, + { company: 'Minte.app', url: 'https://minte.app' }, + { company: 'Mistle', url: 'https://mistle.dev' }, + { company: 'Misura AI ltd', url: 'https://misura.ai' }, + { company: 'Mocus', url: 'https://mocus.vn' }, + { company: 'Monthly Club', url: 'https://monthlyclubhq.com' }, + { company: 'moorebridge.com', url: 'https://moorebridge.com' }, + { company: 'moss labs', url: 'https://mosslabs.kr' }, + { company: 'MoyaHost', url: 'https://moyahost.ai' }, + { company: 'MyLabelDesk', url: 'https://mylabeldesk.com' }, + { company: 'mytribe', url: 'https://mytribe.in' }, + { company: 'MyVisitVault', url: 'https://myvisitvault.com' }, + { company: 'N3OSystem', url: 'https://n3osystem.io' }, + { company: 'Narcoleptic Fox', url: 'https://narcolepticfox.com' }, + { company: 'Nataris AI', url: 'https://nataris.ai' }, + { company: 'Ninchi', url: 'https://ninchi.dev' }, + { company: 'NISD2.eu', url: 'https://nisd2.eu' }, + { company: 'NIUMI', url: 'https://niumi.org' }, + { company: 'Nixyum', url: 'https://nixyum.com' }, + { company: 'nstop', url: 'https://nstop.app' }, + { company: 'nyas.io', url: 'https://nyas.io' }, + { company: 'Omny', url: 'https://omnysecurity.com' }, + { company: 'ONE62 / MIRA', url: 'https://one62.nl' }, + { company: 'OneStopOnly', url: 'https://onestoponly.com' }, + { company: 'onorder', url: 'https://onorder.id' }, + { company: 'orderflow.ge', url: 'https://orderflow.ge' }, + { company: 'ORDO CFO', url: 'https://ordocfo.com' }, + { company: 'OSH Assembly', url: 'https://oshassembly.com' }, + { company: 'Outlex', url: 'https://outlex.ai' }, + { company: 'parascope.io', url: 'https://parascope.io' }, + { company: 'Parcelcraft', url: 'https://parcelcraft.com' }, + { company: 'Partysnap', url: 'https://partysnap.app' }, + { company: 'Pausa', url: 'https://pausaapp.com' }, + { company: 'PeakGTM', url: 'https://peakgtm.com' }, + { company: 'Pedagogue Systems Inc.', url: 'https://pedagogue.co' }, + { company: 'PenguinLearn', url: 'https://penguinlearn.com' }, + { company: 'Per4mer (Smith Rock Labs)', url: 'https://per4mer.io' }, + { company: 'PicFOMO', url: 'https://picfomo.com' }, + { company: 'Pillar', url: 'https://pillar.it' }, + { company: 'Plowdesk', url: 'https://plowdesk.com' }, + { company: 'PMXT', url: 'https://pmxt.dev' }, + { company: 'PocketPrice', url: 'https://thepocketprice.com' }, + { company: 'Polarise', url: 'https://polarise.io' }, + { company: 'PoliStock, Corp.', url: 'https://polistock.app' }, + { company: 'Prep IQ Education', url: 'https://prepiqedu.in' }, + { company: 'PrepDuel', url: 'https://prepduel.com' }, + { company: 'Prizology', url: 'https://prizology.org' }, + { company: 'Profigent', url: 'https://profigent.ai' }, + { company: 'PromptMetrics', url: 'https://promptmetrics.dev' }, + { company: 'Prosepal', url: 'https://prosepal.io' }, + { company: 'Qalia', url: 'https://qalia.app' }, + { company: 'QuadraMap.com', url: 'https://quadramap.com' }, + { company: 'Qual', url: 'https://qual.cx' }, + { company: 'Querypanel', url: 'https://querypanel.io' }, + { company: 'Radial', url: 'https://radialhq.ai' }, + { company: 'Rakoono', url: 'https://rakoono.com' }, + { company: 'RealMeet', url: 'https://realmeet.de' }, + { company: 'Red Sea Language Learning', url: 'https://redsea.study' }, + { company: 'Reechable', url: 'https://reechable.com' }, + { company: 'Reman.cloud', url: 'https://reman.cloud' }, + { company: 'Rental Shop Management', url: 'https://rentalshopmanagement.com' }, + { company: 'Repaint', url: 'https://repaint.com' }, + { company: 'Replay', url: 'https://replay.sale' }, + { company: 'ReplioHQ.com', url: 'https://repliohq.com' }, + { company: 'Ribbiot', url: 'https://ribbiot.com' }, + { company: 'Runedraw.com', url: 'https://runedraw.com' }, + { company: 'Ruxii Technologies Inc', url: 'https://ruxii.ca' }, + { company: 'saasquickstart.dev', url: 'https://saasquickstart.dev' }, + { company: 'Sandai.org', url: 'https://sandai.org' }, + { company: 'Savvy Gorilla Technologies', url: 'https://savvygorilla.tech' }, + { company: 'ScaleBit Solutions', url: 'https://scalebitsolutions.com' }, + { company: 'Scalekit', url: 'https://scalekit.com' }, + { company: 'Scenarity', url: 'https://scenarity.app' }, + { company: 'ScoutBox', url: 'https://scoutbox.se' }, + { company: 'Secure Ascent', url: 'https://secureascent.com' }, + { company: 'Senrez Technology', url: 'https://senrez.com' }, + { company: 'Sentaiment', url: 'https://sentaiment.com' }, + { company: 'Sentient Logic LLC', url: 'https://sentientlogic.io' }, + { company: 'Sentrix (Formerly Unik AI)', url: 'https://unik.ai' }, + { company: 'share.page', url: 'https://share.page' }, + { company: 'Sharely.ai', url: 'https://sharely.ai' }, + { company: 'Sharkforce', url: 'https://shark-force.com' }, + { company: 'Sherlock GmbH', url: 'https://sherlock.gmbh' }, + { company: 'sieve', url: 'https://usesieve.com' }, + { company: 'Sim Builder', url: 'https://sim-builder.com' }, + { company: 'Simple Report Insight (SR Insight)', url: 'https://srinsight.com' }, + { company: 'Simplify Possible LLC', url: 'https://simplifypossible.com' }, + { company: 'SimplyHRA', url: 'https://simplyhra.com' }, + { company: 'Sipcoin', url: 'https://sipcoin.app' }, + { company: 'Slop Machine', url: 'https://slopmachine.dev' }, + { company: 'Smart AI Design', url: 'https://smartaidesigns.io' }, + { company: 'Smart Conta APP', url: 'https://smartconta.app' }, + { company: 'SNA Labs', url: 'https://snalabs.com' }, + { company: 'Socialtec', url: 'https://socialtec.nl' }, + { company: 'Sparkurio', url: 'https://sparkurio.com' }, + { company: 'SparrowSure, Inc.', url: 'https://sparrowsure.com' }, + { company: 'Specio', url: 'https://specio.space' }, + { company: 'SportDataCo', url: 'https://sportdataco.com' }, + { company: 'SR Info Qube Ltd', url: 'https://srinfoqube.com' }, + { company: 'STEWDY', url: 'https://stewdy.com' }, + { company: 'StoryBuilt', url: 'https://getstorybuilt.com' }, + { company: 'Stowe Health; Effie Connect', url: 'https://stowehealth.com' }, + { company: 'StrikeCraft', url: 'https://strikecraft.app' }, + { company: 'Supabase', url: 'https://supabase.io' }, + { company: 'swftea app pvt ltd', url: 'https://swftea.com' }, + { company: 'Swipeondeck', url: 'https://swipeondeck.com' }, + { company: 'Swirls.ai', url: 'https://swirls.ai' }, + { company: 'Syntaxis', url: 'https://syntaxis.es' }, + { company: 'Talos', url: 'https://talosrun.com' }, + { company: 'TALOS Fleet Technologies', url: 'https://talosfleettechnologies.com' }, + { company: 'Taxina Mobility Pvt Ltd', url: 'https://taxina.in' }, + { company: 'teamvince', url: 'https://teamvince.com' }, + { company: 'Techsnap', url: 'https://techsnap.io' }, + { company: 'Tecnologias Espacio Rojo', url: 'https://espaciorojo.xyz' }, + { company: 'TECSARO LABS PRIVATE LIMITED (Product Tecsaro AI)', url: 'https://tecsaro.com' }, + { company: 'TGAassist', url: 'https://tgaassist.app' }, + { company: 'The Indy Learning Team', url: 'https://theindylearningteam.org' }, + { company: 'The Origination API, Inc.', url: 'https://theoriginationapi.com' }, + { company: 'TherapyHub', url: 'https://therapyhub.io' }, + { company: 'Thinair Computer Inc.', url: 'https://thinair.dev' }, + { company: 'threetone labs', url: 'https://threetone.in' }, + { company: 'Time Squeeze', url: 'https://timesqueeze.net' }, + { company: 'Timeslicer', url: 'https://timeslicer.app' }, + { company: 'Tomorro', url: 'https://tomorro.com' }, + { company: 'Track My Academy', url: 'https://trackmyacademy.com' }, + { company: 'Trail', url: 'https://trailapp.xyz' }, + { company: 'trainable', url: 'https://trainable.world' }, + { company: 'Trayn', url: 'https://trayn.com' }, + { company: 'Trellis', url: 'https://gettrellis.app' }, + { company: 'Trelll as', url: 'https://trelll.no' }, + { company: 'TriPowers LLC', url: 'https://tripowersllc.com' }, + { company: 'TruckFull', url: 'https://truckfull.food' }, + { company: 'Truked', url: 'https://truked.com' }, + { company: 'TrulyNorth', url: 'https://trulynorth.io' }, + { company: 'Tryneedl.ai', url: 'https://tryneedl.ai' }, + { company: 'TSSA (Traffic Stop Safety App)', url: 'https://tssa.tech' }, + { company: 'twynup', url: 'https://twynup.com' }, + { company: 'Type Advantage', url: 'https://typeadvantage.com' }, + { company: 'U1C', url: 'https://u1c.lv' }, + { company: 'Uhuu.io', url: 'https://uhuu.io' }, + { company: 'uniQubit', url: 'https://uniqubit.ca' }, + { company: 'Upgram', url: 'https://upgram.org' }, + { company: 'VAEON', url: 'https://vaeon.ai' }, + { company: 'Value Play Labs', url: 'https://valueplaylabs.com' }, + { company: 'Vandoko', url: 'https://vandoko.ai' }, + { company: 'Veeda.io', url: 'https://veeda.io' }, + { company: 'velto', url: 'https://velto.it' }, + { company: 'VERSE', url: 'https://verseisbetter.com' }, + { company: 'Versuno', url: 'https://versuno.ai' }, + { company: 'vimpl.com', url: 'https://vimpl.com' }, + { company: 'Vindo', url: 'https://vindo.app' }, + { company: 'Vital Dynamix', url: 'https://vitaldynamix.com' }, + { company: 'Vox Animus', url: 'https://vox-animus.com' }, + { company: 'wallace', url: 'https://wallacecorp.ai' }, + { company: 'Watchdog', url: 'https://watchdog.no' }, + { company: 'Wavery', url: 'https://getwavery.com' }, + { company: 'WeAreTeamRocket', url: 'https://weareteamrocket.com' }, + { company: 'WeekThink', url: 'https://weekthink.com' }, + { company: 'Wincrypto.AI', url: 'https://wincrypto.world' }, + { company: 'WITHEQUUS', url: 'https://withequus.com' }, + { company: 'X-ORBIT Proxy Services, LCC.', url: 'https://xorbit.org' }, + { company: 'XCHNGBL LLC', url: 'https://xchngbl.com' }, + { company: 'Xroga AI', url: 'https://xroga.com' }, + { company: 'ZachsApps', url: 'https://zachsapps.com' }, + { company: 'Zelova AI Ltd', url: 'https://zelova.ai' }, + { company: 'Zipr', url: 'https://zipr.in' }, +] diff --git a/apps/www/scripts/generate-state-of-startups-data.ts b/apps/www/scripts/generate-state-of-startups-data.ts new file mode 100644 index 00000000000..366809b4897 --- /dev/null +++ b/apps/www/scripts/generate-state-of-startups-data.ts @@ -0,0 +1,228 @@ +/** + * Generates the embedded State of Startups survey dataset. + * + * The published microsite ships fully static: no live Supabase at build or + * runtime. This script is the one place that touches a database. It derives + * the exact set of (column, aggregation, filters) slices the narrative renders + * by walking the narrative data itself, queries a LOCAL survey Supabase (the + * `state-of-startups` repo's stack) through the generic aggregation RPCs, and + * writes a single committed JSON of pre-aggregated distributions keyed by the + * shared surveyKey(). + * + * Because the slice list is derived from the narrative (not hand-maintained), + * adding a chart/stat/cohort to the narrative automatically gets its data on + * the next run — there is no parallel list to keep in sync. + * + * Usage (with the local survey stack running), run via tsx from apps/www: + * SURVEY_DB_URL=http://127.0.0.1:55321 \ + * SURVEY_DB_KEY=sb_publishable_xxx \ + * npx tsx scripts/generate-state-of-startups-data.ts + */ + +import { writeFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import { createClient } from '@supabase/supabase-js' + +import { mergeFilters, surveyKey } from '../app/state-of-startups/lib/survey-key' +import type { Aggregation, SurveyFilters } from '../app/state-of-startups/lib/survey-key' +import surveyData from '../data/surveys/state-of-startups-2026' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const OUT = join(__dirname, '..', 'data', 'surveys', 'state-of-startups-data.json') + +// This is a standalone, manually-run generator (not a turbo task), so these +// env vars don't affect any build output and need not be declared in turbo.json. +// eslint-disable-next-line turbo/no-undeclared-env-vars +const URL = process.env.SURVEY_DB_URL ?? 'http://127.0.0.1:55321' +// eslint-disable-next-line turbo/no-undeclared-env-vars +const KEY = process.env.SURVEY_DB_KEY ?? 'sb_publishable_ACJWlzQHlZjBrEguHvfOxg_3BJgxAaH' +const YEARS = [2025, 2026] as const + +const RPC: Record = { + single: 'get_single_select_stats', + multi: 'get_multi_select_stats', + boolean: 'get_boolean_stats', +} + +interface Tuple { + column: string + aggregation: Aggregation + filters?: SurveyFilters +} + +// Manual consolidations: free-text survey options that should be counted as a +// single entry. The merged percentage is authoritative (provided by the survey +// owner) because a distinct-respondent union cannot be derived by summing the +// individual option counts. Source labels are matched case-insensitively. +const MULTI_MERGES: Record< + string, + { into: string; from: string[]; pct: Record }[] +> = { + ai_coding_tools: [ + { into: 'ChatGPT / Codex', from: ['chatgpt', 'codex', 'openai'], pct: { 2025: 11, 2026: 13 } }, + ], +} + +function applyMerges( + year: number, + column: string, + dist: { rows: { label: string; count: number }[]; respondentCount: number } +) { + const merges = MULTI_MERGES[column] + if (!merges) return dist + let rows = dist.rows + for (const m of merges) { + const fam = new Set(m.from.map((s) => s.toLowerCase())) + rows = rows.filter((r) => !fam.has(r.label.trim().toLowerCase())) + const count = Math.round(((m.pct[year] ?? 0) / 100) * dist.respondentCount) + if (count > 0) rows.push({ label: m.into, count }) + } + rows.sort((a, b) => b.count - a.count) + return { ...dist, rows } +} + +/** Walk the narrative and emit every (column, aggregation, filters) it renders: + * top-line items, section stats and bar charts (each also under every cohort + * toggle option), cross-tab series per axis cohort, and channel-mix per + * cohort. Deduped by surveyKey. */ +function collectTuples(): Tuple[] { + const byKey = new Map() + const push = (column: string, aggregation: Aggregation, filters?: SurveyFilters) => { + const t: Tuple = { column, aggregation, filters } + byKey.set(surveyKey(0, column, aggregation, filters), t) + } + const addQuery = ( + qy: { column: string; aggregation: Aggregation; filters?: SurveyFilters }, + extra?: SurveyFilters + ) => push(qy.column, qy.aggregation, mergeFilters(qy.filters, extra)) + type TLQuery = { column: string; aggregation: Aggregation; filters?: SurveyFilters } + const addTopLine = (item: { + kind?: string + query?: TLQuery + a?: { query: TLQuery } + b?: { query: TLQuery } + }) => { + if (item.kind === 'compare' && item.a && item.b) { + addQuery(item.a.query) + addQuery(item.b.query) + } else if (item.query) { + addQuery(item.query) + } + } + + surveyData.topLineHero.forEach(addTopLine) + surveyData.topLineSecondary.items.forEach(addTopLine) + + for (const chapter of surveyData.pageChapters) { + for (const section of chapter.sections) { + const cohortExtras: (SurveyFilters | undefined)[] = [undefined] + if (section.cohortToggle) { + for (const opt of section.cohortToggle.options) { + if (opt.filter !== null) cohortExtras.push({ [section.cohortToggle.key]: opt.filter }) + } + } + + for (const stat of section.stats) { + if (!stat.query) continue // static stat card; no distribution to fetch + for (const extra of cohortExtras) addQuery(stat.query, extra) + } + + for (const chart of section.charts) { + if (chart.kind === 'cross-tab') { + for (const cohort of chart.cohorts) { + for (const series of chart.series) { + push(series.query.column, series.query.aggregation, { + [chart.axisColumn]: cohort.filter, + }) + } + } + } else if (chart.kind === 'channel-mix') { + for (const cohort of chart.cohorts) { + push(chart.column, 'multi', { [chart.cohortColumn]: cohort.filter }) + } + } else { + for (const extra of cohortExtras) + push(chart.column, chart.aggregation, mergeFilters(chart.filters, extra)) + } + } + } + } + + return [...byKey.values()] +} + +const client = createClient(URL, KEY) + +async function fetchDistribution(year: number, t: Tuple) { + const [statsRes, rcRes] = await Promise.all([ + client.rpc(RPC[t.aggregation], { + survey_year: year, + column_name: t.column, + filters: t.filters ?? {}, + }), + client.rpc('get_respondent_count_for_column', { + survey_year: year, + column_name: t.column, + filters: t.filters ?? {}, + }), + ]) + if (statsRes.error || rcRes.error) return null // column absent for this year, etc. + const rows = ((statsRes.data ?? []) as { label: unknown; count: unknown }[]).map((r) => ({ + label: String(r.label), + count: Number(r.count ?? 0), + })) + return applyMerges(year, t.column, { rows, respondentCount: Number(rcRes.data ?? 0) }) +} + +async function main() { + const tuples = collectTuples() + const meta: { generatedFrom: string; years: Record; slices: number } = { + generatedFrom: URL, + years: {}, + slices: 0, + } + + for (const year of YEARS) { + const rc = await client.rpc('get_respondent_count_for_column', { + survey_year: year, + column_name: 'role', + filters: {}, + }) + meta.years[year] = Number(rc.data ?? 0) + } + + // Bounded concurrency: the local stack drops requests under a large parallel + // fan-out, which would silently skip narrative slices. A small pool keeps it + // fast without overwhelming PostgREST. + const work = YEARS.flatMap((year) => tuples.map((t) => ({ year, t }))) + const distributions: Record = {} + let skipped = 0 + const POOL = 8 + for (let i = 0; i < work.length; i += POOL) { + const batch = work.slice(i, i + POOL) + const settled = await Promise.all( + batch.map(async ({ year, t }) => { + const dist = await fetchDistribution(year, t) + return dist ? ([surveyKey(year, t.column, t.aggregation, t.filters), dist] as const) : null + }) + ) + for (const entry of settled) { + if (entry) distributions[entry[0]] = entry[1] + else skipped++ + } + } + meta.slices = Object.keys(distributions).length + + writeFileSync(OUT, JSON.stringify({ meta, distributions }, null, 2) + '\n') + console.log(`wrote ${OUT}`) + console.log( + ` ${meta.slices} distributions from ${tuples.length} narrative slices, ${skipped} skipped` + ) + console.log(` respondents: 2025=${meta.years[2025]} 2026=${meta.years[2026]}`) +} + +main().catch((e) => { + console.error(e) + process.exit(1) +})