import Link from "next/link"; import { Bell, Bookmark, Calendar, Clock, FileText, Filter, Heart, HelpCircle, Rss, Shield, Share2, Zap, } from "lucide-react"; function Section({ id, title, icon: Icon, children }: { id: string; title: string; icon: React.ElementType; children: React.ReactNode; }) { return (

{title}

{children}
); } function Item({ icon: Icon, color, title, children }: { icon: React.ElementType; color: string; title: string; children: React.ReactNode; }) { return (

{title}

{children}

); } export default function HowItWorksPage() { return (

How it works

A quick guide to PocketVeto's features.

{/* Jump links */}
{[ { href: "#follow", label: "Following" }, { href: "#collections", label: "Collections" }, { href: "#notifications", label: "Notifications" }, { href: "#briefs", label: "AI Briefs" }, { href: "#bills", label: "Bills" }, ].map(({ href, label }) => ( {label} ))}
{/* Following */}

Follow any bill to track it. PocketVeto checks for changes and notifies you through your configured channels. Three modes let you tune the signal to your interest level — each with its own independent set of alert filters.

The standard mode. Default alerts: new bill text, amendments filed, chamber votes, presidential action, and committee reports. For bills you oppose and only want to hear about if they gain real traction. Default alerts: chamber votes and presidential action only — no noise from early committee or document activity. For bills you actively support. Default alerts: everything — new text, amendments, votes, presidential action, committee reports, calendar placement, procedural moves, and committee referrals. Also adds “Find Your Rep” action buttons to push notifications.

Adjusting alert filters

The defaults above are starting points. In{" "} Notifications → Alert Filters, each mode has its own tab with eight independently toggleable alert types. For example, a Follow bill where you don't care about committee reports — uncheck it and only that mode is affected. Hit Load defaults on any tab to revert to the preset above.

You can also follow members (alerts when they sponsor new bills) and{" "} topics (alerts when new bills matching that topic are briefed). Member and topic follows use the Follow mode filters.

{/* Collections */}

A collection is a named, curated group of bills — like a playlist for legislation. Use collections to track a policy area, build a watchlist for an advocacy campaign, or share research with colleagues.

Give it a name (e.g. “Healthcare Watch”) and add bills from any bill detail page using the bookmark icon next to the Follow button. Every collection has a unique share link. Anyone with the link can view the collection — no account required. The link works whether the collection is public or private.

Public vs. private: Both have share links. Marking a collection public signals it may appear in a future public directory; private collections are invisible to anyone without your link.

{/* Notifications */}

PocketVeto delivers alerts through two independent channels — use either or both.

ntfy {" "}is a free, open-source push notification service. Configure a topic URL in{" "} Notifications{" "} and receive real-time alerts on any device with the ntfy app. Pause push notifications during set hours (e.g. 10 PM – 8 AM). Events that arrive during quiet hours are queued and sent as a batch when the window ends. Instead of one push per event, receive a single bundled summary on a daily or weekly schedule. Your RSS feed is always real-time regardless of this setting. A private, tokenized RSS feed of all your bill alerts. Subscribe in any RSS reader (Feedly, NetNewsWire, etc.). Completely independent of ntfy.
{/* AI Briefs */}

For bills with published official text, PocketVeto generates a plain-English AI brief.

A plain-English summary, key policy points with references to specific bill sections (§ chips), and a risks section that flags potential unintended consequences or contested provisions. Click the share icon in the brief panel to copy a public link. Anyone can read the brief at that URL — no login required. Use the Draft Letter panel (below the brief) to generate a personalised letter to your representative based on the brief's key points.

Briefs are only generated for bills where GovInfo has published official text. Bills without text show a “No text” badge on their card.

{/* Bills */}

The Bills page lists all tracked legislation. Use the filters to narrow your search.

Search — matches bill ID, title, and short title.

Chamber — House or Senate.

Topic — AI-tagged policy area (healthcare, defense, etc.).

Has text — show only bills with published official text available for AI briefing.

Clicking a topic tag on any bill or following page takes you directly to that filtered view on the Bills page.

); }