From 5d3a2e919015e970e756024d54e18aaf9e5aa007 Mon Sep 17 00:00:00 2001 From: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:20:41 +0200 Subject: [PATCH] feat(bots): restore the content for the remaining four bots Follows #146, which proved the pattern on Imhotep: recover the copy from the components deleted in 4600019e, express it with existing section types, add the nav entry, let the nav-integrity guard verify it. No new components. research-assistant 5 -> 8 sections 3,062 -> 4,366 chars (+43%) research-system the six ways Nerd organises an upload scraping the six sources it watches (ArXiv, Scholar, PubMed, Nature, Science Daily, MIT Tech Review) drafts abstract / literature review / methodology / discussion product-manager 5 -> 8 sections 2,539 -> 3,752 chars (+48%) benefits the four Trident actually delivers showcase feature planning, technical debt, cross-team coordination integration GitHub and Jira, with what each one does swiss-german-teacher 5 -> 8 sections 2,793 -> 3,900 chars (+40%) language-learning vocabulary, conversation, grammar communication email and texting, in the right register culture video, podcasts, articles artistic-advisor keeps 5 sections: it only ever had 217 lines, so unlike the others it lost almost nothing. It gains two nav entries for the sections it does have, instead of a two-item menu. Nav went from a low of two items per bot to five or six, and every entry points at a section that renders -- enforced by the guard added in #146. Copy was rewritten rather than pasted. The originals were written for a different page structure and carried filler; this keeps the substance and drops the padding. verify: format, lint, typecheck, 253 tests, build -- all green. Verified visually against a local production build. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01HVwg8DKHQktxJuHeLM3xpG --- data/bots.ts | 12 ++ lib/config/bot-pages.ts | 270 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 282 insertions(+) diff --git a/data/bots.ts b/data/bots.ts index 54ad42ae..01452ada 100644 --- a/data/bots.ts +++ b/data/bots.ts @@ -52,6 +52,9 @@ const bots: Bot[] = [ menuItems: [ { id: 'demo', label: 'Demo', icon: 'πŸ’¬', section: 'demo' }, { id: 'features', label: 'Features', icon: '✨', section: 'features' }, + { id: 'learning', label: 'Learning', icon: 'πŸ“–', section: 'language-learning' }, + { id: 'communication', label: 'Communication', icon: 'βœ‰οΈ', section: 'communication' }, + { id: 'culture', label: 'Culture', icon: 'πŸ”οΈ', section: 'culture' }, ], }, display: { @@ -94,6 +97,10 @@ const bots: Bot[] = [ menuItems: [ { id: 'demo', label: 'Demo', icon: 'πŸ’»', section: 'demo' }, { id: 'features', label: 'Features', icon: '✨', section: 'features' }, + { id: 'system', label: 'Organise', icon: 'πŸ—‚οΈ', section: 'research-system' }, + { id: 'scraping', label: 'Sources', icon: '🌐', section: 'scraping' }, + { id: 'drafts', label: 'Drafts', icon: '✍️', section: 'drafts' }, + { id: 'vision', label: 'Vision', icon: 'πŸš€', section: 'vision' }, ], }, display: { @@ -218,6 +225,8 @@ const bots: Bot[] = [ menuItems: [ { id: 'demo', label: 'Demo', icon: 'πŸ–ΌοΈ', section: 'demo' }, { id: 'features', label: 'Features', icon: '✨', section: 'features' }, + { id: 'how-it-works', label: 'How It Works', icon: '🎨', section: 'how-it-works' }, + { id: 'get-started', label: 'Get Started', icon: 'πŸš€', section: 'cta' }, ], }, display: { @@ -258,6 +267,9 @@ const bots: Bot[] = [ menuItems: [ { id: 'demo', label: 'Demo', icon: 'πŸ’»', section: 'demo' }, { id: 'features', label: 'Features', icon: '✨', section: 'features' }, + { id: 'benefits', label: 'Benefits', icon: '⚑', section: 'benefits' }, + { id: 'showcase', label: 'Showcase', icon: '🎯', section: 'showcase' }, + { id: 'integration', label: 'Integrations', icon: 'πŸ”—', section: 'integration' }, ], }, display: { diff --git a/lib/config/bot-pages.ts b/lib/config/bot-pages.ts index a09d1615..7fc4f8aa 100644 --- a/lib/config/bot-pages.ts +++ b/lib/config/bot-pages.ts @@ -954,6 +954,87 @@ export const botPageConfigs: Record = { ], } as HowItWorksContent, }, + { + id: 'language-learning', + type: 'features', + content: { + badge: 'Language Learning', + title: 'Learn to Speak Like a Local', + subtitle: + 'Personalised Swiss German focused on real conversation, not textbook grammar drills.', + columns: 3, + features: [ + { + icon: 'πŸ“–', + title: 'Vocabulary Builder', + description: + 'Practical words and phrases in ZΓΌrich dialect, with pronunciation guides.', + }, + { + icon: 'πŸ’¬', + title: 'Conversation Practice', + description: 'Everyday exchanges shown in both Standard German and Swiss German.', + }, + { + icon: 'πŸ“', + title: 'Grammar Explanations', + description: 'Swiss German grammar explained by how it differs from Standard German.', + }, + ], + } as FeaturesContent, + }, + { + id: 'communication', + type: 'features', + content: { + badge: 'Communication', + title: 'Write Like You Live Here', + subtitle: 'The everyday writing that trips people up, handled in the right register.', + columns: 2, + features: [ + { + icon: 'βœ‰οΈ', + title: 'Email Writing', + description: + 'Formal and informal Swiss email conventions, with the phrasing locals actually use.', + }, + { + icon: 'πŸ“±', + title: 'Texting Help', + description: + 'Casual Swiss German as it is really written β€” abbreviations, dialect spellings and all.', + }, + ], + } as FeaturesContent, + }, + { + id: 'culture', + type: 'features', + content: { + badge: 'Swiss Content', + title: 'Immerse Yourself', + subtitle: + 'Authentic Swiss German content, matched to your level so it stretches you without losing you.', + columns: 3, + features: [ + { + icon: '🎬', + title: 'Video', + description: 'Short videos subtitled in both Standard and Swiss German.', + }, + { + icon: 'πŸŽ™οΈ', + title: 'Podcasts', + description: 'Audio with transcripts, for listening practice you can follow along.', + }, + { + icon: 'πŸ“°', + title: 'Articles', + description: 'News and blog posts with vocabulary assistance built in.', + }, + ], + } as FeaturesContent, + }, { id: 'cta', type: 'cta', @@ -1030,6 +1111,109 @@ export const botPageConfigs: Record = { ], } as FeaturesContent, }, + { + id: 'research-system', + type: 'features', + content: { + badge: 'Systematisation', + title: 'Upload Once, Organise Automatically', + subtitle: + 'Drop in papers, notes and transcripts. Nerd sorts them into a system you can actually navigate.', + columns: 3, + features: [ + { + icon: '🏷️', + title: 'By Theme', + description: 'Group research by topics and subtopics.', + }, + { + icon: '⭐', + title: 'By Relevance', + description: 'Prioritise by importance to your core question.', + }, + { + icon: 'πŸ“…', + title: 'By Chronology', + description: 'Organise materials along a timeline.', + }, + { + icon: 'πŸ“š', + title: 'By Source Type', + description: 'Group by papers, books, interviews and more.', + }, + { + icon: 'πŸ§ͺ', + title: 'By Methodology', + description: 'Categorise by the research methods used.', + }, + { icon: 'πŸ‘©β€πŸ”¬', title: 'By Author', description: 'Group research by key contributors.' }, + ], + } as FeaturesContent, + }, + { + id: 'scraping', + type: 'features', + content: { + badge: 'Real-Time Sources', + title: 'Never Miss Important Developments', + subtitle: + 'Nerd watches the literature and the news, so a relevant paper does not sit unread for three months.', + columns: 3, + features: [ + { icon: 'πŸ“‘', title: 'ArXiv', description: 'Preprint server for scientific papers.' }, + { + icon: 'πŸŽ“', + title: 'Google Scholar', + description: 'Search across scholarly literature.', + }, + { icon: 'πŸ”¬', title: 'PubMed', description: 'Biomedical literature and abstracts.' }, + { + icon: '🌿', + title: 'Nature', + description: 'Leading multidisciplinary science journal.', + }, + { + icon: 'πŸ“°', + title: 'Science Daily', + description: 'Science news articles and summaries.', + }, + { + icon: 'πŸ’»', + title: 'MIT Technology Review', + description: 'Technology and innovation reporting.', + }, + ], + } as FeaturesContent, + }, + { + id: 'drafts', + type: 'how-it-works', + content: { + title: 'Turn Unstructured Notes into Polished Research', + steps: [ + { + icon: 'πŸ“‹', + title: 'Abstract', + description: 'A tight summary of the question, method and finding.', + }, + { + icon: 'πŸ“–', + title: 'Literature Review', + description: 'What the field already says, and where the gap is.', + }, + { + icon: 'πŸ“„', + title: 'Methodology', + description: 'How the work was done, in the form reviewers expect.', + }, + { + icon: '✍️', + title: 'Discussion', + description: 'What the result means, and what it does not show.', + }, + ], + } as HowItWorksContent, + }, { id: 'vision', type: 'vision', @@ -1171,6 +1355,92 @@ export const botPageConfigs: Record = { ], } as HowItWorksContent, }, + { + id: 'benefits', + type: 'benefits', + content: { + badge: 'Why Trident', + title: 'Why Use Trident?', + subtitle: 'Project management that understands the code, not just the ticket.', + columns: 2, + benefits: [ + { + icon: 'πŸš€', + title: 'Accelerated Development', + description: + 'Speed up development with AI-powered project management and technical guidance.', + }, + { + icon: '⚑', + title: 'Optimised Workflows', + description: + "Identify bottlenecks and streamline your team's processes for maximum productivity.", + }, + { + icon: '🎯', + title: 'Technical Precision', + description: + 'Expert development guidance with concrete best practices and implementation strategies.', + }, + { + icon: 'πŸ“Š', + title: 'Better Planning', + description: + 'Detailed roadmaps with realistic timelines, resource allocation and clear deliverables.', + }, + ], + } as BenefitsContent, + }, + { + id: 'showcase', + type: 'how-it-works', + content: { + title: 'What Trident Is Actually For', + steps: [ + { + icon: 'πŸ—ΊοΈ', + title: 'Feature Planning & Development', + description: + 'From a rough intent to a scoped plan, an implementation path, and a way to tell whether it worked.', + }, + { + icon: '🧹', + title: 'Technical Debt Management', + description: + 'Identify what is actually costing you, then sequence remediation so it fits around delivery.', + }, + { + icon: '🀝', + title: 'Cross-Team Coordination', + description: + 'One set of documentation everyone reads, kept current without a weekly meeting about it.', + }, + ], + } as HowItWorksContent, + }, + { + id: 'integration', + type: 'features', + content: { + badge: 'Integrations', + title: 'Fits the Tools You Already Use', + columns: 2, + features: [ + { + icon: 'πŸ™', + title: 'GitHub', + description: + 'Link tasks to pull requests, track milestones, and generate documentation from the code itself.', + }, + { + icon: 'πŸ“‹', + title: 'Jira', + description: + 'Sync tasks with tickets, import existing sprint structures, and generate sprint reports.', + }, + ], + } as FeaturesContent, + }, { id: 'cta', type: 'cta',