// os-sections.jsx — "Why an OS" diagram, OS connection flow, investor CTA, footer // Depends on IM, AUDIENCES from components.jsx // ---------- Why an OS, not four apps ---------- function WhyOS() { return (
The network effect

Why an OS, not four apps.

Today, an H-1B approval notice lives in a scanned email, a spreadsheet, an HR platform and an attorney's dropbox — four copies, four versions of the truth. ImmiHub replaces them with one.

); } function ValueProp({ n, title, body }) { return (
{n}
{title}
{body}
); } // The diagram — four surfaces feeding a shared identity + document layer function OSFlowDiagram() { const [hoverIdx, setHoverIdx] = React.useState(null); return (
{/* Top: four surfaces */}
{AUDIENCES.map((a, i) => { const hover = hoverIdx === i; return (
setHoverIdx(i)} onMouseLeave={() => setHoverIdx(null)} style={{ background: '#fff', border: `1px solid ${hover ? a.accent : IM.mist}`, borderRadius: 14, padding: 18, boxShadow: hover ? '0 8px 24px rgba(26,35,50,0.08), 0 2px 4px rgba(26,35,50,0.04)' : '0 1px 3px rgba(26,35,50,0.05)', transition: 'all 200ms cubic-bezier(0.2,0.8,0.2,1)', cursor: 'default', }} >
{a.navLabel}
); })}
{/* Connecting arrows */} {[137.5, 412.5, 687.5, 962.5].map((x, i) => ( ))} {/* Shared layer */}
The ImmiHub OS layer
One identity. One document vault. One case timeline.
{['Identity', 'Documents', 'Timeline', 'Notifications', 'Audit log'].map(p => ( {p} ))}
); } function MiniRow({ label, value, accent, warn }) { return (
{label} {value}
); } // ---------- How the OS connects — narrative walkthrough ---------- function HowItConnects() { const [step, setStep] = React.useState(0); React.useEffect(() => { const t = setInterval(() => setStep(s => (s + 1) % 4), 4500); return () => clearInterval(t); }, []); const steps = [ { title: 'Priya updates her I-797 in the ImmiHub app', who: 'Immigrant', accent: IM.blue, surfaces: { immigrant: 'active', employer: 'idle', university: 'idle', attorney: 'idle' }, detail: 'Valid through March 12, 2028 — extension approved.', }, { title: 'Her employer\'s compliance roster updates in real time', who: 'Employer', accent: '#7A6BE8', surfaces: { immigrant: 'sent', employer: 'active', university: 'idle', attorney: 'idle' }, detail: 'HR closes the amendment task — no follow-up email.', }, { title: 'If she enrolls in a program, her DSO sees it next', who: 'University', accent: '#E8843C', surfaces: { immigrant: 'sent', employer: 'sent', university: 'active', attorney: 'idle' }, detail: 'SEVIS status synced with the same source document.', }, { title: 'Her attorney files the next petition, pre-organized', who: 'Attorney', accent: IM.blueDeep, surfaces: { immigrant: 'sent', employer: 'sent', university: 'sent', attorney: 'active' }, detail: 'Evidence binder assembled from the shared vault.', }, ]; const cur = steps[step]; return (
How the OS connects

One source of truth, routed to where it matters.

A single action by an immigrant ripples through the surfaces that need it — never to the ones that don't. Permissions are granular, auditable and revocable.

{steps.map((s, i) => ( ))}
); } function FlowVisual({ cur }) { // Four surface tiles arranged in a 2x2, with the shared vault in the middle. const surfaces = [ { id: 'immigrant', label: 'Immigrant', accent: IM.blue, pos: 'tl' }, { id: 'employer', label: 'Employer', accent: '#7A6BE8', pos: 'tr' }, { id: 'university', label: 'University', accent: '#E8843C', pos: 'bl' }, { id: 'attorney', label: 'Attorney', accent: IM.blueDeep, pos: 'br' }, ]; return (
{/* Central shared vault */}
Shared vault
I-797 · Priya S.
Updated just now
Valid · ext. approved
{/* Flow lines */} {surfaces.map(s => { const state = cur.surfaces[s.id]; const start = s.pos === 'tl' ? [90, 60] : s.pos === 'tr' ? [410, 60] : s.pos === 'bl' ? [90, 356] : [410, 356]; const end = [250, 208]; const strokeColor = state === 'active' ? s.accent : state === 'sent' ? s.accent : IM.mist; const strokeOpacity = state === 'idle' ? 0.5 : 1; return ( ); })} {/* Four tiles */} {surfaces.map(s => { const state = cur.surfaces[s.id]; const isActive = state === 'active'; const isSent = state === 'sent'; return (
{s.label}
{isActive ? 'Syncing…' : isSent ? 'Up to date' : 'Connected'}
); })} {/* Detail caption */}
{cur.detail}
); } // ---------- Investor CTA ---------- function InvestorCTA() { const [email, setEmail] = React.useState(''); const [firm, setFirm] = React.useState(''); const [sent, setSent] = React.useState(false); function submit(e) { e.preventDefault(); if (!email) return; setSent(true); } return (
{/* subtle pattern */}
Seed round · $6M target · open

Want the full thesis?

Request our investor deck for market sizing, unit economics, the four-surface go-to-market, and why the immigration graph is a defensible moat.

· 18-slide deck · Unit economics model · Customer letters of intent
{!sent ? ( <>
Request investor deck
) : (
On its way.
We'll send the deck to {email} within the hour.
)}
); } function InvestorInput({ placeholder, value, onChange, type = 'text' }) { return ( onChange(e.target.value)} placeholder={placeholder} style={{ width: '100%', boxSizing: 'border-box', background: 'rgba(255,255,255,0.08)', border: '1px solid rgba(255,255,255,0.18)', borderRadius: 10, padding: '12px 14px', fontSize: 14, color: '#fff', fontFamily: 'inherit', marginBottom: 10, outline: 'none', }} onFocus={e => { e.target.style.borderColor = IM.blue; e.target.style.background = 'rgba(255,255,255,0.12)'; }} onBlur={e => { e.target.style.borderColor = 'rgba(255,255,255,0.18)'; e.target.style.background = 'rgba(255,255,255,0.08)'; }} /> ); } // ---------- Footer ---------- function Footer() { return ( ); } function FooterCol({ title, links }) { return (
{title}
{links.map(l => ( {l.label} ))}
); } Object.assign(window, { WhyOS, OSFlowDiagram, HowItConnects, InvestorCTA, Footer, ValueProp, MiniRow, FlowVisual, InvestorInput, FooterCol, });