FairRelay / landing /src /components /HowItWorks.tsx
MouleeswaranM's picture
feat: Update HowItWorks to show 5-agent consolidation pipeline flow"
2b0734a verified
raw
history blame
3.53 kB
import './HowItWorks.css'
const steps = [
{
step: '01',
title: 'Geographic Clustering Agent',
desc: 'scikit-learn KMeans clusters shipments by pickup/drop proximity (4D feature vectors). Silhouette-score selects optimal K. Groups nearby shipments heading the same direction.',
code: 'Agent 1: GeoClusteringAgent\n→ KMeans + Silhouette Score\n→ 15 shipments → 4 clusters',
color: '#f97316',
},
{
step: '02',
title: 'Time Window Compatibility Agent',
desc: 'Filters clusters by delivery time window overlap. Splits groups where shipments have incompatible schedules. Configurable tolerance (default: 120 min).',
code: 'Agent 2: TimeWindowAgent\n→ Temporal overlap filter\n→ 4 clusters → 5 time-valid groups',
color: '#3b82f6',
},
{
step: '03',
title: 'Capacity Optimization Agent',
desc: 'OR-Tools CP-SAT integer programming solver assigns shipments to trucks. Minimizes vehicles used while respecting weight + volume constraints. FFD heuristic fallback.',
code: 'Agent 3: CapacityOptimizationAgent\n→ OR-Tools CP-SAT solver (3s limit)\n→ 5 groups → 3 packed trucks',
color: '#10b981',
},
{
step: '04',
title: 'Scoring & Confidence Agent',
desc: 'Computes per-group AI confidence (capacity fit × geo proximity × time alignment). Calculates global metrics: utilization%, trips reduced, CO₂ saved, cost saved.',
code: 'Agent 4: ScoringConfidenceAgent\n→ Confidence: 78-95%\n→ Utilization: 27% → 82%',
color: '#f59e0b',
},
{
step: '05',
title: 'Continuous Learning Agent',
desc: 'Q-learning RL agent records (state, action, reward) per run. Builds Q-table over time to recommend optimal (radius, tolerance) parameters. Self-improves with every execution.',
code: 'Agent 5: RL Q-Learning\n→ Episodes: 47 | Reward: 73.2/100\n→ Optimal: radius=30km, tol=120min',
color: '#ec4899',
},
]
export default function HowItWorks() {
return (
<section className="hiw" id="how-it-works">
<div className="container">
<div className="section-header">
<div className="tag">5-Agent Pipeline</div>
<h2 className="section-title">How the AI Consolidation Engine works</h2>
<p className="section-sub">
5 specialized AI agents orchestrated by LangGraph — each handles one aspect of the
consolidation problem, collaborating to maximize vehicle utilization.
</p>
</div>
<div className="hiw__steps">
{steps.map((s, i) => (
<div key={s.step} className="hiw__step">
<div className="hiw__step-num" style={{ color: s.color, borderColor: s.color + '33', background: s.color + '0d' }}>
{s.step}
</div>
{i < steps.length - 1 && (
<div className="hiw__connector">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M5 12h14M13 6l6 6-6 6" stroke={s.color} strokeWidth="1.5" strokeLinecap="round"/>
</svg>
</div>
)}
<div className="hiw__step-content">
<h3 className="hiw__step-title">{s.title}</h3>
<p className="hiw__step-desc">{s.desc}</p>
<div className="hiw__step-code">
<pre><code>{s.code}</code></pre>
</div>
</div>
</div>
))}
</div>
</div>
</section>
)
}