adding some business tasks to look at including in the demo, and updating the slides

This commit is contained in:
itsamejms
2026-06-09 11:00:54 +01:00
parent 4acaba19aa
commit 6387753ee4
13 changed files with 89 additions and 24 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
*.mp3 *.mp3
*.bin *.bin
.DS_Store .DS_Store
*.wav *.wav
business-transactions.csv
+64
View File
@@ -0,0 +1,64 @@
### 1. High-Sensitivity Data Processing (Privacy Demo)
Goal: Show that you can process "secret" business data without it ever leaving the machine.
- Client Confidentiality:
"I am uploading a transcript of a private discovery call with a potential high-ticket client. Please
extract the key pain points, their current budget, and create a personalized proposal outline.
(Highlight: No data is sent to OpenAI/Google, so the client's privacy is 100% guaranteed)."
- Financial Analysis:
"Analyze the raw CSV `/Users/jamestwose/Coding/ledex-demo/business-transactions.csv` of my monthly business expenses for the last year. Identify the top 3 categories
where I'm overspending and suggest a lean budget to increase my profit margin by 15%. (Highlight: Your
financial records never touch a cloud server)."
### 2. High-Volume Content Engine (Cost Savings Demo)
Goal: Demonstrate tasks that would be expensive or hit "rate limits" on paid subscriptions if done at
scale.
- The Content Multiplier:
"Here is a long-form blog post I wrote. Transform this into: 1) A 5-tweet X thread, 2) A punchy
LinkedIn post for entrepreneurs, 3) A 15-second Instagram Reel script, and 4) A newsletter teaser.
Maintain a professional yet adventurous 'digital nomad' tone. (Highlight: Do this for 100 articles for
$0 extra cost)."
- SEO Keyword Expansion:
"Generate 50 variations of low-competition, long-tail keywords for a 'Luxury Villa Rental in Algarve'
business, categorized by user intent (informational, transactional, navigational). (Highlight:
High-volume brainstorming without subscription 'credit' limits)."
### 3. Workflow Automation & Structuring (Efficiency Demo)
Goal: Show how Local AI handles "boring" administrative overhead instantly.
- Meeting-to-Action Pipeline:
"Here are my messy notes from a brainstorming session. Turn these into a structured Project Brief with
a clear 'Definition of Done,' a list of action items assigned by role, and a suggested timeline for
the next 4 weeks. (Highlight: Rapidly converting chaos into a business plan offline)."
- Email Systematization:
"I receive a lot of these types of inquiries: [Paste 3 example emails]. Create 3 different response
templates: one for 'High Intent/Qualified', one for 'Low Budget/Not a fit', and one for 'Requesting
more info'. Make them sound human and welcoming. (Highlight: Building a local knowledge base of
business assets)."
### 4. "The Offline Edge" (Independence Demo)
Goal: Specifically for Slide 9 (Live Offline Walkthrough). Do this while the Wi-Fi is physically off.
- The "Crisis" Assistant:
"I have no internet right now and I'm about to enter a meeting. Help me prepare a 3-point rebuttal for
a client who thinks my pricing is too high compared to a cheap agency. Focus on 'Quality,' 'Security,'
and 'Long-term ROI'. (Highlight: AI as a reliable tool that works in a cafe with no Wi-Fi)."
### Summary Table for your Demo Presentation:
┌──────────────┬────────────────────────────┬─────────────────────────────────────────┐
Demo Segment Business Task Core "Local AI" Win
├──────────────┼────────────────────────────┼─────────────────────────────────────────┤
Privacy Client Proposal/Finance Zero Data Leaks $\rightarrow$ Trust
├──────────────┼────────────────────────────┼─────────────────────────────────────────┤
Scale Content Repurposing Zero Subscriptions $\rightarrow$ Profit
├──────────────┼────────────────────────────┼─────────────────────────────────────────┤
Workflow Meeting $\to$ Action Items Zero Friction $\rightarrow$ Speed
├──────────────┼────────────────────────────┼─────────────────────────────────────────┤
Sovereignty Offline Strategy Zero Downtime $\rightarrow$ Reliability
└──────────────┴────────────────────────────┴─────────────────────────────────────────┘
+1 -1
View File
@@ -5,4 +5,4 @@ Tools used:
## Demos ## Demos
- Sentiment analysis of reviews + learning points - Sentiment analysis of reviews + learning points
- Meeting recording + summarization + action points - Meeting recording + summarization + action points [DONE]
+1 -1
View File
@@ -25,7 +25,7 @@ export default function App() {
const [soundEnabled, setSoundEnabled] = useState<boolean>(false); const [soundEnabled, setSoundEnabled] = useState<boolean>(false);
// Shared state for cross-slide communication // Shared state for cross-slide communication
const [selectedGoal, setSelectedGoal] = useState<GoalType>('agents'); const [selectedGoal, setSelectedGoal] = useState<GoalType>('writing');
const [procureBudget, setProcureBudget] = useState<BudgetType>('budget'); const [procureBudget, setProcureBudget] = useState<BudgetType>('budget');
const [toastMessage, setToastMessage] = useState<string | null>(null); const [toastMessage, setToastMessage] = useState<string | null>(null);
@@ -49,7 +49,7 @@ export default function ControlBar({
</div> </div>
<div className="flex items-center gap-2 order-2 sm:order-3 w-full sm:w-auto justify-between sm:justify-start"> <div className="flex items-center gap-2 order-2 sm:order-3 w-full sm:w-auto justify-between sm:justify-start">
<button {/* <button
onClick={() => { onClick={() => {
handleElementClick(); handleElementClick();
onToggleAutoplay(); onToggleAutoplay();
@@ -63,7 +63,7 @@ export default function ControlBar({
> >
{isAutoplay ? <Pause className="w-3 h-3 text-emerald-400 animate-pulse" /> : <Play className="w-3 h-3" />} {isAutoplay ? <Pause className="w-3 h-3 text-emerald-400 animate-pulse" /> : <Play className="w-3 h-3" />}
<span>{isAutoplay ? 'AUTOPLAY: ON' : 'AUTOPLAY: OFF'}</span> <span>{isAutoplay ? 'AUTOPLAY: ON' : 'AUTOPLAY: OFF'}</span>
</button> </button> */}
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<button <button
@@ -23,7 +23,7 @@ export default function Slide1Title() {
</p> </p>
<h1 className="font-display font-extrabold text-3xl sm:text-4xl md:text-5xl lg:text-5xl text-white tracking-tight leading-tight uppercase font-glow mb-5"> <h1 className="font-display font-extrabold text-3xl sm:text-4xl md:text-5xl lg:text-5xl text-white tracking-tight leading-tight uppercase font-glow mb-5">
The Sovereign Business Engine Private AI for Your Business
</h1> </h1>
<div className="h-[2px] w-24 bg-gradient-to-r from-transparent via-emerald-500 to-transparent mb-6" /> <div className="h-[2px] w-24 bg-gradient-to-r from-transparent via-emerald-500 to-transparent mb-6" />
@@ -33,7 +33,7 @@ export default function Slide1Title() {
</p> </p>
<div className="mt-12 flex flex-wrap gap-3 font-mono text-[10px] text-slate-400 justify-center"> <div className="mt-12 flex flex-wrap gap-3 font-mono text-[10px] text-slate-400 justify-center">
<span className="px-3 py-1.5 rounded-full bg-slate-950 border border-emerald-900/30"> PRIVATE INTEL</span> <span className="px-3 py-1.5 rounded-full bg-slate-950 border border-emerald-900/30"> PRIVATE</span>
<span className="px-3 py-1.5 rounded-full bg-slate-950 border border-emerald-900/30"> DECENTRALISED</span> <span className="px-3 py-1.5 rounded-full bg-slate-950 border border-emerald-900/30"> DECENTRALISED</span>
<span className="px-3 py-1.5 rounded-full bg-slate-950 border border-emerald-900/30"> 0% SAAS TRANSACTION</span> <span className="px-3 py-1.5 rounded-full bg-slate-950 border border-emerald-900/30"> 0% SAAS TRANSACTION</span>
</div> </div>
@@ -23,7 +23,7 @@ const paradoxCards: ParadoxCard[] = [
{ {
title: "Subscription Taxes", title: "Subscription Taxes",
desc: "Licensing Cost", desc: "Licensing Cost",
detail: "Paying $20$40 per person every single month creates heavy baseline overheads for growing digital agencies or self-starters.", detail: "Paying $20+ per person every single month creates heavy baseline overheads for growing digital agencies or self-starters.",
alternative: "Zero-Bill Scale. Run identical models on modern laptops with zero cumulative licensing bills or user caps.", alternative: "Zero-Bill Scale. Run identical models on modern laptops with zero cumulative licensing bills or user caps.",
color: "from-amber-500/10 to-amber-600/5 border-amber-950/40 text-amber-400", color: "from-amber-500/10 to-amber-600/5 border-amber-950/40 text-amber-400",
tag: "CASH BURN" tag: "CASH BURN"
@@ -54,13 +54,13 @@ export default function Slide2CloudParadox() {
The Cloud Expense Trap The Cloud Expense Trap
</h2> </h2>
<p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6"> <p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6">
Relying on big-tech online platforms invites data leakage risks, builds high monthly software subscriptions, and depends on having perfect Internet. Tap each risk card to unlock your secure local remedy. Relying on big-tech online platforms invites data leakage risks, builds high monthly software subscriptions, and depends on having perfect Internet.
</p> </p>
<div className="hidden lg:flex items-center gap-2 border border-slate-800/80 rounded px-3 py-1.5 bg-slate-900/50 text-[10px] font-mono text-slate-500"> {/* <div className="hidden lg:flex items-center gap-2 border border-slate-800/80 rounded px-3 py-1.5 bg-slate-900/50 text-[10px] font-mono text-slate-500">
<Info className="w-3.5 h-3.5 text-emerald-400 shrink-0" /> <Info className="w-3.5 h-3.5 text-emerald-400 shrink-0" />
<span>Interactive: Click each card to reveal the offline local alternative.</span> <span>Interactive: Click each card to reveal the offline local alternative.</span>
</div> </div> */}
</div> </div>
<div className="lg:col-span-8 grid grid-cols-1 md:grid-cols-3 gap-4 w-full h-auto"> <div className="lg:col-span-8 grid grid-cols-1 md:grid-cols-3 gap-4 w-full h-auto">
@@ -52,7 +52,7 @@ export default function Slide3LocalAIStack() {
Your Private AI Workspace Your Private AI Workspace
</h2> </h2>
<p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6"> <p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6">
Running secure local AI is straightforward and divides into three simple, clear levels. Click any layer below to see how friendly desktop apps link directly to your laptop's power. Running secure local AI is straightforward and divides into three simple, clear levels.
</p> </p>
<div className="bg-slate-950/40 border border-emerald-950/30 rounded-lg p-5 font-mono text-left"> <div className="bg-slate-950/40 border border-emerald-950/30 rounded-lg p-5 font-mono text-left">
@@ -63,7 +63,7 @@ export default function Slide4Quantization() {
return ( return (
<div className="grid grid-cols-1 lg:grid-cols-12 gap-8 items-center max-w-6xl mx-auto w-full"> <div className="grid grid-cols-1 lg:grid-cols-12 gap-8 items-center max-w-6xl mx-auto w-full">
<div className="lg:col-span-5 flex flex-col justify-center"> <div className="lg:col-span-6 flex flex-col justify-center">
<span className="text-emerald-500 font-mono text-xs font-bold uppercase tracking-wider mb-2">// DYNAMIC OPTIMISATION</span> <span className="text-emerald-500 font-mono text-xs font-bold uppercase tracking-wider mb-2">// DYNAMIC OPTIMISATION</span>
<h2 className="font-display font-bold text-2xl sm:text-3xl text-white tracking-tight uppercase leading-none mb-4"> <h2 className="font-display font-bold text-2xl sm:text-3xl text-white tracking-tight uppercase leading-none mb-4">
AI Compression: Smart Scaling AI Compression: Smart Scaling
@@ -80,7 +80,7 @@ export default function Slide4Quantization() {
</div> </div>
</div> </div>
<div className="lg:col-span-7 flex flex-col gap-6 w-full"> <div className="lg:col-span-6 flex flex-col gap-6 w-full">
<div className="bg-slate-950/60 border border-slate-800/80 rounded-xl p-5 sm:p-6 md:p-8 relative"> <div className="bg-slate-950/60 border border-slate-800/80 rounded-xl p-5 sm:p-6 md:p-8 relative">
<div className="flex items-center justify-between font-mono text-[10px] text-slate-400 mb-6"> <div className="flex items-center justify-between font-mono text-[10px] text-slate-400 mb-6">
<span>INTERACTIVE COMPRESSION SELECTOR</span> <span>INTERACTIVE COMPRESSION SELECTOR</span>
@@ -241,7 +241,7 @@ export default function Slide5Pipelines({ showToast }: { showToast: (msg: string
Smart Workflow Pipelines Smart Workflow Pipelines
</h2> </h2>
<p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6"> <p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6">
Transform unstructured data into actionable insights. Select a pipeline type and watch local AI extract, categorize, and score your business data in milliseconds. Transform unstructured data into actionable insights.
</p> </p>
<div className="flex flex-col gap-3 font-mono text-[11px] text-slate-400"> <div className="flex flex-col gap-3 font-mono text-[11px] text-slate-400">
@@ -150,7 +150,7 @@ export default function Slide6HardwareMatrix({
Your Hardware Match Your Hardware Match
</h2> </h2>
<p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6"> <p className="text-slate-400 font-sans text-sm sm:text-base leading-relaxed mb-6">
Map local AI targets against your company assets. Standard office equipment already houses substantial computational power. Utilize our selector to plan your deployment. Map local AI targets against your company assets. Standard office equipment already houses substantial computational power.
</p> </p>
<div className="flex bg-slate-950/80 border border-slate-800/80 rounded p-1 gap-1 mb-6 font-mono text-[10px]"> <div className="flex bg-slate-950/80 border border-slate-800/80 rounded p-1 gap-1 mb-6 font-mono text-[10px]">
@@ -54,7 +54,7 @@ export default function Slide7BuyersGuide({
Easy Setup & Hardware Guide Easy Setup & Hardware Guide
</h2> </h2>
<p className="text-slate-400 text-xs sm:text-sm leading-relaxed mb-5"> <p className="text-slate-400 text-xs sm:text-sm leading-relaxed mb-5">
Buying or repurposing hardware is simple once you isolate your goals. Modern large models scale entirely based on **Memory Bandwidth** rather than CPU cores. Select your options below to see your optimal setup plan: Buying or repurposing hardware is simple once you isolate your goals. Modern large models scale entirely based on **Memory Bandwidth** rather than CPU cores.
</p> </p>
<div className="mb-4"> <div className="mb-4">
@@ -130,13 +130,13 @@ export default function Slide7BuyersGuide({
</div> </div>
</div> </div>
<div className="bg-rose-950/15 border border-rose-900/25 p-4 rounded-lg text-slate-350 font-sans text-[11px] leading-relaxed flex gap-3"> {/* <div className="bg-rose-950/15 border border-rose-900/25 p-4 rounded-lg text-slate-350 font-sans text-[11px] leading-relaxed flex gap-3">
<AlertTriangle className="w-5 h-5 text-rose-500 shrink-0 animate-pulse" /> <AlertTriangle className="w-5 h-5 text-rose-500 shrink-0 animate-pulse" />
<div> <div>
<span className="font-mono text-[9.5px] font-bold text-rose-400 tracking-wider block uppercase mb-1">// CRITICAL BUYER SHIELD PROTOCOL:</span> <span className="font-mono text-[9.5px] font-bold text-rose-400 tracking-wider block uppercase mb-1">// CRITICAL BUYER SHIELD PROTOCOL:</span>
Do NOT buy multiple CPU-core servers expecting quick inference speeds. LLM read-phases are bound strictly by **Memory Bandwidth**. Prefer Apple Silicon (Unified Memory bus width &gt; 300GB/s) or discrete Nvidia RTX Series GPUs. CPU-only rendering will result in a 5x to 10x speed penalty. Do NOT buy multiple CPU-core servers expecting quick inference speeds. LLM read-phases are bound strictly by **Memory Bandwidth**. Prefer Apple Silicon (Unified Memory bus width &gt; 300GB/s) or discrete Nvidia RTX Series GPUs. CPU-only rendering will result in a 5x to 10x speed penalty.
</div> </div>
</div> </div> */}
</div> </div>
<div className="lg:col-span-7 flex flex-col w-full font-sans"> <div className="lg:col-span-7 flex flex-col w-full font-sans">
@@ -20,7 +20,7 @@ export default function Slide8ROI({ selectedGoal, procureBudget, showToast }: Sl
const goalCostMap: Record<GoalType, number> = { writing: 0, rag: 1500, agents: 3500 }; const goalCostMap: Record<GoalType, number> = { writing: 0, rag: 1500, agents: 3500 };
const targetCost = goalCostMap[selectedGoal] ?? 3500; const targetCost = goalCostMap[selectedGoal] ?? 3500;
setSetupCosts(targetCost); setSetupCosts(targetCost);
showToast(`Applied ${selectedGoal.toUpperCase()} goal recommendation: $${targetCost.toLocaleString()}`); // showToast(`Applied ${selectedGoal.toUpperCase()} goal recommendation: $${targetCost.toLocaleString()}`);
}; };
const handleBudgetCostApply = () => { const handleBudgetCostApply = () => {
@@ -28,7 +28,7 @@ export default function Slide8ROI({ selectedGoal, procureBudget, showToast }: Sl
const bgtCostMap: Record<BudgetType, number> = { existing: 0, budget: 1500, pro: 3500, enterprise: 12500 }; const bgtCostMap: Record<BudgetType, number> = { existing: 0, budget: 1500, pro: 3500, enterprise: 12500 };
const targetCost = bgtCostMap[procureBudget] ?? 1500; const targetCost = bgtCostMap[procureBudget] ?? 1500;
setSetupCosts(targetCost); setSetupCosts(targetCost);
showToast(`Applied ${procureBudget.toUpperCase()} specification plan: $${targetCost.toLocaleString()}`); // showToast(`Applied ${procureBudget.toUpperCase()} specification plan: $${targetCost.toLocaleString()}`);
}; };
const cloudMonthlyCost = employees * monthlySaaS; const cloudMonthlyCost = employees * monthlySaaS;
@@ -106,9 +106,9 @@ export default function Slide8ROI({ selectedGoal, procureBudget, showToast }: Sl
</div> </div>
<input <input
type="range" type="range"
min="10" min="1"
max="500" max="500"
step="10" step="1"
value={employees} value={employees}
onChange={(e) => { handleElementClick(); setEmployees(Number(e.target.value)); }} onChange={(e) => { handleElementClick(); setEmployees(Number(e.target.value)); }}
className="w-full h-1 bg-slate-900 rounded-lg appearance-none cursor-pointer accent-emerald-500" className="w-full h-1 bg-slate-900 rounded-lg appearance-none cursor-pointer accent-emerald-500"
@@ -123,7 +123,7 @@ export default function Slide8ROI({ selectedGoal, procureBudget, showToast }: Sl
<input <input
type="range" type="range"
min="10" min="10"
max="100" max="1000"
step="5" step="5"
value={monthlySaaS} value={monthlySaaS}
onChange={(e) => { handleElementClick(); setMonthlySaaS(Number(e.target.value)); }} onChange={(e) => { handleElementClick(); setMonthlySaaS(Number(e.target.value)); }}