import React, { useState, useEffect } from 'react'; import * as API from '../api.js'; export default function DineoutSniperView({ onBack }) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [mode, setMode] = useState('sniper'); // 'sniper' or 'grid' useEffect(() => { API.fetchDineoutSniper().then((res) => { if (res && res.venues) setData(res); setLoading(false); }); }, []); return (
{/* Top Header */}
MODULE 4 • DINEOUT SLOT SNIPER

Dineout Slot Sniper Scored.

{/* Industry Differentiation Showcase Card */}
HYPERFLOW ARCHITECTURAL DIFFERENTIATION DYNAMIC SLOT PRESSURE SCORING

Dynamic Slot Pressure Velocity vs Static Booking Grids

Standard booking apps show unranked, static availability grids. HyperFlow evaluates real-time dining velocity (rating, peak hours, weekend factors) to score slot pressure and estimate exact fill time in minutes.

{loading ? (
Fetching Dineout slot predictions...
) : (
{(data?.venues || []).map((venue, i) => (

{venue.venue_name}

RATING: {venue.rating}

{venue.cuisine}

{mode === 'sniper' ? 'SNIPED SLOT VELOCITY:' : 'STATIC AVAILABLE TIMES:'} {venue.slots?.map((s, idx) => (
{s.time_slot} {mode === 'sniper' ? (

Fills in ~{s.estimated_minutes_to_full}m

Demand: {s.demand_score}
) : ( Available )}
))}
))}
)}
); }