Loading...
Loading...
Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape. Activate on "find expungement data", "scrape state laws", "legal research", "court URLs", "statute sources", "Clean Slate laws", "automatic expungement research". NOT for interpreting laws (use national-expungement-expert), building UI, or legal advice.
npx skill4agent add erichowens/some_claude_skills 2026-legal-research-agentnational-expungement-expertTier 1 (Primary Authority):
├── State Legislature websites (statute text)
├── State Court Administrative Office
└── State Attorney General publications
Tier 2 (Official Secondary):
├── State Bar Association guides
├── Court self-help centers
└── Public law databases (public.law, justia.com)
Tier 3 (Tertiary but Valuable):
├── Legal aid organizations (LSC grantees)
├── Law school clinics
└── Reentry organizations (CCRC, NACDL)
Tier 4 (Verification Only):
├── Commercial legal databases
├── News articles about law changes
└── Attorney blog postscourts.{state}.govlegislature.{state}.govCalifornia: courts.ca.gov/selfhelp-expungement.htm
Oregon: courts.oregon.gov/programs/exp/Pages/default.aspx
Washington: courts.wa.gov/forms/?fa=forms.contribute&formID=101Texas: txcourts.gov (forms) + texas.public.law (statutes)
New York: nycourts.gov (forms) + nysenate.gov/legislation/laws (statutes)
Florida: flcourts.gov (forms) + leg.state.fl.us/statutes (statutes)oregon.public.law, california.public.law, texas.public.law
michigan.public.law, washington.public.lawapps.leg.wa.gov/RCW/leg.wa.gov// For statute pages, extract:
{
statuteCitation: "string", // e.g., "ORS 137.225"
title: "string", // e.g., "Setting aside conviction"
fullText: "string", // Complete statute text
effectiveDate: "string", // When current version took effect
lastAmended: "string", // Most recent amendment date
subsections: "array", // Parsed subsections
}
// For court self-help pages, extract:
{
stateName: "string",
expungementPageUrl: "string",
formsLibraryUrl: "string",
selfHelpUrl: "string",
contactPhone: "string",
feeScheduleUrl: "string",
}
// For forms, extract:
{
formNumber: "string", // e.g., "MC-440"
formTitle: "string",
pdfUrl: "string",
applicableTo: "array", // ["misdemeanor", "arrest"]
lastUpdated: "string",
}rateLimit: 2, // 2 requests/second max for .gov sites
timeout: 90000, // Government sites can be slow
maxRetries: 3, // Retry on timeout
waitFor: 3000, // Wait for JavaScript on modern court sitesonlyMainContent: trueonlyMainContent: false□ Statute citations match official format (e.g., "ORS" not "Or. Rev. Stat.")
□ Effective dates are parseable and reasonable (not future, not too old)
□ URLs are live and return 200 status
□ PDF form links actually download PDFs (not HTML error pages)
□ Phone numbers are in consistent format
□ Fee amounts are numeric and reasonable ($0-$500 typical range)
□ State code extracted correctly (watch for ambiguous URLs)# Check what we have
ls src/data/scraped/states/{state}/
# Expected files for complete coverage:
# - statutes.json (eligibility rules from statute text)
# - court-system.json (court URLs, contacts, forms links)
# - forms/ (actual PDF forms)
# - fees.json (filing fee amounts)
# - counties/ (county-specific court data)
# Cross-reference with state data file
grep -l "waitingPeriods\|eligibilityRules" src/data/states/{state}.ts❌ Scraping Wikipedia for statute text
✅ Scraping the state legislature's official code
❌ Using findlaw.com as primary source
✅ Using findlaw.com to find the citation, then scraping the official source
❌ Assuming "expungement" is the only term
✅ Searching for: expungement, sealing, set-aside, dismissal, destruction, pardons
❌ Treating waiting periods as simple numbers
✅ Capturing offense-specific waiting periods (felonies vs misdemeanors vs arrests)scripts/firecrawl/scripts/firecrawl/jobs.tsscripts/firecrawl/config.tssrc/data/scraped/states/{state}/src/data/states/# Set API key first
export FIRECRAWL_API_KEY=your_key
# Run P0 (state statutes + courts) - ~$0.20 cost
npx tsx scripts/firecrawl/run-p0.ts
# Dry run to preview
npx tsx scripts/firecrawl/run-p0.ts --dry-run
# Check reports
cat scripts/firecrawl/reports/p0-*.jsonFirecrawl scrape → src/data/scraped/{state}/*.json
↓
Manual review + cleanup
↓
Integrated into src/data/states/{state}.ts
↓
Used by eligibility wizard + PDF generatorreferences/url-patterns-by-state.mdclean-slate-timeline.mdfirecrawl-schemas.mdls src/data/scraped/states/ca/california.public.lawscripts/firecrawl/config.ts