// Product screenshot mocks — rendered as compact SVG/HTML so source stripes remain crisp. function BrowserChrome({ url = 'attorneys.immihub.com/dashboard', children, style }) { return (
{['#FF5F57','#FEBC2E','#28C840'].map(c => ( ))}
{url}
{children}
); } function AppSidebar({ active }) { const items = [ ['Dashboard', 'dash'], ['Cases', 'kanban'], ['Inbox', 'inbox'], ['Documents', 'file'], ['Calendar', 'clock'], ['Clients', 'users'], ['Billing', 'scale'], ['Settings', 'lock'], ]; return (
Attorney
{items.map(([label, icon]) => { const isActive = active === label; return (
{label}
); })}
Hernandez & Co.
Boutique tier
); } /* ============= DASHBOARD SHOT ============= */ function DashboardShot() { const kpis = [ { label: 'Active matters', n: '37', sub: '+4 this month' }, { label: 'RFE deadlines', n: '3', sub: '≤ 21 days', tone: 'red' }, { label: 'Unbilled time', n: '$28.4k', sub: 'across 19 matters' }, { label: 'Trust balance', n: '$412k', sub: 'IOLTA segregated' }, ]; const incoming = [ { src: 'employer', actor: 'Aperture Systems', act: 'shared signed I-129 + LCA', doc: 'Hassan · H-1B extension', t: '12m' }, { src: 'consumer', actor: 'Omar Hassan', act: 'uploaded passport + I-94', doc: 'Hassan · H-1B extension', t: '34m' }, { src: 'dso', actor: 'Stanford ISSS', act: 'shared CPT authorization', doc: 'Mehta · F-1 CPT', t: '1h' }, { src: 'uscis', actor: 'USCIS', act: 'forwarded RFE notice', doc: 'EAC-24-189-45201', t: '2h' }, { src: 'employer', actor: 'Grafton Capital', act: 'shared org chart + worksite', doc: 'Mehta · F-1 CPT', t: '3h' }, ]; return (
Good morning, Maria
Tuesday, April 21 · 3 things need you today
⌘K Search
+ New matter
{/* KPI row */}
{kpis.map(k => (
{k.label}
{k.n}
{k.sub}
))}
{/* Incoming + Today grid */}
ImmiHub Incoming
Auto-organized documents from connected counterparties
Live
{incoming.map((it, i) => (
{it.actor} {it.act}
{it.doc}
{it.t}
))}
What needs you
{[ { t: 'Hassan RFE · 21 days', sub: 'Omar Hassan · H-1B', tone: 'red' }, { t: 'Premium processing · 11 days', sub: 'Varma · I-129', tone: 'amber' }, { t: 'Conflict review pending', sub: 'Park intake', tone: 'amber' }, ].map((x, i) => (
{x.t}
{x.sub}
))}
Today · Apr 21
{[ { t: '10:30', label: 'Intake · Daniel Park', type: 'Initial consult' }, { t: '14:00', label: 'Prep · Li Chen I-485 interview', type: 'Case review' }, ].map((x, i) => (
{x.t}
{x.label}
{x.type}
))}
); } /* ============= RFE WORKSPACE SHOT ============= */ function RfeShot() { const reqs = [ { n: '1', t: 'Beneficiary\u2019s educational credentials', done: true }, { n: '2', t: 'Detailed position description', done: true }, { n: '3', t: 'Specialty occupation evidence', done: false, cur: true }, { n: '4', t: 'Employer-employee relationship', done: false }, ]; const evidence = [ { src: 'employer', t: 'Signed I-129 petition', d: 'Aperture Systems · Apr 3' }, { src: 'employer', t: 'Labor Condition Application', d: 'LCA I-200-24103 · certified' }, { src: 'consumer', t: 'Master\u2019s diploma + transcripts', d: 'Omar Hassan · uploaded' }, { src: 'consumer', t: 'Passport + I-94', d: 'Omar Hassan · uploaded' }, { src: 'attorney', t: 'Position description memo', d: 'Maria H. · draft', priv: true }, { src: 'employer', t: 'Org chart · Engineering', d: 'Aperture HR · Apr 5' }, ]; return (
{/* header */}
Cases · Hassan, Omar
RFE response · H-1B specialty occupation
21 days
EAC-24-189-45201
Assemble packet
{/* left — requests */}
USCIS requests (4)
{reqs.map(r => (
{r.done ? '✓' : r.n} {r.t}
))}
{/* center — quoted text + draft */}
USCIS quoted text
"The record does not establish that the proffered position qualifies as a specialty occupation within the meaning of section 214(i)(1) of the Act. Submit additional evidence..."
Draft response
The proffered position, Senior Machine Learning Engineer, satisfies the specialty occupation criteria under 8 C.F.R. § 214.2(h)(4)(iii)(A). The position requires the theoretical and practical application of a body of highly specialized knowledge [cite Dhanasar, position description], and a bachelor's degree or higher in a directly related field is a normal minimum requirement for entry into the occupation...
Attach evidence →
Insert template
{/* right — evidence locker */}
Evidence locker
{evidence.map((e, i) => (
{e.t} {e.priv && Privileged}
{e.d}
))}
5 of 6 exhibits arrived pre-organized from connected counterparties.
); } /* ============= CASES KANBAN SHOT ============= */ function CasesShot() { const cols = [ { t: 'Inquiry', n: 3, cards: [ { src: 'consumer', who: 'D. Park', visa: 'O-1 inquiry', by: 'MH' }, ]}, { t: 'Consultation', n: 2, cards: [ { src: 'consumer', who: 'A. Varma', visa: 'EB-2 NIW', by: 'JR' }, ]}, { t: 'Retained', n: 5, cards: [ { src: 'employer', who: 'Aperture · Chen', visa: 'H-1B transfer', by: 'MH', pri: 'high' }, { src: 'dso', who: 'R. Mehta', visa: 'F-1 CPT', by: 'JR' }, ]}, { t: 'Prep', n: 7, cards: [ { src: 'employer', who: 'Aperture · Singh', visa: 'I-140 EB-2', by: 'MH' }, ]}, { t: 'Filed', n: 9, cards: [ { src: 'consumer', who: 'L. Chen', visa: 'I-485 AOS', by: 'JR', rcpt: 'MSC-25-104-88210' }, ]}, { t: 'RFE', n: 3, cards: [ { src: 'employer', who: 'Aperture · Hassan', visa: 'H-1B ext', by: 'MH', pri: 'critical', rcpt: 'EAC-24-189-45201' }, ]}, ]; return (
Cases
37 active · 8 stages
Kanban Table
{/* filter bar */}
{['All attorneys', 'All stages', 'All priorities', 'Source: any', 'Visa type: any'].map(f => (
{f} ▾
))}
{cols.map(c => (
{c.t}
{c.n}
{c.cards.map((card, i) => (
{card.who}
{card.visa}
{card.rcpt &&
{card.rcpt}
}
{card.pri && {card.pri}} {card.by}
))} {c.cards.length === 0 && (
)}
))}
); } /* ============= INBOX (USCIS forwarding) SHOT ============= */ function InboxShot() { const notices = [ { subj: 'Request for Evidence', rcpt: 'EAC-24-189-45201', match: 'Hassan · H-1B ext', conf: 98, cur: true }, { subj: 'I-797 Notice of Action', rcpt: 'LIN-25-077-12089', match: 'Singh · I-140', conf: 96 }, { subj: 'Biometrics appointment', rcpt: 'MSC-25-104-88210', match: 'Chen · I-485', conf: 94 }, { subj: 'Fee-related · no receipt', rcpt: '—', match: 'Unmatched', conf: 0 }, { subj: 'NOID · moral turpitude', rcpt: 'SRC-26-118-00491', match: 'No active matter', conf: 0 }, ]; return (
USCIS inbox
Forward notices to casebox@hco-immigration.immihub.com — receipt numbers auto-route to the matching case.
{notices.map((n, i) => (
{n.subj}
{n.rcpt}
{n.conf === 0 ? Unmatched : 95 ? 'green' : 'amber'} small>{n.conf}% match · {n.match}}
))}
Notice detail
Request for Evidence · I-129
EAC-24-189-45201 · Vermont Service Center
Extracted receipt number matched to Hassan · H-1B extension at 98% confidence. Deadline computed from notice date: May 12, 2026 (87-day rule).
Accept match
Reassign
Create new matter
); } Object.assign(window, { BrowserChrome, AppSidebar, DashboardShot, RfeShot, CasesShot, InboxShot });