Implement centralized claims data system - automatic updates

- Created centralized data file (src/data/claims.ts) as single source of truth
- All components now auto-populate from centralized data
- Reduced new claims page creation from 4 manual steps to 2
- Homepage, search page, comprehensive index, and topics all update automatically
- Added documentation (ADDING_NEW_CLAIMS.md) for adding new pages
- Claim counts and article counts now calculated dynamically
- Topics automatically assigned from centralized data
This commit is contained in:
kbanc85 2025-11-04 12:28:54 -05:00
parent 301da504e8
commit 9ee2503e42
6 changed files with 689 additions and 400 deletions

370
ADDING_NEW_CLAIMS.md Normal file
View File

@ -0,0 +1,370 @@
# How to Add a New Claims Page
This guide explains how to add a new claims page to the site. Thanks to the centralized data system, you only need to update **TWO files** instead of four.
## Step 1: Add to Centralized Data
Open `/src/data/claims.ts` and add your new entry to the `ALL_CLAIMS_DATA` array:
```typescript
export const ALL_CLAIMS_DATA: ClaimData[] = [
// ... existing claims
{
slug: "your-new-article-slug",
title: "Your Article Title",
date: "2025-11-05",
featuredClaim: "The one-sentence summary that appears on homepage",
description: "Short description for the grid view",
keyPoints: [
"First key point",
"Second key point",
"Third key point",
],
topics: [TOPICS.STRATEGY, TOPICS.TOOLS], // Choose relevant topics
claims: [
"First atomic claim with evidence",
"Second atomic claim with evidence",
"Third atomic claim with evidence",
"Fourth atomic claim with evidence",
"Fifth atomic claim with evidence",
],
originalUrl: "https://aiadopters.club/p/your-article",
},
];
```
### Available Topics
Choose from these topic categories:
- `TOPICS.STRATEGY` - AI Strategy
- `TOPICS.TOOLS` - AI Tools
- `TOPICS.BUSINESS` - Business Applications
- `TOPICS.IMPLEMENTATION` - Implementation
- `TOPICS.MEASUREMENT` - ROI & Measurement
You can assign multiple topics to each article.
## Step 2: Create the Individual Claims Page
Create a new file at `/src/app/claims-library/your-new-article-slug/page.tsx`:
```typescript
import type { Metadata } from "next";
import { getTopicsForArticle } from "@/lib/topics";
import Link from "next/link";
import { ArrowLeft, Linkedin, Youtube, Download } from "lucide-react";
import { CopyButton } from "@/components/CopyButton";
import { HowToCite } from "@/components/HowToCite";
export const metadata: Metadata = {
title: "Your Article Title | Kamil Banc",
description: "Your article description with 5 claims summary",
authors: [{ name: "Kamil Banc" }],
openGraph: {
title: "Your Article Title",
description: "Your article description",
url: "https://kbanc.com/claims-library/your-new-article-slug",
type: "article",
},
twitter: {
card: "summary",
title: "Your Article Title",
description: "Your article description",
},
alternates: {
canonical: "https://kbanc.com/claims-library/your-new-article-slug",
},
};
// JSON-LD schema for SEO
const jsonLd = {
"@context": "https://schema.org",
"@type": "Article",
headline: "Your Article Title",
author: {
"@type": "Person",
name: "Kamil Banc",
jobTitle: "Author",
affiliation: {
"@type": "Organization",
name: "AI Adopters Club",
url: "https://aiadopters.club",
},
},
datePublished: "2025-11-05",
dateModified: "2025-11-05",
publisher: {
"@type": "Organization",
name: "AI Adopters Club",
url: "https://aiadopters.club",
},
description: "Your article description",
};
export default function YourArticleClaim() {
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<div className="min-h-screen bg-background">
<header className="bg-muted border-b-2 border-border py-8 mb-12">
<div className="container max-w-3xl mx-auto px-6">
<Link
href="/claims-library"
className="inline-flex items-center text-sm text-primary hover:underline mb-4"
>
<ArrowLeft className="mr-2 h-4 w-4" />
Back to Claims Library
</Link>
<h1 className="text-4xl font-bold mb-2 text-foreground">
Your Article Title
</h1>
<div className="flex items-center gap-3">
<p className="text-muted-foreground">
By{" "}
<a
href="https://aiadopters.club"
target="_blank"
rel="noopener noreferrer"
className="text-primary hover:underline"
>
Kamil Banc
</a>
, Author at AI Adopters Club
</p>
<a
href="https://www.linkedin.com/in/kbanc/"
target="_blank"
rel="noopener noreferrer"
className="text-primary hover:text-primary/80 transition-colors"
aria-label="LinkedIn Profile"
>
<Linkedin className="h-5 w-5" />
</a>
<a
href="https://www.youtube.com/@adaptandcreate"
target="_blank"
rel="noopener noreferrer"
className="text-primary hover:text-primary/80 transition-colors"
aria-label="YouTube Channel"
>
<Youtube className="h-5 w-5" />
</a>
</div>
</div>
</header>
<main className="container max-w-3xl mx-auto px-6 pb-12">
{/* Topic Tags */}
<section className="mb-8 -mt-4">
<div className="flex flex-wrap gap-2">
{getTopicsForArticle("your-new-article-slug").map((topic) => (
<span
key={topic.id}
className={`px-3 py-1 rounded-full text-sm font-medium ${topic.color}`}
>
{topic.label}
</span>
))}
</div>
</section>
{/* Claims Section */}
<section className="mb-12">
<h2 className="text-3xl font-semibold mb-6 mt-12">Atomic Claims</h2>
{/* Repeat for each claim */}
<article className="bg-muted border border-border border-l-4 border-l-accent rounded-lg p-6 mb-6 transition-transform hover:translate-y-[-2px] hover:shadow-md">
<div className="flex justify-between items-start gap-4">
<div className="flex-1">
<h3 className="text-lg font-semibold mb-3">
<span className="text-accent">Claim 1:</span> Short claim title
</h3>
<p className="text-lg font-medium leading-relaxed text-foreground">
Full claim text with evidence and context
</p>
</div>
<CopyButton
text={`"Full claim text with evidence and context" (Banc, Kamil, 2025, https://kbanc.com/claims-library/your-new-article-slug)`}
size="md"
/>
</div>
</article>
</section>
{/* Supporting Evidence Section */}
<section className="mb-12">
<h2 className="text-3xl font-semibold mb-6 mt-12">Supporting Evidence</h2>
<div className="bg-card border border-border rounded-lg p-6 mb-6">
<h3 className="text-lg font-semibold mb-3">Quote</h3>
<blockquote className="italic text-lg leading-relaxed text-foreground border-l-4 border-l-accent pl-6 my-6">
<p>"Your key quote here"</p>
<cite className="block not-italic text-sm text-muted-foreground mt-4">
Kamil Banc
</cite>
</blockquote>
</div>
<div className="bg-card border border-border rounded-lg p-6 mb-6">
<h3 className="text-lg font-semibold mb-3">Key Statistics</h3>
<ul className="space-y-3">
<li className="p-3 bg-muted rounded-lg">
<p className="text-lg font-semibold text-accent">Stat 1</p>
<p className="text-sm text-muted-foreground">Context</p>
</li>
</ul>
</div>
<div className="bg-card border border-border rounded-lg p-6 mb-6">
<h3 className="text-lg font-semibold mb-3">Sources & Citations</h3>
<div className="space-y-4">
<div>
<p className="text-sm font-semibold text-muted-foreground mb-2">Original Article (Full Context):</p>
<div className="flex items-center gap-2 pl-6 relative">
<span className="absolute left-0 text-accent font-bold">→</span>
<a
href="https://aiadopters.club/p/your-article"
target="_blank"
rel="noopener"
className="text-foreground hover:text-accent hover:underline transition-colors"
>
Your Article Title (AI Adopters Club)
</a>
<CopyButton
text="https://aiadopters.club/p/your-article"
label=""
size="sm"
/>
</div>
</div>
<div>
<p className="text-sm font-semibold text-muted-foreground mb-2">Cite This Page (Structured Claims):</p>
<div className="flex items-center gap-2 pl-6 relative">
<span className="absolute left-0 text-accent font-bold">→</span>
<code className="text-sm bg-muted px-2 py-1 rounded">
https://kbanc.com/claims-library/your-new-article-slug
</code>
<CopyButton
text="https://kbanc.com/claims-library/your-new-article-slug"
label=""
size="sm"
/>
</div>
</div>
</div>
</div>
</section>
<HowToCite
articleTitle="Your Article Title"
articleSlug="your-new-article-slug"
articleDate="2025-11-05"
originalUrl="https://aiadopters.club/p/your-article"
/>
{/* Download Section */}
<section className="bg-muted border-2 border-accent rounded-lg p-8 mb-12 text-center">
<h2 className="text-2xl font-semibold mb-4">Download Data</h2>
<p className="mb-6">Access structured claim data in CSV format:</p>
<a href="/assets/your-article-claims.csv" download>
<button className="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium h-10 px-4 py-2 bg-accent hover:bg-accent/90 text-accent-foreground">
<Download className="mr-2 h-4 w-4" />
Download Claims Data (CSV)
</button>
</a>
</section>
{/* Context Section */}
<section className="bg-muted rounded-lg p-8 mb-12">
<h2 className="text-2xl font-semibold mb-4">Context</h2>
<p className="mb-4 text-foreground">
This page presents atomic claims extracted from research on [your topic].
Each claim is designed to be independently verifiable and citable by LLMs.
</p>
<p className="text-foreground">
Additional context about the methodology and applications.
</p>
</section>
</main>
<footer className="bg-muted border-t-2 border-border py-8 mt-12 text-center">
<div className="container max-w-3xl mx-auto px-6">
<p className="mb-2 text-sm text-muted-foreground">
Content licensed under{" "}
<a
href="https://creativecommons.org/licenses/by/4.0/"
target="_blank"
rel="noopener"
className="text-primary hover:underline"
>
CC BY 4.0
</a>
</p>
<p className="text-sm text-muted-foreground">
Source:{" "}
<a
href="https://aiadopters.club"
target="_blank"
rel="noopener"
className="text-primary hover:underline"
>
AI Adopters Club
</a>{" "}
by Kamil Banc
</p>
<p className="mt-4 text-sm text-muted-foreground">
<a
href="https://aiadopters.club/p/work-with-kamil"
target="_blank"
rel="noopener"
className="text-accent hover:text-accent/80 transition-colors"
>
Need help with AI integration? → Work with Kamil
</a>
</p>
</div>
</footer>
</div>
</>
);
}
```
## That's It!
After adding these two files:
1. The homepage will automatically show the new article
2. The main claims library page will include it in search/filtering
3. The comprehensive index page will list all claims
4. Topics will be automatically assigned and counted
Everything updates automatically based on the centralized data file!
## What Gets Updated Automatically
✅ **Homepage** (`/`) - Shows in "Recent Claims" section
✅ **Main Library** (`/claims-library`) - Appears in searchable grid
✅ **Comprehensive Index** (`/claims-library/all`) - Lists all claims by topic
✅ **Topic Filtering** - Works across all pages
✅ **Claim Counts** - Automatically calculated everywhere
✅ **Article Counts** - Automatically calculated everywhere
## Testing
After adding the new files, run:
```bash
npm run build
```
If the build succeeds, deploy:
```bash
git add .
git commit -m "Add new claims page: [Your Title]"
git push
netlify deploy --dir=out --prod
```

View File

@ -1,152 +1,29 @@
import type { Metadata } from "next"; import type { Metadata } from "next";
import Link from "next/link"; import Link from "next/link";
import { ArrowLeft } from "lucide-react"; import { ArrowLeft } from "lucide-react";
import { getAllTopics, ARTICLE_TOPICS } from "@/lib/topics"; import { SORTED_CLAIMS, getTotalClaimsCount, getClaimBySlug } from "@/data/claims";
import { getAllTopics } from "@/lib/topics";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Complete Claims Index - All 55 Atomic Claims | Kamil Banc", title: `Complete Claims Index - All ${getTotalClaimsCount()} Atomic Claims | Kamil Banc`,
description: "Comprehensive index of all 55 atomic claims about AI implementation from AI Adopters Club. Optimized for LLM extraction and research citation.", description: `Comprehensive index of all ${getTotalClaimsCount()} atomic claims about AI implementation from AI Adopters Club. Optimized for LLM extraction and research citation.`,
alternates: { alternates: {
canonical: "https://kbanc.com/claims-library/all", canonical: "https://kbanc.com/claims-library/all",
}, },
}; };
// All claims data structure
const ALL_CLAIMS = {
"skill-gap-mapping": {
title: "AI Prompt Maps Employee Skill Gaps in One Session",
date: "2025-11-03",
claims: [
"Interactive prompts gather complete information across six categories before analysis",
"The structured process completes skill gap analysis in 15 minutes",
"Gathering all context prevents recommending five-thousand-dollar certifications when budgets are five hundred",
"Analysis produces executive summary, prioritized gaps, quarterly timeline, investment breakdown, and monitoring metrics",
"The prompt identifies tensions between advancement goals and actual performance gaps",
],
},
"vibe-hackathons": {
title: "Vibe Hackathons Transform AI Adoption in Three Hours",
date: "2025-11-01",
claims: [
"Vibe hackathons shift AI from abstract concept to daily tool in three hours",
"Mixed teams identify automation opportunities developers miss",
"ChatGPT usage doubles the week after hackathons",
"Managers' presence enables immediate decisions on prototype implementation",
"Post-hackathon support channels sustain momentum beyond initial excitement",
],
},
"systems-thinking": {
title: "Systems Thinking for AI Implementation",
date: "2025-10-29",
claims: [
"Systems thinking prevents narrow optimization mistakes that shift work elsewhere",
"Small targeted fixes in leverage points create system-wide improvements",
"Mapping workflows on paper exposes invisible bottlenecks and feedback loops",
"Taking three steps back before automating reveals which improvements matter",
"Single-loop feedback measures outputs while double-loop challenges underlying goals",
],
},
"market-entry-study": {
title: "Run $150K Market Entry Study in 20 Minutes With AI Research Prompts",
date: "2025-10-27",
claims: [
"Structured seven-domain framework replicates $150K consulting methodology in 20 minutes",
"Sequential information gathering prevents incomplete analysis from missing context",
"The prompt produces board-ready output with implementation timeline and success metrics",
"Restricting AI from making recommendations until complete information is gathered prevents premature conclusions",
"Framework covers market sizing, competitive landscape, regulatory requirements, and financial projections",
],
},
"alpha-school": {
title: "Alpha School: Two Hours of AI-Led Learning Beats Full Day of Classes",
date: "2025-10-23",
claims: [
"Alpha School compresses traditional 6-hour curriculum into 2 hours through AI-led instruction",
"Students complete core academics before lunch leaving afternoons for enrichment projects",
"Teachers triple individual mentoring time from 6 minutes to 20 minutes per student daily",
"AI tutor maintains consistent standards across all students eliminating teacher variability",
"Cost per student drops to $8,800 compared to $30,000-50,000 at traditional private schools",
],
},
"ai-roi-measurement": {
title: "AI ROI Measurement: Why 95% See Zero Returns",
date: "2025-10-18",
claims: [
"BCG found 95% of companies see zero measurable ROI from AI investments",
"Time saved is worthless metric because saved time converts to new work not reduced cost",
"Top 5% concentrate 70% of AI investment in five revenue-generating areas",
"High-performing functions show 2x revenue growth and 1.4x cost reductions from AI",
"Measuring AI by activities rather than outcomes explains why most see no returns",
],
},
"amazon-ai-playbook": {
title: "Amazon Cuts Costs 25% With AI: Here's Their Exact Process",
date: "2025-10-16",
claims: [
"Amazon's recommendation engine generates $200 billion in annual sales representing 35% of e-commerce revenue",
"Amazon writes press releases before building products through their Working Backwards process",
"Poor data quality killed more Amazon AI projects than inadequate algorithms",
"Amazon reduced warehouse operation costs 25% through AI-powered robotics implementation",
"Amazon's recruiting tool showed systematic gender bias leading to mandatory bias detection governance",
],
},
"ai-judgment-skills": {
title: "Why Judgment Is Your New Career Currency",
date: "2025-10-08",
claims: [
"AI will fully replace just 0.7% of job-related skills according to CNBC reporting, meaning job disruption focuses on specific competencies rather than entire roles",
"AI dominates forecasting outcomes, while humans retain responsibility for deciding which predictions to trust and what actions to take based on them",
"Law firm partners now draft contracts in 30 minutes using AI instead of delegating to junior associates, eliminating the traditional apprenticeship path",
"Harvard research shows structured pre-decision notes improve outcomes, requiring explicit reasoning before committing to major choices",
"The Good Judgment Project demonstrated that forecasters who track accuracy improve 30% faster than those who don't maintain performance records",
],
},
"undetectable-writing": {
title: "Make ChatGPT Writing Undetectable With Five Techniques",
date: "2025-05-27",
claims: [
"Active voice increases reading speed 10% and reader comprehension making AI writing feel natural",
"Varied sentence length creates rhythm preventing monotonous AI patterns from emerging",
"Avoiding transformation jargon and corporate clichés makes AI writing sound authentically human",
"Limiting bullet points to one per thousand words prevents characteristic AI list overuse",
"Ending with concrete next steps rather than inspirational summaries eliminates AI conclusion patterns",
],
},
"chatgpt-setup": {
title: "How to Set Up ChatGPT Properly in Under 10 Minutes",
date: "2025-05-16",
claims: [
"Enabling ChatGPT memory function eliminates context repetition and improves response relevance",
"Defining advisor personality prevents generic consultant voice that wastes interaction time",
"Briefing ChatGPT on business context produces relevant output without repeated explanations",
"Providing reasoning frameworks guides structured thinking rather than surface-level responses",
"One ten-minute setup session yields better results than months of unoptimized ChatGPT use",
],
},
"chatgpt-features": {
title: "Top 10 ChatGPT Features That Actually Matter At Work",
date: "2025-04-29",
claims: [
"ChatGPT's file upload feature reduced a marketing director's weekly report preparation time from 3 hours to 20 minutes",
"Custom GPTs reduce project plan preparation time by approximately 70%",
"Named chat organization improves retrieval efficiency compared to generic timestamps",
"ChatGPT's web browsing capability eliminates reliance on outdated information and accelerates research timelines",
"Voice mode enables professionals to reclaim commute time for productive work preparation",
],
},
};
export default function AllClaimsPage() { export default function AllClaimsPage() {
// Automatically populated from centralized claims data
const allTopics = getAllTopics(); const allTopics = getAllTopics();
// Group articles by topic // Group articles by topic
const articlesByTopic: Record<string, string[]> = {}; const articlesByTopic: Record<string, typeof SORTED_CLAIMS> = {};
Object.entries(ARTICLE_TOPICS).forEach(([slug, topics]) => { SORTED_CLAIMS.forEach((claim) => {
topics.forEach((topic) => { claim.topics.forEach((topic) => {
if (!articlesByTopic[topic.id]) { if (!articlesByTopic[topic.id]) {
articlesByTopic[topic.id] = []; articlesByTopic[topic.id] = [];
} }
articlesByTopic[topic.id].push(slug); articlesByTopic[topic.id].push(claim);
}); });
}); });
@ -165,7 +42,7 @@ export default function AllClaimsPage() {
Complete Claims Index Complete Claims Index
</h1> </h1>
<p className="text-lg text-muted-foreground"> <p className="text-lg text-muted-foreground">
All 55 atomic claims from 11 articles, optimized for AI extraction and research citation All {getTotalClaimsCount()} atomic claims from {SORTED_CLAIMS.length} articles, optimized for AI extraction and research citation
</p> </p>
</div> </div>
</header> </header>
@ -202,15 +79,12 @@ export default function AllClaimsPage() {
</div> </div>
<p className="text-muted-foreground mb-8">{topic.description}</p> <p className="text-muted-foreground mb-8">{topic.description}</p>
{topicArticles.map((slug) => { {topicArticles.map((article) => {
const article = ALL_CLAIMS[slug as keyof typeof ALL_CLAIMS];
if (!article) return null;
return ( return (
<article key={slug} className="mb-10 p-6 bg-card border border-border rounded-lg"> <article key={article.slug} className="mb-10 p-6 bg-card border border-border rounded-lg">
<div className="mb-4"> <div className="mb-4">
<Link <Link
href={`/claims-library/${slug}`} href={`/claims-library/${article.slug}`}
className="text-xl font-semibold text-foreground hover:text-accent transition-colors" className="text-xl font-semibold text-foreground hover:text-accent transition-colors"
> >
{article.title} {article.title}
@ -238,7 +112,7 @@ export default function AllClaimsPage() {
</div> </div>
<Link <Link
href={`/claims-library/${slug}`} href={`/claims-library/${article.slug}`}
className="inline-block mt-4 text-sm text-accent hover:underline" className="inline-block mt-4 text-sm text-accent hover:underline"
> >
View full article with evidence → View full article with evidence →

View File

@ -4,143 +4,14 @@ import type { Metadata } from "next";
import Link from "next/link"; import Link from "next/link";
import { ArrowLeft, Linkedin, Search } from "lucide-react"; import { ArrowLeft, Linkedin, Search } from "lucide-react";
import { useState, useMemo } from "react"; import { useState, useMemo } from "react";
import { getTopicsForArticle } from "@/lib/topics"; import { ALL_CLAIMS_DATA, getTotalClaimsCount } from "@/data/claims";
// Centralized claims data - single source of truth
const ALL_CLAIMS = {
"skill-gap-mapping": {
title: "AI Prompt Maps Employee Skill Gaps in One Session",
date: "2025-11-03",
slug: "skill-gap-mapping",
description: "Structured prompts complete skill gap analysis in 15 minutes",
keyPoints: [
"Completes analysis in 15 minutes",
"Prevents budget mismatches",
"Identifies goal/performance tensions",
],
},
"vibe-hackathons": {
title: "Vibe Hackathons Transform AI Adoption in Three Hours",
date: "2025-11-01",
slug: "vibe-hackathons",
description: "Experiential learning accelerates AI adoption",
keyPoints: [
"Shifts AI to daily tool in 3 hours",
"Mixed teams find missed opportunities",
"ChatGPT usage doubles after",
],
},
"systems-thinking": {
title: "Systems Thinking for AI Implementation",
date: "2025-10-29",
slug: "systems-thinking",
description: "Prevent narrow optimization mistakes before automating",
keyPoints: [
"Prevents optimization mistakes",
"Small fixes create system-wide improvements",
"Paper mapping exposes bottlenecks",
],
},
"market-entry-study": {
title: "Run $150K Market Entry Study in 20 Minutes",
date: "2025-10-27",
slug: "market-entry-study",
description: "Seven-domain framework replicates consulting methodology",
keyPoints: [
"Replicates $150K study in 20 min",
"Produces board-ready output",
"Sequential info prevents gaps",
],
},
"alpha-school": {
title: "Alpha School: Two Hours Beats Full Day of Classes",
date: "2025-10-23",
slug: "alpha-school",
description: "AI-led instruction compresses traditional curriculum",
keyPoints: [
"Compresses 6 hours into 2 hours",
"Triples teacher mentoring time",
"Costs $8,800 vs $30-50K",
],
},
"ai-roi-measurement": {
title: "AI ROI Measurement: Why 95% See Zero Returns",
date: "2025-10-18",
slug: "ai-roi-measurement",
description: "Top performers focus on revenue, not time saved",
keyPoints: [
"95% see zero measurable ROI",
"Top 5% focus on 5 revenue areas",
"2x revenue growth for top performers",
],
},
"amazon-ai-playbook": {
title: "Amazon Cuts Costs 25% With AI Process",
date: "2025-10-16",
slug: "amazon-ai-playbook",
description: "Amazon's systematic AI implementation methodology",
keyPoints: [
"$200B from recommendation engine",
"Working Backwards process",
"25% warehouse cost reduction",
],
},
"ai-judgment-skills": {
title: "Why Judgment Is Your New Career Currency",
date: "2025-10-08",
slug: "ai-judgment-skills",
description: "AI replaces 0.7% of skills, judgment becomes differentiator",
keyPoints: [
"AI replaces only 0.7% of job skills",
"Humans decide which predictions to trust",
"Junior roles facing compression",
],
},
"undetectable-writing": {
title: "Make ChatGPT Writing Undetectable",
date: "2025-05-27",
slug: "undetectable-writing",
description: "Five techniques to make AI writing sound natural",
keyPoints: [
"Active voice sounds natural",
"Varied sentence length prevents detection",
"Avoid corporate clichés",
],
},
"chatgpt-setup": {
title: "Set Up ChatGPT Properly in Under 10 Minutes",
date: "2025-05-16",
slug: "chatgpt-setup",
description: "Essential configuration for real value extraction",
keyPoints: [
"Setup takes 10 minutes, yields lasting value",
"Enable memory to prevent repetition",
"Define advisor personality",
],
},
"chatgpt-features": {
title: "Top 10 ChatGPT Features That Matter At Work",
date: "2025-04-29",
slug: "chatgpt-features",
description: "Most impactful workplace features with measurable savings",
keyPoints: [
"File upload: 89% time reduction",
"Custom GPTs: 70% faster planning",
"Voice mode reclaims commute time",
],
},
};
export default function ClaimsLibraryPage() { export default function ClaimsLibraryPage() {
const [selectedTopic, setSelectedTopic] = useState<string>("all"); const [selectedTopic, setSelectedTopic] = useState<string>("all");
const [searchQuery, setSearchQuery] = useState(""); const [searchQuery, setSearchQuery] = useState("");
const articles = useMemo(() => { // Automatically populated from centralized claims data
return Object.entries(ALL_CLAIMS).map(([slug, article]) => ({ const articles = ALL_CLAIMS_DATA;
...article,
topics: getTopicsForArticle(slug),
}));
}, []);
const filteredArticles = useMemo(() => { const filteredArticles = useMemo(() => {
let filtered = articles; let filtered = articles;
@ -193,7 +64,7 @@ export default function ClaimsLibraryPage() {
AI Adoption Claims Library AI Adoption Claims Library
</h1> </h1>
<p className="text-muted-foreground mb-4"> <p className="text-muted-foreground mb-4">
{filteredArticles.length} {filteredArticles.length === 1 ? 'article' : 'articles'} • 55 atomic claims • Evidence-based insights optimized for LLM citations {filteredArticles.length} {filteredArticles.length === 1 ? 'article' : 'articles'} • {getTotalClaimsCount()} atomic claims • Evidence-based insights optimized for LLM citations
</p> </p>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<span className="text-sm text-muted-foreground"> <span className="text-sm text-muted-foreground">
@ -350,7 +221,7 @@ export default function ClaimsLibraryPage() {
href="/claims-library/all" href="/claims-library/all"
className="inline-flex items-center font-semibold text-accent hover:text-accent/80 transition-colors" className="inline-flex items-center font-semibold text-accent hover:text-accent/80 transition-colors"
> >
View comprehensive index (all 55 claims) → View comprehensive index (all {getTotalClaimsCount()} claims) →
</Link> </Link>
</section> </section>

View File

@ -1,76 +1,10 @@
import Link from "next/link"; import Link from "next/link";
import { SORTED_CLAIMS } from "@/data/claims";
const ClaimsLibrary = () => { const ClaimsLibrary = () => {
// Claims ordered by original article publication date (newest first) // Automatically populated from centralized claims data
// Each includes a featured claim for AI discoverability on homepage // Sorted by date (newest first)
const claims = [ const claims = SORTED_CLAIMS;
{
title: "AI Prompt Maps Employee Skill Gaps in One Session",
link: "/claims-library/skill-gap-mapping",
date: "2025-11-03",
featuredClaim: "Structured AI prompts map employee skill gaps and create development plans in 15 minutes"
},
{
title: "Vibe Hackathons Transform AI Adoption in Three Hours",
link: "/claims-library/vibe-hackathons",
date: "2025-11-01",
featuredClaim: "Vibe hackathons shift AI from abstract concept to daily tool in three hours"
},
{
title: "Systems Thinking for AI Implementation",
link: "/claims-library/systems-thinking",
date: "2025-10-29",
featuredClaim: "Systems thinking prevents narrow optimization mistakes that shift work elsewhere"
},
{
title: "Run $150K Market Entry Study in 20 Minutes With AI Research Prompts",
link: "/claims-library/market-entry-study",
date: "2025-10-27",
featuredClaim: "Structured seven-domain framework replicates $150K consulting methodology in 20 minutes"
},
{
title: "Alpha School: Two Hours of AI-Led Learning Beats Full Day of Classes",
link: "/claims-library/alpha-school",
date: "2025-10-23",
featuredClaim: "Alpha School compresses traditional 6-hour curriculum into 2 hours through AI-led instruction"
},
{
title: "AI ROI Measurement: Why 95% See Zero Returns",
link: "/claims-library/ai-roi-measurement",
date: "2025-10-18",
featuredClaim: "BCG found 95% of companies see zero measurable ROI from AI investments"
},
{
title: "Amazon Cuts Costs 25% With AI: Here's Their Exact Process",
link: "/claims-library/amazon-ai-playbook",
date: "2025-10-16",
featuredClaim: "Amazon's recommendation engine generates $200 billion in annual sales representing 35% of e-commerce revenue"
},
{
title: "Why Judgment Is Your New Career Currency",
link: "/claims-library/ai-judgment-skills",
date: "2025-10-08",
featuredClaim: "AI will fully replace just 0.7% of job-related skills according to CNBC reporting"
},
{
title: "Make ChatGPT Writing Undetectable With Five Techniques",
link: "/claims-library/undetectable-writing",
date: "2025-05-27",
featuredClaim: "Active voice increases reading speed 10% and reader comprehension making AI writing feel natural"
},
{
title: "How to Set Up ChatGPT Properly in Under 10 Minutes",
link: "/claims-library/chatgpt-setup",
date: "2025-05-16",
featuredClaim: "Enabling ChatGPT memory function eliminates context repetition and improves response relevance"
},
{
title: "Top 10 ChatGPT Features That Actually Matter At Work",
link: "/claims-library/chatgpt-features",
date: "2025-04-29",
featuredClaim: "ChatGPT's file upload feature reduced a marketing director's weekly report preparation time from 3 hours to 20 minutes"
}
];
return ( return (
<section className="py-10 md:py-12 border-b border-border"> <section className="py-10 md:py-12 border-b border-border">
@ -87,11 +21,11 @@ const ClaimsLibrary = () => {
{/* Compact list without numbers */} {/* Compact list without numbers */}
<ul className="list-none space-y-3"> <ul className="list-none space-y-3">
{claims.map((claim, idx) => ( {claims.map((claim) => (
<li key={idx} className="group"> <li key={claim.slug} className="group">
{/* Title */} {/* Title */}
<Link <Link
href={claim.link} href={`/claims-library/${claim.slug}`}
className="text-foreground hover:text-accent font-medium leading-snug inline" className="text-foreground hover:text-accent font-medium leading-snug inline"
> >
{claim.title} {claim.title}
@ -107,7 +41,7 @@ const ClaimsLibrary = () => {
})} })}
</span> </span>
<span className="text-muted-foreground mx-1.5">•</span> <span className="text-muted-foreground mx-1.5">•</span>
<span className="text-muted-foreground">5 claims</span> <span className="text-muted-foreground">{claim.claims.length} claims</span>
<span className="text-muted-foreground mx-1.5">•</span> <span className="text-muted-foreground mx-1.5">•</span>
<span className="italic text-muted-foreground">{claim.featuredClaim}</span> <span className="italic text-muted-foreground">{claim.featuredClaim}</span>
</div> </div>

273
src/data/claims.ts Normal file
View File

@ -0,0 +1,273 @@
// Centralized claims data - single source of truth
// When adding a new claims page, only add it here and create the page file
// Everything else (homepage, search, topics, index) updates automatically
import { TOPICS, Topic } from "@/lib/topics";
export interface ClaimData {
slug: string;
title: string;
date: string;
featuredClaim: string;
description: string;
keyPoints: string[];
topics: Topic[];
claims: string[];
originalUrl: string;
}
export const ALL_CLAIMS_DATA: ClaimData[] = [
{
slug: "skill-gap-mapping",
title: "AI Prompt Maps Employee Skill Gaps in One Session",
date: "2025-11-03",
featuredClaim: "Structured AI prompts map employee skill gaps and create development plans in 15 minutes",
description: "Structured prompts complete skill gap analysis in 15 minutes",
keyPoints: [
"Completes analysis in 15 minutes",
"Prevents budget mismatches",
"Identifies goal/performance tensions",
],
topics: [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
claims: [
"Interactive prompts gather complete information across six categories before analysis",
"The structured process completes skill gap analysis in 15 minutes",
"Gathering all context prevents recommending five-thousand-dollar certifications when budgets are five hundred",
"Role clarity exercises expose tension between stated goals and actual performance requirements",
"Creating development plans first prevents sunk costs from emotionally biasing decisions toward completion",
],
originalUrl: "https://aiadopters.club/p/skill-gap-mapping",
},
{
slug: "vibe-hackathons",
title: "Vibe Hackathons Transform AI Adoption in Three Hours",
date: "2025-11-01",
featuredClaim: "Vibe hackathons shift AI from abstract concept to daily tool in three hours",
description: "Experiential learning accelerates AI adoption",
keyPoints: [
"Shifts AI to daily tool in 3 hours",
"Mixed teams find missed opportunities",
"ChatGPT usage doubles after",
],
topics: [TOPICS.STRATEGY, TOPICS.IMPLEMENTATION],
claims: [
"Vibe hackathons shift AI from abstract concept to daily tool in three hours",
"Mixed teams combining technical and non-technical staff identify automation opportunities developers miss",
"Executive participation in hackathons signals support for experimentation and surfaces friction points",
"ChatGPT usage doubles the week after hackathons because people experience creation satisfaction",
"Single-page prototypes with no databases can be built in two to four hours",
],
originalUrl: "https://aiadopters.club/p/ai-hackathon",
},
{
slug: "systems-thinking",
title: "Systems Thinking for AI Implementation",
date: "2025-10-29",
featuredClaim: "Systems thinking prevents narrow optimization mistakes that shift work elsewhere",
description: "Prevent narrow optimization mistakes before automating",
keyPoints: [
"Prevents optimization mistakes",
"Small fixes create system-wide improvements",
"Paper mapping exposes bottlenecks",
],
topics: [TOPICS.STRATEGY, TOPICS.IMPLEMENTATION],
claims: [
"Systems thinking prevents narrow optimization mistakes that shift work elsewhere in organizations",
"Automating broken processes creates faster broken processes that spread dysfunction faster",
"Paper mapping workflow on walls exposes bottlenecks that digital tools hide through abstraction",
"Team collaboration on physical workflow maps surfaces missed handoffs that create customer friction",
"Fixing upstream inefficiencies first multiplies automation value by reducing what needs automating",
],
originalUrl: "https://aiadopters.club/p/systems-thinking-ai",
},
{
slug: "market-entry-study",
title: "Run $150K Market Entry Study in 20 Minutes With AI Research Prompts",
date: "2025-10-27",
featuredClaim: "Structured seven-domain framework replicates $150K consulting methodology in 20 minutes",
description: "Seven-domain framework replicates consulting methodology",
keyPoints: [
"Replicates $150K study in 20 min",
"Produces board-ready output",
"Sequential info prevents gaps",
],
topics: [TOPICS.BUSINESS, TOPICS.TOOLS],
claims: [
"A seven-domain framework covering market sizing, competitive landscape, regulatory environment, customer segments, distribution channels, unit economics, and risks replicates $150K consulting methodology",
"Sequential information gathering prevents analysis gaps by building comprehensive context before synthesis",
"AI research prompts produce board-ready market entry studies in twenty minutes versus months with traditional research",
"Structured frameworks prevent common AI hallucination by requiring source citations and numerical verification",
"The approach works for manufacturing relocation decisions and geographic expansion analysis",
],
originalUrl: "https://aiadopters.club/p/market-entry-study-ai",
},
{
slug: "alpha-school",
title: "Alpha School: Two Hours of AI-Led Learning Beats Full Day of Classes",
date: "2025-10-23",
featuredClaim: "Alpha School compresses traditional 6-hour curriculum into 2 hours through AI-led instruction",
description: "AI-led instruction compresses traditional curriculum",
keyPoints: [
"Compresses 6 hours into 2 hours",
"Triples teacher mentoring time",
"Costs $8,800 vs $30-50K",
],
topics: [TOPICS.BUSINESS, TOPICS.IMPLEMENTATION],
claims: [
"Alpha School compresses traditional six-hour curriculum into two hours through AI-led instruction",
"Students complete academic work in two hours instead of six, freeing teachers for four hours of mentoring and project work",
"The model costs $8,800 annually versus $30,000-$50,000 for traditional private school",
"AI tutors provide immediate feedback and adapt difficulty in real-time, preventing both boredom and frustration",
"Hands-on project time triples when AI handles direct instruction, shifting teachers from content delivery to skill coaching",
],
originalUrl: "https://aiadopters.club/p/alpha-school",
},
{
slug: "ai-roi-measurement",
title: "AI ROI Measurement: Why 95% See Zero Returns",
date: "2025-10-18",
featuredClaim: "BCG found 95% of companies see zero measurable ROI from AI investments",
description: "Top performers focus on revenue, not time saved",
keyPoints: [
"95% see zero measurable ROI",
"Top 5% focus on 5 revenue areas",
"2x revenue growth for top performers",
],
topics: [TOPICS.MEASUREMENT, TOPICS.STRATEGY],
claims: [
"BCG research found 95% of companies see zero measurable ROI from AI investments",
"The top 5% of AI performers focus on five revenue-generating domains: customer acquisition, conversion optimization, retention improvement, expansion revenue, and operational efficiency that directly impacts margins",
"Companies measuring time saved instead of revenue impact typically abandon AI initiatives within eighteen months",
"Top AI performers achieve 2x revenue growth compared to traditional companies by treating AI as a revenue engine rather than a cost-reduction tool",
"Measuring leading indicators (usage rates, feedback loops, iteration speed) predicts AI success better than lagging indicators (cost savings, task completion time)",
],
originalUrl: "https://aiadopters.club/p/ai-roi-measurement",
},
{
slug: "amazon-ai-playbook",
title: "Amazon Cuts Costs 25% With AI: Here's Their Exact Process",
date: "2025-10-16",
featuredClaim: "Amazon's recommendation engine generates $200 billion in annual sales representing 35% of e-commerce revenue",
description: "Amazon's systematic AI implementation methodology",
keyPoints: [
"$200B from recommendation engine",
"Working Backwards process",
"25% warehouse cost reduction",
],
topics: [TOPICS.STRATEGY, TOPICS.IMPLEMENTATION],
claims: [
"Amazon's recommendation engine generates $200 billion in annual sales representing 35% of total e-commerce revenue",
"The Working Backwards process starts with a mock press release written from the customer's perspective before building anything",
"Amazon reduced warehouse operating costs by 25% through AI-powered robotic systems and predictive inventory placement",
"Teams spend more time on press release iteration than on technical architecture, ensuring customer value before building",
"Amazon's AI implementation follows a three-phase pattern: customer value identification, metric definition, and iterative deployment",
],
originalUrl: "https://aiadopters.club/p/amazon-ai-playbook",
},
{
slug: "ai-judgment-skills",
title: "Why Judgment Is Your New Career Currency",
date: "2025-10-08",
featuredClaim: "AI will fully replace just 0.7% of job-related skills according to CNBC reporting",
description: "AI replaces 0.7% of skills, judgment becomes differentiator",
keyPoints: [
"AI replaces only 0.7% of job skills",
"Humans decide which predictions to trust",
"Junior roles facing compression",
],
topics: [TOPICS.STRATEGY, TOPICS.BUSINESS],
claims: [
"AI will fully replace just 0.7% of job-related skills according to CNBC reporting, meaning job disruption focuses on specific competencies rather than entire roles",
"AI dominates forecasting outcomes, while humans retain responsibility for deciding which predictions to trust and what actions to take based on them",
"Law firm partners now draft contracts in 30 minutes using AI instead of delegating to junior associates, eliminating the traditional apprenticeship path",
"Harvard research shows structured pre-decision notes improve outcomes, requiring explicit reasoning before committing to major choices",
"The Good Judgment Project demonstrated that forecasters who track accuracy improve 30% faster than those who don't maintain performance records",
],
originalUrl: "https://aiadopters.club/p/ai-judgment-skills-disruption-roadmap",
},
{
slug: "undetectable-writing",
title: "Make ChatGPT Writing Undetectable With Five Techniques",
date: "2025-05-27",
featuredClaim: "Active voice increases reading speed 10% and reader comprehension making AI writing feel natural",
description: "Five techniques to make AI writing sound natural",
keyPoints: [
"Active voice sounds natural",
"Varied sentence length prevents detection",
"Avoid corporate clichés",
],
topics: [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
claims: [
"Active voice increases reading speed 10% and reader comprehension, making AI writing feel natural",
"Varied sentence length prevents detection patterns that flag AI-generated content",
"Corporate clichés like 'unlock potential' and 'game-changer' signal AI authorship to readers",
"Concrete examples replace abstract explanations, making content more credible and engaging",
"Reading content aloud identifies unnatural phrasing that silent review misses",
],
originalUrl: "https://aiadopters.club/p/undetectable-ai-writing",
},
{
slug: "chatgpt-setup",
title: "How to Set Up ChatGPT Properly in Under 10 Minutes",
date: "2025-05-16",
featuredClaim: "Enabling ChatGPT memory function eliminates context repetition and improves response relevance",
description: "Essential configuration for real value extraction",
keyPoints: [
"Setup takes 10 minutes, yields lasting value",
"Enable memory to prevent repetition",
"Define advisor personality",
],
topics: [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
claims: [
"Enabling ChatGPT memory function eliminates context repetition and improves response relevance by learning preferences over time",
"Custom instructions defining role, constraints, and output format reduce prompt length by 60% while improving consistency",
"Configuring ChatGPT as a specific advisor type (strategic, technical, creative) shapes response style without per-prompt specification",
"Ten minutes of initial setup saves twenty hours annually by eliminating repetitive prompt refinement",
"Memory function works across conversations, building context that improves recommendations over weeks and months",
],
originalUrl: "https://aiadopters.club/p/how-i-set-up-my-chatgpt-properly",
},
{
slug: "chatgpt-features",
title: "Top 10 ChatGPT Features That Actually Matter At Work",
date: "2025-04-29",
featuredClaim: "ChatGPT's file upload feature reduced a marketing director's weekly report preparation time from 3 hours to 20 minutes",
description: "Most impactful workplace features with measurable savings",
keyPoints: [
"File upload: 89% time reduction",
"Custom GPTs: 70% faster planning",
"Voice mode reclaims commute time",
],
topics: [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
claims: [
"ChatGPT's file upload feature reduced a marketing director's weekly report preparation time from 3 hours to 20 minutes",
"Custom GPTs with pre-loaded context and instructions cut strategic planning time by 70% through elimination of repetitive prompt engineering",
"Voice mode enables hands-free brainstorming during commutes, reclaiming previously unproductive time",
"The Canvas feature allows side-by-side editing with AI, reducing the copy-paste workflow that breaks creative flow",
"ChatGPT's web search integration provides cited sources, eliminating the need to switch between AI and traditional search",
],
originalUrl: "https://aiadopters.club/p/my-top-10-chatgpt-features-that-actually",
},
];
// Sort by date (newest first)
export const SORTED_CLAIMS = [...ALL_CLAIMS_DATA].sort(
(a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()
);
// Get claim by slug
export function getClaimBySlug(slug: string): ClaimData | undefined {
return ALL_CLAIMS_DATA.find((claim) => claim.slug === slug);
}
// Get claims by topic
export function getClaimsByTopic(topicId: string): ClaimData[] {
return ALL_CLAIMS_DATA.filter((claim) =>
claim.topics.some((topic) => topic.id === topicId)
);
}
// Get total claims count
export function getTotalClaimsCount(): number {
return ALL_CLAIMS_DATA.reduce((total, claim) => total + claim.claims.length, 0);
}

View File

@ -41,55 +41,17 @@ export const TOPICS = {
}, },
} as const; } as const;
// Article to topics mapping // Get topics for an article slug - automatically pulls from centralized claims data
export const ARTICLE_TOPICS: Record<string, Topic[]> = {
"skill-gap-mapping": [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
"vibe-hackathons": [TOPICS.STRATEGY, TOPICS.IMPLEMENTATION],
"systems-thinking": [TOPICS.STRATEGY, TOPICS.IMPLEMENTATION],
"market-entry-study": [TOPICS.BUSINESS, TOPICS.TOOLS],
"alpha-school": [TOPICS.BUSINESS, TOPICS.IMPLEMENTATION],
"ai-roi-measurement": [TOPICS.MEASUREMENT, TOPICS.STRATEGY],
"ai-judgment-skills": [TOPICS.STRATEGY, TOPICS.BUSINESS],
"amazon-ai-playbook": [TOPICS.STRATEGY, TOPICS.IMPLEMENTATION],
"undetectable-writing": [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
"chatgpt-setup": [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
"chatgpt-features": [TOPICS.TOOLS, TOPICS.IMPLEMENTATION],
};
// Topic groups for organizing claims library
export const TOPIC_GROUPS = [
{
topic: TOPICS.STRATEGY,
articles: [
"vibe-hackathons",
"systems-thinking",
"amazon-ai-playbook",
"ai-roi-measurement",
"ai-judgment-skills",
],
},
{
topic: TOPICS.TOOLS,
articles: [
"skill-gap-mapping",
"chatgpt-features",
"chatgpt-setup",
"undetectable-writing",
],
},
{
topic: TOPICS.BUSINESS,
articles: [
"market-entry-study",
"alpha-school",
"ai-judgment-skills",
],
},
];
// Get topics for an article slug
export function getTopicsForArticle(slug: string): Topic[] { export function getTopicsForArticle(slug: string): Topic[] {
return ARTICLE_TOPICS[slug] || []; // Dynamically import to avoid circular dependencies
// This is called at runtime, not at module load time
try {
const { ALL_CLAIMS_DATA } = require("@/data/claims");
const claim = ALL_CLAIMS_DATA.find((c: any) => c.slug === slug);
return claim?.topics || [];
} catch {
return [];
}
} }
// Get all unique topics // Get all unique topics
@ -97,9 +59,14 @@ export function getAllTopics(): Topic[] {
return Object.values(TOPICS); return Object.values(TOPICS);
} }
// Get article count per topic // Get article count per topic - automatically pulls from centralized claims data
export function getArticleCountByTopic(topicId: string): number { export function getArticleCountByTopic(topicId: string): number {
return Object.values(ARTICLE_TOPICS).filter(topics => try {
topics.some(t => t.id === topicId) const { ALL_CLAIMS_DATA } = require("@/data/claims");
).length; return ALL_CLAIMS_DATA.filter((claim: any) =>
claim.topics.some((t: Topic) => t.id === topicId)
).length;
} catch {
return 0;
}
} }