// ============================================================= // Sample data — prototypes, signals, inbox items // ============================================================= const PROTOTYPES = [ { id: 'WNO-014', pitch: 'A field-notebook for catching weird ideas before they evaporate.', learning: 'Do people return to capture more than once?', test: 'One-page landing + email capture, 14 days.', target: 'Coulomb', stage: 'experiment', stageLabel: 'Experiment', signal: 'S1', risks: 'Confused with note-taking apps.', }, { id: 'WNO-017', pitch: 'A LEGO-brick mood board for engineers who don\u2019t think in mood boards.', learning: 'Will engineers attach metaphors to their tickets?', test: 'Slack bot, three teams, two weeks.', target: 'Helix', stage: 'signal', stageLabel: 'Signal review', signal: 'S3', risks: 'Cute but unused after a week.', }, { id: 'WNO-021', pitch: 'Concierge-style \u201cprototype triage\u201d for indie hackers.', learning: 'Will three founders pay for a one-hour triage call?', test: 'Offer beta · 3 calls · listed price.', target: 'Plenitude', stage: 'experiment', stageLabel: 'Experiment', signal: 'S2', risks: 'Time-cost outruns signal value.', }, { id: 'WNO-024', pitch: 'A relevant-#CoronaPolitics timeline, re-released with one editor.', learning: 'Is there residual demand five years on?', test: 'Static preview page, 30 days, count returns.', target: 'None yet', stage: 'parked', stageLabel: 'Parked', signal: 'S0', risks: 'Topical relevance has clearly faded.', }, ]; const INBOX = [ { id: 1, ts: '2026-03-02 14:21', text: 'Idea: \u201csubway map\u201d view of the prototype pipeline. People understand transit maps; they don\u2019t understand kanban boards.', from: 'Tegwick' }, { id: 2, ts: '2026-03-01 09:08', text: 'Weird observation from yesterday\u2019s call: three founders independently asked for \u201csomething to capture the half-formed stuff\u201d.', from: 'note-to-self' }, { id: 3, ts: '2026-02-28 23:55', text: 'Could the LEGO-brick metaphor extend to a public \u201cbuild log\u201d format? One brick = one decision.', from: 'Tegwick' }, { id: 4, ts: '2026-02-27 11:34', text: 'Park idea: realtime sentiment dashboard for prototype landing pages. Probably worse than reading the comments.', from: 'note-to-self' }, { id: 5, ts: '2026-02-26 17:02', text: 'Conversation with R. about closed-beta etiquette. Useful: pre-write the exit email before the beta opens.', from: 'note-to-self' }, { id: 6, ts: '2026-02-25 08:12', text: 'fuerindifferenz shirts: residual interest from old whywhynot.de page. Could a yearly drop work?', from: 'Tegwick' }, { id: 7, ts: '2026-02-24 15:40', text: 'Tiny idea: a \u201creject log\u201d that publishes the ideas you said no to, with one-sentence reasons.', from: 'note-to-self' }, ]; const SIGNALS = [ { id: 'SIG-031', proto: 'WNO-017', level: 'S3', what: 'Two teams shipped public README sections labelled \u201cbrick: scope\u201d after using the bot for a week.', source: 'usage log', date: '2026-03-04' }, { id: 'SIG-030', proto: 'WNO-017', level: 'S2', what: 'Three engineers DM\u2019d asking for an export-to-Notion option.', source: 'Slack', date: '2026-03-03' }, { id: 'SIG-029', proto: 'WNO-014', level: 'S1', what: 'Landing page: 34 visits, 7 emails, 0 returns in week 1.', source: 'Plausible', date: '2026-03-01' }, { id: 'SIG-028', proto: 'WNO-021', level: 'S2', what: 'First triage call booked at listed price; second declined on price.', source: 'Stripe / email', date: '2026-02-28' }, { id: 'SIG-027', proto: 'WNO-021', level: 'S1', what: '\u201cInteresting but I\u2019d want a free first one\u201d \u00d72.', source: 'interview', date: '2026-02-26' }, { id: 'SIG-026', proto: 'WNO-024', level: 'S0', what: 'Static preview: 12 visits in 30 days, 0 returns.', source: 'Plausible', date: '2026-02-24' }, ]; Object.assign(window, { PROTOTYPES, INBOX, SIGNALS });