mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-29 02:55:05 +00:00
Prose that carried no decision or fact is gone: the hero, the questions, the gate and every step are a heading and at most a line. What scores is said once (the leaderboard step), and every claim the cloud does not keep is out. Step 1 is one share card (the member's link, Copy, the device's share sheet on phones, seven channels as icons, Customize behind a text button) and a quiet invite-by-email card. Step 3 is one searched, grouped list with one control a row: On when `opens` says so, Get access when it does not, Requested at once after the press. Stars and follows moved under the leaderboard as Earn more. The 1,800-line dashboard is a shell over share, rank, betas and alpha; what they read is one hook (standing.ts); the questions are data (program.ts). Dead access, card, hint and referral components are deleted. Every press is 44px, every input too, and a gate walks each screen at 390px. scripts/brands and scripts/prebuild are TypeScript now; the three marks the share row draws ship in a JSON only /beta loads. /beta's title and card say what the page says. Claude-Session: https://claude.ai/code/session_017vrVus6PPBgP5YRzKV1iqW
180 lines
5.3 KiB
TypeScript
180 lines
5.3 KiB
TypeScript
import { phrase } from '@hanzo/i18n'
|
||
|
||
/** The beta's tracks: beta tester, research access, design partner. */
|
||
export type Program = 'beta' | 'research' | 'partner'
|
||
|
||
/** A question in the beta questionnaire. */
|
||
export interface Ask {
|
||
id: string
|
||
q: string
|
||
kind: 'line' | 'long' | 'one' | 'many'
|
||
options?: readonly string[]
|
||
to?: 'company' | 'role' | 'size'
|
||
}
|
||
|
||
const SPEND = ['$0–$20', '$21–$100', '$101–$200', '$201–$1,000', '$1,001+'] as const
|
||
|
||
/** The programs, and what each one asks. */
|
||
export const PROGRAMS: Record<Program, { name: string; gets: string; asks: readonly Ask[] }> = {
|
||
beta: {
|
||
name: phrase('Beta tester'),
|
||
gets: phrase('New releases before they ship.'),
|
||
asks: [
|
||
{
|
||
id: 'builds',
|
||
q: phrase('What do you build?'),
|
||
kind: 'many',
|
||
options: [
|
||
phrase('Web apps'),
|
||
phrase('Backends and infrastructure'),
|
||
phrase('AI agents'),
|
||
phrase('Data and ML'),
|
||
phrase('Mobile apps'),
|
||
phrase('Games and creative work'),
|
||
phrase('Something else'),
|
||
],
|
||
},
|
||
{
|
||
id: 'first',
|
||
q: phrase('What do you want to try first?'),
|
||
kind: 'many',
|
||
options: [
|
||
phrase('Dev, our coding agent'),
|
||
phrase('Studio, for images, video and sound'),
|
||
phrase('Enso, the router'),
|
||
phrase('Kai, decisions'),
|
||
phrase('Zen models'),
|
||
'Hanzo Cloud',
|
||
],
|
||
},
|
||
{
|
||
id: 'agents',
|
||
q: phrase('Which coding agents do you use today?'),
|
||
kind: 'many',
|
||
options: ['Claude Code', 'Cursor', 'Codex', 'Hanzo Dev', 'GitHub Copilot', phrase('None yet'), phrase('Another')],
|
||
},
|
||
{
|
||
id: 'cadence',
|
||
q: phrase('How often do you use AI?'),
|
||
kind: 'one',
|
||
options: [phrase('Every day'), phrase('Several times a week'), phrase('Once a week'), phrase('Just getting started')],
|
||
},
|
||
{
|
||
id: 'spend',
|
||
q: phrase('What do you spend on AI tools a month?'),
|
||
kind: 'one',
|
||
options: SPEND,
|
||
},
|
||
{
|
||
id: 'blurb',
|
||
q: phrase('Tell us about what you’re working on and why you want to use Hanzo'),
|
||
kind: 'long',
|
||
},
|
||
],
|
||
},
|
||
research: {
|
||
name: phrase('Research access'),
|
||
gets: phrase('Research models and checkpoints to evaluate before release.'),
|
||
asks: [
|
||
{
|
||
id: 'want',
|
||
q: phrase('Which research do you want to evaluate?'),
|
||
kind: 'many',
|
||
options: [
|
||
phrase('Kai multimodal decisions'),
|
||
phrase('The next Zen'),
|
||
phrase('Enso routing policies'),
|
||
phrase('Creative models: video, image, 3D, sound'),
|
||
phrase('Something else'),
|
||
],
|
||
},
|
||
{
|
||
id: 'where',
|
||
q: phrase('Where would you run it?'),
|
||
kind: 'one',
|
||
options: [phrase('Hanzo Cloud, by API'), phrase('Your own cloud'), phrase('On premises or air-gapped'), phrase('Not sure yet')],
|
||
},
|
||
{
|
||
id: 'who',
|
||
q: phrase('Who are you evaluating for?'),
|
||
kind: 'one',
|
||
options: [phrase('A company'), phrase('A university or lab'), phrase('Myself')],
|
||
},
|
||
{
|
||
id: 'publish',
|
||
q: phrase('Will you publish what you find?'),
|
||
kind: 'one',
|
||
options: [phrase('Yes, publicly'), phrase('Inside my organization'), phrase('Not sure')],
|
||
},
|
||
{
|
||
id: 'task',
|
||
q: phrase('What will you evaluate it on?'),
|
||
kind: 'long',
|
||
},
|
||
{
|
||
id: 'blurb',
|
||
q: phrase('Tell us about your research goals and why you want model access'),
|
||
kind: 'long',
|
||
},
|
||
{
|
||
id: 'links',
|
||
q: phrase('Anything we should read?'),
|
||
kind: 'line',
|
||
},
|
||
],
|
||
},
|
||
partner: {
|
||
name: phrase('Design partner'),
|
||
gets: phrase('Build it with the team. Chosen from applications.'),
|
||
asks: [
|
||
{
|
||
id: 'building',
|
||
q: phrase('What are you building with Hanzo?'),
|
||
kind: 'line',
|
||
},
|
||
{
|
||
id: 'size',
|
||
q: phrase('How big is your team?'),
|
||
kind: 'one',
|
||
options: ['1-49', '50-249', '250-999', '1000-4999', '5000+'],
|
||
to: 'size',
|
||
},
|
||
{
|
||
id: 'when',
|
||
q: phrase('When do you want it in production?'),
|
||
kind: 'one',
|
||
options: [phrase('This month'), phrase('This quarter'), phrase('This year'), phrase('Still exploring')],
|
||
},
|
||
{
|
||
id: 'budget',
|
||
q: phrase('What is your monthly AI and compute budget?'),
|
||
kind: 'one',
|
||
options: SPEND,
|
||
},
|
||
{
|
||
id: 'need',
|
||
q: phrase('What do you need from us?'),
|
||
kind: 'many',
|
||
options: [
|
||
phrase('A say in the roadmap'),
|
||
phrase('Custom or fine-tuned models'),
|
||
phrase('A private deployment'),
|
||
phrase('Dedicated engineering support'),
|
||
phrase('Launching together'),
|
||
],
|
||
},
|
||
{
|
||
id: 'blurb',
|
||
q: phrase('Tell us about what you’re working on and how we can collaborate'),
|
||
kind: 'long',
|
||
},
|
||
],
|
||
},
|
||
}
|
||
|
||
/** Professional context questions. */
|
||
export const ABOUT: readonly Ask[] = [
|
||
{ id: 'company', q: phrase('Where do you work?'), kind: 'line', to: 'company' },
|
||
{ id: 'role', q: phrase('What is your role?'), kind: 'line', to: 'role' },
|
||
]
|