skills/expungement-site-operations/SKILL.md
Operationalizing an expungement website — user intake flows, document generation pipelines, court filing integrations, payment processing, state-by-state workflow variations, customer support for sensitive populations, and the handoff between automated systems and human legal review. Activate on 'expungement operations', 'legal tech SaaS', 'court filing integration', 'document automation pipeline', 'expungement business', 'legal service workflow', 'multi-state legal operations'. NOT for expungement law itself (use national-expungement-expert), web design (use legal-tech-web-design), or legal document drafting (use recovery-app-legal-terms).
npx skillsauth add curiositech/windags-skills expungement-site-operationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Building and operating the full tech stack for legal services that help people clear criminal records — from user intake through petition filing and record verification.
Volume < 100 petitions/month: → If budget < $500/mo AND team has no dev capacity: Use Afterpattern ($79-299/mo) → If budget < $1000/mo AND need court form templates: Use Gavel ($99-399/mo) → If nonprofit/legal aid: Use Afterpattern with nonprofit discount
Volume 100-500 petitions/month: → If < 5 states AND simple forms: Use Gavel with custom integrations → If > 5 states OR complex logic needed: Build custom PDF generation → If enterprise compliance required: Use HotDocs with API integration
Volume > 500 petitions/month: → Always build custom document generation pipeline → If scaling rapidly: Hybrid approach (Gavel for complex states, custom for simple)
Auto-approve if: → Payment amount < $300 AND known device fingerprint AND US billing address
Flag for review if: → Payment > $1000 OR international card OR VPN detected OR velocity > 3 payments/hour
Auto-decline if: → Card from blocked BIN list OR billing zip mismatch > 200 miles from IP OR previous chargeback
Escalate to attorney if: → User claims identity theft on own record OR payment disputes eligibility determination
Auto-assign based on: → If CA case: Assign to CA-barred attorney with lowest current caseload → If felony OR multi-count: Assign to senior attorney (2+ years expungement experience) → If standard misdemeanor: Round-robin to any licensed attorney in that state → If holiday/weekend: Queue for next business day unless expedite fee paid
Tier 1 (Launch immediately): → If Clean Slate law exists AND e-filing available AND > 100k criminal records: Launch within 90 days → Examples: PA, NJ, MI, CT
Tier 2 (Launch within 6 months): → If large population AND straightforward petition process: CA, TX, FL, NY → Skip if no e-filing AND county-by-county variations > 50 different form sets
Tier 3 (Launch only if strategic): → Small states with simple processes for market completeness → Complex states only if revenue potential > $100k annually
Symptoms: Intake form has > 40 fields, completion rate < 60%, users abandoning mid-flow Detection Rule: If form completion time > 15 minutes OR completion rate drops below 70% Fix: Split intake into progressive disclosure: basic info → eligibility check → detailed info only if eligible
Symptoms: Attorney review SLA always met but filing rejection rate > 5% Detection Rule: If average review time < 3 minutes per case AND rejection rate increasing Fix: Implement spot-check quality audits, add complexity-based time minimums, retrain attorneys
Symptoms: 40%+ of payment plan users default after first payment Detection Rule: If payment plan default rate > 25% within first 60 days Fix: Require income verification, lower payment amounts, add SMS payment reminders
Symptoms: Eligible users getting denied, ineligible users getting through, form rejections increasing Detection Rule: If eligibility accuracy drops below 95% OR form acceptance rate below 97% Fix: Quarterly rule audits, automated form validation, state law change monitoring
Symptoms: Users reporting records still showing up 6+ months after court order Detection Rule: If post-order clearance rate < 80% at 90 days Fix: Automated dispute letter generation, partnership with background check companies, proactive monitoring
User Input:
Eligibility Engine Decision:
Check CA PC 1203.4 requirements:
- Probation completed? YES (2021-06-01)
- State prison sentence? NO (probation only)
- Current charges pending? NO
- Sex offense under PC 290? NO
Result: ELIGIBLE for PC 1203.4 expungement
Document Generation Flow:
Attorney Review (3 minutes):
Filing & Outcome:
What novice would miss: Checking if case was originally a felony reduced to misdemeanor (different form required) What expert catches: Verifies disposition code to ensure it was straight misdemeanor, not reduced felony
User Input:
Decision Tree Navigation:
Check PA Clean Slate coverage:
- Possession charge: Auto-sealed (no action needed)
- DUI: Vehicle code violation (ineligible for expungement)
- Retail Theft: Grade M2, 5+ years old, petition-eligible
Result: Explain Clean Slate coverage, offer petition for retail theft only,
clarify DUI cannot be sealed
Trade-off Analysis:
Attorney Review Decision:
Outcome: User proceeds understanding limitations, saves money vs. paying for impossible DUI petition
User Input:
Initial Error Path:
Error Detection:
Recovery Decision Matrix:
If user wants refund: Full refund, explain difference
If user wants to proceed:
- Convert to nondisclosure petition
- Price adjustment ($799 to $599)
- Credit difference to user account
If user wants both services:
- Nondisclosure now, expungement later if re-arrested
- Explain 2-step process, timeline
Prevention Implementation:
Pre-Filing Validation Checklist:
Document Accuracy Acceptance Criteria:
Payment Processing Validation:
Do NOT use this skill for:
Expungement Law Research → Use national-expungement-expert instead
Website UI/UX Design → Use legal-tech-web-design instead
Legal Document Drafting → Use recovery-app-legal-terms instead
Payment Gateway Technical Implementation → Use saas-architect instead
Attorney Hiring and Management → Use remote-legal-hiring instead
General SaaS Operations → Use saas-architect instead
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.