Virginia Hospital Patient Lawsuits
Rubric
Kaiser Health News: Virginia Hospital Patient Lawsuits
Dataset given to agent: Virginia court civil case records (VirginiaCourtData.org), 2012–2018. Two case types:
- Circuit civil (7 annual CSV files, ~405K total rows, 32 columns): fips, Filed date, FilingType, FilingFeePaid, NumberofPlaintiffs/Defendants, CommencedBy, Bond, Judgment, FinalOrderDate, AppealedDate, ConcludedBy, Plaintiff/Defendant names (TradingAs) and attorneys (3 slots each), StateAgency, DivorceFilingType/DispositionType.
- District civil (14 CSV files across 7 yearly subdirectories, ~5.2M total rows, 45 columns): fips, FiledDate, CaseType, DebtType, Judgment/Costs/AttorneyFees/PrincipalAmount/OtherAmount/InterestAward, Possession, WritIssuedDate, HomesteadExemptionWaived, IsJudgmentSatisfied/DateSatisfactionFiled, OtherAwarded, FurtherCaseInformation, Garnishee/Address/GarnisheeAnswer/AnswerDate/NumberofChecksReceived, AppealDate/AppealedBy, WritofEvictionIssuedDate/WritofFieriFaciasIssuedDate/WritofEvictionExecutedDate, Plaintiff/Defendant DBATA + Address + Attorney (3 slots each).
Note: Files are anonymized ("anon" in filenames). Individual names are likely redacted, but institutional plaintiff names (e.g., hospital "Doing Business As" / "Trading As" entries) and attorney names may be preserved. The FIPS code for the Charlottesville/Albemarle area can serve as a geographic identifier for UVA-related cases. Hospital financial data (profitability, charity care) is not included in this dataset.
Lead A: A single institutional plaintiff filing an extraordinary volume of lawsuits
Aggregating cases by plaintiff name/DBATA (or by FIPS code for the Charlottesville area) should reveal one entity as a massive outlier in lawsuit volume.
- UVA Health System filed 36,000 lawsuits over six years (July 2012–June 2018) seeking more than $106 million
- Over 900 circuit court cases with more than $60 million in claims in Albemarle Circuit Court alone
- UVA sued approximately 6,000 patients per year
- UVA sued approximately 100 of its own employees every year
Lead B: Aggressive garnishment and collection activity visible in district court data
The district civil data's garnishment and writ fields should reveal systematic use of aggressive collection tools by the same high-volume plaintiff.
- UVA garnished more than 800 paychecks specifically from Walmart employees
- Garnishee field, NumberofChecksReceived, and WritofFieriFaciasIssuedDate fields should show concentrated collection activity
- UVA filed property liens across multiple jurisdictions (thousands over six years)
Lead C: Total dollar amounts sought reveal the scale of collections
- UVA sought more than $106 million across 36,000 lawsuits
- More than $60 million in circuit court claims alone
- UVA seized $22 million in state tax refunds from patients over six years
Lead D: A second Virginia hospital system shows a similar pattern
The same plaintiff-level analysis across the full statewide dataset should identify additional health systems with unusually high filing volumes.
- VCU Health's physician group filed more than 56,000 lawsuits for $81 million over seven years ending in 2018
- Pattern is not unique to UVA — statewide analysis should flag VCU as a comparable outlier
Annotated Tipsheet
Tipsheet: UVA Health's Aggressive Patient Debt Litigation Machine
Source Material
- Circuit court civil cases (2012–2018): 7 CSV files, 404,874 total rows. Contains plaintiff/defendant names, attorneys, filing types, judgment outcomes.
- District court civil cases (2012–2018): 23 CSV files across 7 year-directories, 5,172,251 total rows. Contains case types, dollar amounts (principal, costs, attorney fees), plaintiff/defendant names and addresses, garnishment details.
- Analysis date: March 2026
- Coverage: All files examined. UVA Health cases identified via plaintiff name matching across all name variants (over 30 distinct spellings found). FIPS code 3 (Albemarle County) confirmed as the primary filing jurisdiction.
- Limitations: Data is anonymized (no individual defendant names). Defendant addresses are present but without names, limiting individual case-tracing. Data ends in 2018. No information on the underlying medical services or patient demographics.
Summary of Findings
UVA Health was one of Virginia's most prolific medical debt litigants from 2011–2018, filing over 44,000 district court cases (including ~28,700 warrant-in-debt suits and ~15,700 garnishments) seeking approximately $40 million from patients. At its peak in 2012–2013, UVA's lawsuits constituted nearly 68% of all civil cases in the Albemarle County district court. The hospital sued patients for debts as small as $13.59, routinely garnished wages from low-wage workers at employers like Walmart and Food Lion, and even garnished its own employees' wages over 500 times. A dramatic near-total halt in new warrant-in-debt filings in 2015 — dropping from ~8,000/year to just 56 — followed by a partial resumption with added attorney fees, suggests a deliberate policy shift that warrants investigation.
Leads
Lead 1: UVA Health Dominated Its Local Court System
Signal strength: Strong
Evidence: In the Albemarle County General District Court (FIPS 3), UVA Health cases represented:
- 2012: 10,932 of 16,103 cases (67.9% of all civil filings)
- 2013: 11,660 of 17,713 (65.8%)
- 2014: 8,310 of 13,512 (61.5%)
- Even after declining, 2016–2018: 35–38% of all cases
This means the local district court was, for practical purposes, a debt collection arm for the university hospital. On any given court day, the overwhelming majority of cases on the docket were UVA suing a patient.
Baseline: Statewide, UVA represented ~1.2–1.5% of all district court cases (already making it the #3 overall plaintiff statewide, behind only MCV Associated Physicians and Grand Furniture Discount Stores). But the concentration in Albemarle County is extraordinary.
Potential significance: This raises questions about access to justice. Did defendants — many from small towns hours from Charlottesville — have meaningful ability to contest cases in a court overwhelmed with UVA filings? Were judges and clerks effectively processing UVA's collection pipeline? Were court resources diverted from other civil matters?
Next steps: Interview Albemarle County district court clerks, judges, and local attorneys about the caseload impact. Request docket data to determine whether UVA cases were batch-processed. Check if the court had special procedures for UVA cases.
Lead 2: UVA Sued Patients for Extremely Small Medical Debts
Signal strength: Strong
Evidence: UVA obtained judgments against patients for amounts as low as:
- $13.59 (2011, defendant in Henrico, VA)
- $13.91 (2013, Keswick, VA)
- $14.18 (2013, Waynesboro, VA)
- $18.99 (2011, Palmyra, VA)
- $20.00 (2011, Charlottesville)
In 2012–2013, approximately 32–33% of all UVA warrant-in-debt cases were for under $500. Even at 2012–2013 filing rates, this means UVA filed roughly 3,500 lawsuits per year over amounts under $500.
After the 2015 pause, the share of sub-$500 cases dropped sharply to under 2%, suggesting UVA may have adopted a minimum threshold when it resumed suing.
Baseline: The median UVA judgment was $1,022 (mean: $2,049). The overall statewide median for hospital debt cases varies by system but is generally in the $800–$2,000 range. UVA's sub-$100 filings are far below what most systems pursue.
Potential significance: Filing a lawsuit over $13.59 likely costs the court system and the defendant far more than the debt itself. This suggests an automated or indiscriminate collection process that treated all debts — regardless of size — as worth pursuing through the courts. The court filing fees alone likely exceed many of these amounts.
Next steps: Calculate the estimated court filing costs for these small-debt cases (Virginia district court filing fees were ~$40–65 in this period). Interview former UVA billing officials about minimum thresholds for litigation. Check whether patients were sent to collections before being sued.
Lead 3: UVA Garnished Its Own Employees' Wages
Signal strength: Strong
Evidence: Among the ~15,700 UVA garnishment cases, the hospital garnished wages from:
- UVA Medical Center (as employer/garnishee): 327 times
- Univ VA & Blue Ridge Hospital: 154 times
- UVA & Blue Ridge Hospital: 26 times
- UVA Darden School: 15 times
- UVA HealthSouth: 9 times
- UVA Health Services Foundation: 9+ times
- UVA Physicians Group: 4 times
- UVA Community Credit Union: 5 times
Combined, UVA garnished wages from its own institution and affiliates over 550 times. The university health system was simultaneously employer and debt collector — garnishing paychecks of its own workers to collect medical bills.
Baseline: Major employers in the area (County of Albemarle: 101, City of Charlottesville: 81) were also frequent garnishment targets, but none approaches the volume of UVA garnishing its own staff.
Potential significance: A public university hospital garnishing the wages of its own employees — many likely lower-paid workers (housekeeping, food service, nursing aides) who received care at their own workplace — is a powerful illustration of the medical debt cycle. These are people who help generate the hospital's revenue but can't afford its bills.
Next steps: Identify job categories of garnished UVA employees (not in this data but obtainable via FOIA for state employee records). Interview current/former UVA employees about the experience. Check UVA's employee health insurance benefits — were these employees insured through UVA or uninsured?
Lead 4: Garnishments Targeted Low-Wage Workers
Signal strength: Strong
Evidence: Top employers whose workers had wages garnished by UVA:
- Walmart: 539 garnishments (multiple name variants combined)
- UVA itself: 550+ (see Lead 3)
- Commonwealth of Virginia: 241
- Public Partnerships LLC (home health aide employer): 291 (two variants)
- Crothall Healthcare (hospital janitorial/support): 195
- County of Albemarle: 101
- Aramark (campus food service): 83
- Food Lion: 70
- Kroger: 68
- Target: 34
- Burgerbusters (fast food): 33
- USPS: 45
The top garnishment targets are overwhelmingly retail workers, food service workers, janitorial staff, home health aides, and government employees — low-to-moderate wage earners.
Baseline: These are the largest employers in the region, so some concentration is expected. But the dominance of retail and service-sector workers suggests UVA's debt collection machine was disproportionately falling on people least able to absorb the financial shock.
Potential significance: Garnishments can take up to 25% of disposable earnings in Virginia. For a Walmart or Food Lion worker earning $20,000–$30,000/year, losing a quarter of take-home pay can be catastrophic.
Next steps: Cross-reference with wage data for these employers. Calculate what 25% garnishment means for typical wages at these companies. Interview affected workers. Check Virginia garnishment exemption rules.
Lead 5: The Mysterious 2015 Pause — and What Changed When Filings Resumed
Signal strength: Strong
Evidence: Monthly data shows a dramatic pattern:
- Dec 2014: 335 cases (only 7 warrants, 327 garnishments — new warrants essentially stopped)
- Jan–Dec 2015: Only 56 warrant-in-debt cases filed ALL YEAR (vs ~8,000/year in 2012–2013). Garnishments continued at reduced levels.
- Apr 2016: Warrants resume at ~200/month, ramping up through the year
- 2016–2018: Stabilized at 1,700–2,700 warrants/year — roughly a third of pre-pause levels
Key change after resumption: Attorney fees appeared. Pre-2015 cases show $0 attorney fees. Post-2015 cases show fees of $3,600–$3,700 (approximately 15% of principal), substantially increasing the burden on defendants.
Also post-2015: the share of sub-$500 cases dropped from ~33% to under 2%, suggesting a minimum-amount threshold was adopted.
Baseline: No other major hospital system in the data shows a comparable pause. MCV/VCU Health, Inova, and Carilion all maintained relatively steady filing rates through 2015.
Potential significance: Something caused UVA to abruptly halt patient lawsuits for nearly a year. Possibilities include internal policy review, media scrutiny, legal challenge, new leadership, or regulatory pressure. The fact that filings resumed at a lower volume but with attorney fees and higher minimums suggests a deliberate strategic shift — not an operational glitch. This timeline deserves investigation.
Next steps: Search for any 2014–2015 news coverage of UVA debt collection practices. Check for changes in UVA Health leadership or board decisions in that period. FOIA internal UVA policies on patient debt collection and any policy changes. Check if Virginia enacted any hospital debt legislation in this period.
Lead 6: UVA Had the Highest Case Dismissal Rate Among Major Hospital Systems
Signal strength: Moderate
Evidence: Judgment outcomes for UVA vs. other systems (all years, warrant-in-debt only):
| System | Total Cases | Win Rate | Dismissal Rate |
|---|---|---|---|
| MCV/VCU Health | 57,655 | 88.8% | 5.3% |
| UVA Health | 28,700 | 67.4% | 22.1% |
| Inova Fairfax | 22,564 | 54.8% | 26.0% |
| Martinsville/Henry | 10,360 | 87.6% | 0.1% |
| Carilion Roanoke | 8,865 | 71.9% | 0.4% |
| Southside Regional | 7,103 | 87.1% | 11.6% |
UVA's 22% dismissal rate, combined with a 5.7% "not found/unserved" rate, means that roughly 28% of UVA's cases were filed against people who either couldn't be served or whose cases were ultimately dismissed. This is substantially higher than systems like MCV (5.3%) or Carilion (0.4%).
Baseline: Inova Fairfax had an even higher dismissal rate (26%), so UVA is not unique. But compared to MCV — which filed twice as many cases but achieved near-90% win rates — UVA appears to have cast a wider net with more cases failing.
Potential significance: A high dismissal rate may indicate aggressive filing practices — suing patients with incorrect addresses, disputed debts, or other problems that should have been resolved before litigation. Each dismissed case still imposes costs on the defendant and the court.
Next steps: Determine reasons for dismissals (data doesn't specify). Compare filing practices — did UVA use less pre-litigation screening than MCV? Interview UVA collection attorneys (Peter Hetzel was the primary circuit court attorney; Robert McEntee handled district court).
Lead 7: Nearly Half of All Defendants Were Sued Multiple Times
Signal strength: Moderate
Evidence: Of 2,464 unique defendant addresses in UVA cases:
- 48.4% (1,192) were sued 2 or more times
- 35.2% (867) were sued 3 or more times
- 25.2% (622) were sued 5 or more times
- 16.4% (403) were sued 10 or more times
Note: This uses address as a proxy for individual defendants, since names are anonymized. Addresses represent zip-code-level locations (e.g., "CHARLOTTESVILLE VA 22901"), so these counts aggregate all defendants at that address — they overstate repeat-defendant frequency. The signal is that certain communities bore enormous, concentrated litigation burden rather than specific individuals being sued repeatedly.
Baseline: The top addresses are the most populous areas near UVA: Charlottesville (3 zip codes totaling 6,978 cases), Culpeper (1,400), Louisa (1,358), Waynesboro (1,258).
Potential significance: Even at the community level, the concentration of thousands of medical debt lawsuits in small towns like Palmyra (pop. ~100, 1,073 cases) and Scottsville (pop. ~560, 827 cases) suggests these communities were heavily impacted. The ratio of lawsuits to population in some of these small towns is staggering.
Next steps: Obtain population data for these zip codes/towns and calculate per-capita lawsuit rates. Map the geographic footprint of UVA's litigation. Interview community leaders in heavily-sued towns.
Lead 8: UVA Pursued Patients Across State Lines
Signal strength: Preliminary
Evidence: Of ~28,700 warrant-in-debt cases with addresses, 1,891 (6.6%) were filed against out-of-state defendants:
- West Virginia: 740 cases
- North Carolina: 146
- Florida: 86
- Maryland: 82
- Tennessee: 78
- 15+ additional states represented
The largest single out-of-state judgment was $24,959 against a defendant in Atlanta, GA.
Baseline: UVA is a referral center serving a wide region including border areas of WV and NC, so some out-of-state cases are expected, particularly from WV (which borders the UVA service area). The 6.6% out-of-state rate is notable but not extraordinary for a major medical center.
Potential significance: Pursuing medical debt across state lines raises questions about defendants' ability to appear and contest cases in Albemarle County. A patient from Florida or Texas who received emergency care at UVA would face a significant burden traveling to Virginia to contest a debt claim. Were any of these default judgments?
Next steps: Cross-reference out-of-state cases with judgment outcomes — what percentage resulted in default judgments? Check whether UVA used Virginia's domestication-of-judgment process to collect in other states.
Additional Observations
- Attorney fee escalation: Starting in 2015, UVA began adding attorney fees of ~15% of principal ($3,600–$3,700 on top of debts near the $25,000 district court limit). This represents a significant policy change that increased the total burden on patients.
- Judgment satisfaction rate is surprisingly high: 42.2% of UVA's plaintiff judgments were marked as satisfied, compared to 15.3% statewide. This may indicate effective post-judgment collection or that many patients eventually found a way to pay.
- Nearly all cases filed in a single court: 99.97% of UVA's district court cases (44,432 of 44,443) were filed in FIPS 3 (Albemarle County). This is expected (it's UVA's home jurisdiction) but means a single court bore the entire burden.
- Debt type is uniformly "Open Account": 28,569 of 28,703 warrant-in-debt cases are coded as "Open Account" (medical billing), confirming these are patient debt cases rather than other types of collection.
- Circuit court cases are mostly garnishments: 1,616 of 1,828 UVA circuit court cases were garnishments (for enforcing existing judgments), with 194 contract actions (likely for debts above the $25,000 district court limit).
Unexplored Territory
- What happened after 2018? This dataset ends in 2018. Did UVA's filing practices continue to evolve? (Note: Kaiser Health News published a major investigation of UVA's patient lawsuits in 2019 — this data predates and corroborates that reporting.)
- Patient demographics: The anonymized data doesn't reveal race, age, income, or insurance status. Cross-referencing with census data for defendant zip codes could provide demographic context.
- Specific attorney practices: Peter Hetzel and Robert McEntee handled the vast majority of UVA's cases. What were their billing arrangements? Were they salaried UVA employees or outside collection counsel?
- Comparison with charity care: How much did UVA spend on charity care/financial assistance during this period? What were the eligibility thresholds? Were patients being sued who might have qualified for financial assistance?
- Impact on patients: This data captures filings but not human consequences — credit damage, bankruptcy, wage garnishment hardship. Patient interviews would be essential.
- Other UVA affiliates: The data shows some cases filed by "UVA Culpeper Hospital" (7 cases) and related entities. A more comprehensive entity-resolution pass might capture additional cases filed under variant names.
Transcript
Full Claude Code session transcript. Tool results and thinking blocks are collapsed by default.
Thinking...
tipsheet-generator
Output
Launching skill: tipsheet-generator
Thinking...
I'll start by inventorying the source material in datasets/va-courts.
ls -la /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/
Output
total 107512
drwxr-xr-x@ 16 nrh146 staff 512 Mar 6 13:18 .
drwxr-xr-x@ 11 nrh146 staff 352 Mar 6 13:19 ..
-rw-rw-r--@ 1 nrh146 staff 8148421 Apr 4 2025 circuit_civil_2012_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 7662791 Apr 4 2025 circuit_civil_2013_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 7768731 Apr 4 2025 circuit_civil_2014_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 8039549 Apr 4 2025 circuit_civil_2015_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 8046081 Apr 4 2025 circuit_civil_2016_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 7733610 Apr 4 2025 circuit_civil_2017_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 7631967 Apr 4 2025 circuit_civil_2018_anon_00.csv
drwxr-xr-x@ 6 nrh146 staff 192 Mar 6 13:18 district_civil_2012_anon_62IB4I
drwxr-xr-x@ 6 nrh146 staff 192 Mar 6 13:18 district_civil_2013_anon_G84KZC
drwxr-xr-x@ 5 nrh146 staff 160 Mar 6 13:18 district_civil_2014_anon_NL4FKC
drwxr-xr-x@ 5 nrh146 staff 160 Mar 6 13:18 district_civil_2015_anon_N7XQUY
drwxr-xr-x@ 5 nrh146 staff 160 Mar 6 13:18 district_civil_2016_anon_MLBSOI
drwxr-xr-x@ 5 nrh146 staff 160 Mar 6 13:18 district_civil_2017_anon_P2079L
drwxr-xr-x@ 5 nrh146 staff 160 Mar 6 13:18 district_civil_2018_anon_SSAVEK
du -sh /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/*
Output
7.8M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2012_anon_00.csv
7.3M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2013_anon_00.csv
7.4M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2014_anon_00.csv
7.7M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2015_anon_00.csv
7.7M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2016_anon_00.csv
7.4M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2017_anon_00.csv
7.3M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2018_anon_00.csv
122M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I
120M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2013_anon_G84KZC
111M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2014_anon_NL4FKC
110M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2015_anon_N7XQUY
109M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2016_anon_MLBSOI
113M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2017_anon_P2079L
115M /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2018_anon_SSAVEK
ls -la /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/
Output
total 250528
drwxr-xr-x@ 6 nrh146 staff 192 Mar 6 13:18 .
drwxr-xr-x@ 16 nrh146 staff 512 Mar 6 13:18 ..
-rw-rw-r--@ 1 nrh146 staff 38957534 Apr 4 2025 district_civil_2012_anon_00.csv
-rw-rw-r--@ 1 nrh146 staff 40307928 Apr 4 2025 district_civil_2012_anon_01.csv
-rw-rw-r--@ 1 nrh146 staff 40057254 Apr 4 2025 district_civil_2012_anon_02.csv
-rw-rw-r--@ 1 nrh146 staff 8940317 Apr 4 2025 district_civil_2012_anon_03.csv
head -3 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2012_anon_00.csv
Output
fips,Filed,FilingType,FilingFeePaid,NumberofPlaintiffs,NumberofDefendants,CommencedBy,Bond,ComplexCase,DateOrderedToMediation,Judgment,FinalOrderDate,AppealedDate,ConcludedBy,AppointmentType,StateAgency,DivorceFilingType,DivorceDispositionType,Plaintiff1TradingAs,Plaintiff1Attorney,Plaintiff2TradingAs,Plaintiff2Attorney,Plaintiff3TradingAs,Plaintiff3Attorney,Defendant1TradingAs,Defendant1Attorney,Defendant2TradingAs,Defendant2Attorney,Defendant3TradingAs,Defendant3Attorney
99,2012-08-20,Appointment Of Guardian And/Or Conservator,,1,1,Initial Filing,,,,Other,2012-12-21,,Settlement/Nonsuit/Vol. Dismissal,,,,,HERITAGE HEALTHCARE X LLC,"CRANWELL, M DEAN",,,,,,"HEWITT, HERBERT M",,,,
99,2012-09-26,Garnishment,,1,1,Initial Filing,,,,Other,2012-12-21,,Settlement/Nonsuit/Vol. Dismissal,,,,,,GLASSER & GLASSER,,,,,,,,,,
head -3 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/district_civil_2012_anon_00.csv
Output
fips,FiledDate,CaseType,DebtType,Judgment,Costs,AttorneyFees,PrincipalAmount,OtherAmount,InterestAward,Possession,WritIssuedDate,HomesteadExemptionWaived,IsJudgmentSatisfied,DateSatisfactionFiled,OtherAwarded,FurtherCaseInformation,Garnishee,Address,GarnisheeAnswer,AnswerDate,NumberofChecksReceived,AppealDate,AppealedBy,WritofEvictionIssuedDate,WritofFieriFaciasIssuedDate,WritofEvictionExecutedDate,Plaintiff1DBATA,Plaintiff1Address,Plaintiff1Attorney,Plaintiff2DBATA,Plaintiff2Address,Plaintiff2Attorney,Plaintiff3DBATA,Plaintiff3Address,Plaintiff3Attorney,Defendant1DBATA,Defendant1Address,Defendant1Attorney,Defendant2DBATA,Defendant2Address,Defendant2Attorney,Defendant3DBATA,Defendant3Address,Defendant3Attorney
91,2012-11-02,Warrant In Debt,,Case Dismissed,,,,,,,,,,,,,,,,,,,,,,,,"MONTEREY, VA 24465",,,,,,,,,"HOT SPRINGS, VA 24445",,,"HOT SPRINGS, VA 24445",,,,
91,2012-11-02,Warrant In Debt,,Plaintiff,56,,193.63,,,,,,,,,,,,,,,,,,,,,"MONTEREY, VA 24465",,,,,,,,,"STAUNTON, VA 24401",,,,,,,
wc -l /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_201*_anon_00.csv
Output
60907 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2012_anon_00.csv
57225 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2013_anon_00.csv
58331 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2014_anon_00.csv
57471 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2015_anon_00.csv
56959 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2016_anon_00.csv
57351 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2017_anon_00.csv
56637 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/circuit_civil_2018_anon_00.csv
404881 total
ls /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_201*/ 2>/dev/null
Output
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/:
district_civil_2012_anon_00.csv
district_civil_2012_anon_01.csv
district_civil_2012_anon_02.csv
district_civil_2012_anon_03.csv
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2013_anon_G84KZC/:
district_civil_2013_anon_00.csv
district_civil_2013_anon_01.csv
district_civil_2013_anon_02.csv
district_civil_2013_anon_03.csv
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2014_anon_NL4FKC/:
district_civil_2014_anon_00.csv
district_civil_2014_anon_01.csv
district_civil_2014_anon_02.csv
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2015_anon_N7XQUY/:
district_civil_2015_anon_00.csv
district_civil_2015_anon_01.csv
district_civil_2015_anon_02.csv
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2016_anon_MLBSOI/:
district_civil_2016_anon_00.csv
district_civil_2016_anon_01.csv
district_civil_2016_anon_02.csv
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2017_anon_P2079L/:
district_civil_2017_anon_00.csv
district_civil_2017_anon_01.csv
district_civil_2017_anon_02.csv
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2018_anon_SSAVEK/:
district_civil_2018_anon_00.csv
district_civil_2018_anon_01.csv
district_civil_2018_anon_02.csv
wc -l /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_201*/*.csv
Output
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/district_civil_2012_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/district_civil_2012_anon_01.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/district_civil_2012_anon_02.csv
53401 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2012_anon_62IB4I/district_civil_2012_anon_03.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2013_anon_G84KZC/district_civil_2013_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2013_anon_G84KZC/district_civil_2013_anon_01.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2013_anon_G84KZC/district_civil_2013_anon_02.csv
25238 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2013_anon_G84KZC/district_civil_2013_anon_03.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2014_anon_NL4FKC/district_civil_2014_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2014_anon_NL4FKC/district_civil_2014_anon_01.csv
218409 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2014_anon_NL4FKC/district_civil_2014_anon_02.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2015_anon_N7XQUY/district_civil_2015_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2015_anon_N7XQUY/district_civil_2015_anon_01.csv
207450 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2015_anon_N7XQUY/district_civil_2015_anon_02.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2016_anon_MLBSOI/district_civil_2016_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2016_anon_MLBSOI/district_civil_2016_anon_01.csv
202686 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2016_anon_MLBSOI/district_civil_2016_anon_02.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2017_anon_P2079L/district_civil_2017_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2017_anon_P2079L/district_civil_2017_anon_01.csv
225084 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2017_anon_P2079L/district_civil_2017_anon_02.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2018_anon_SSAVEK/district_civil_2018_anon_00.csv
250001 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2018_anon_SSAVEK/district_civil_2018_anon_01.csv
239990 /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/datasets/va-courts/district_civil_2018_anon_SSAVEK/district_civil_2018_anon_02.csv
5172274 total
Thinking...
Good — I can see the full picture now. Let me read the analysis playbook and then run a comprehensive analysis.
Data inventory:
- Circuit court civil cases (2012–2018): 7 files, ~405K rows, ~53MB. Contains plaintiff/defendant names, attorneys, filing types, judgments.
- District court civil cases (2012–2018): 23 files across 7 year-directories, ~5.17M rows, ~800MB. Contains case types, dollar amounts (principal, costs, fees), plaintiff/defendant names/addresses, garnishment details.
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/.claude/skills/tipsheet-generator/references/analysis-playbook.md
Output
1→# Analysis Playbook
2→
3→Tactical reference for signal detection across datasets of varying scale. Read the
4→section that matches your data size, then use the technique catalog for specific
5→analysis approaches.
6→
7→## Working with Large Data (1M+ rows)
8→
9→The biggest mistake is trying to load everything into a pandas DataFrame. For datasets
10→above ~1M rows, default to DuckDB or SQLite for querying in place. These handle
11→multi-million-row files without memory issues.
12→
13→### Strategy: Profile first, target second
14→
15→1. **Use DuckDB to profile directly from files.** DuckDB reads CSV, Parquet, and JSON
16→ natively without loading into memory:
17→ ```python
18→ import duckdb
19→ con = duckdb.connect()
20→
21→ # Row count without loading
22→ con.sql("SELECT count(*) FROM 'huge_file.csv'")
23→
24→ # Column profiling
25→ con.sql("""
26→ SELECT
27→ column_name,
28→ count(*) as non_null,
29→ count(distinct column_name) as cardinality,
30→ min(column_name), max(column_name)
31→ FROM 'huge_file.csv'
32→ GROUP BY ALL
33→ """)
34→ ```
35→
36→2. **Sample strategically, not randomly.** Random samples miss outliers by definition.
37→ Use multiple sampling strategies:
38→
39→ - **Head/tail/middle**: Quick structural check. Are the first and last records
40→ different in character? (e.g., schema changes over time)
41→ - **Stratified**: Sample N records from each category of a key field. Ensures
42→ you see the full variety.
43→ - **Extreme values**: Pull the top and bottom N by each numeric column. This is
44→ where outliers live.
45→ - **Temporal slices**: If data has dates, sample from different time periods.
46→ Look for regime changes.
47→ - **Targeted**: Once you spot something interesting in aggregates, pull the
48→ specific records for inspection.
49→
50→3. **Aggregate before you inspect.** Most signals in large data show up in aggregations
51→ (GROUP BY), not in individual records. Start with:
52→ - Counts and sums by category
53→ - Distributions (percentiles, histograms via NTILE or WIDTH_BUCKET)
54→ - Time series at appropriate granularity
55→ Then drill into individual records only for the groups that look anomalous.
56→
57→### Memory management
58→
59→- Never call `pd.read_csv()` on files over ~500MB without chunking
60→- Prefer DuckDB for any analytical query on large files
61→- If you must use pandas, use `dtype` specifications to reduce memory, and
62→ `usecols` to load only needed columns
63→- For iterative work, materialize intermediate results to Parquet (much smaller
64→ and faster than CSV) rather than holding everything in memory
65→- When generating summary statistics, write results to a small output table
66→ rather than trying to display millions of rows
67→
68→## Working with Medium Data (100K–1M rows)
69→
70→Pandas is fine here but be deliberate. Load once, profile immediately, then
71→work from the profile rather than re-scanning the full frame repeatedly.
72→
73→Useful profiling one-liner:
74→```python
75→profile = df.describe(include='all').T
76→profile['null_pct'] = df.isnull().mean()
77→profile['nunique'] = df.nunique()
78→profile['dtype'] = df.dtypes
79→```
80→
81→For text columns in medium data, don't try NLP on every row. Instead:
82→- Get value counts for categorical text (names, categories, statuses)
83→- Sample 100-200 rows for free-text fields and scan for patterns manually
84→- Use string operations (length, contains, regex) as cheap first filters
85→
86→## Working with Small Data (<100K rows)
87→
88→You can read everything. Do it. The danger here is under-analyzing, not
89→over-loading. Run a thorough pass:
90→
91→1. Full descriptive statistics on every column
92→2. Cross-tabulations of categorical fields
93→3. Correlation matrix for numeric fields
94→4. Duplicate detection (full-row and key-field)
95→5. Temporal analysis if dates exist
96→
97→## Working with Document Collections
98→
99→**Critical: Do not skip document sources.** Agents consistently deprioritize PDFs and
100→semi-structured documents in favor of clean CSVs and spreadsheets. This is a known
101→failure mode. PDFs and document collections often contain entity-level detail,
102→methodological context, manufacturer or product names, narrative explanations, and
103→other information that structured data lacks. You must make a genuine extraction attempt
104→on every document source provided.
105→
106→For PDFs, filings, or text documents:
107→
108→1. **Inventory and classify first.** How many documents? What types? Any metadata
109→ (dates, sources, categories)? List every document explicitly.
110→2. **Attempt extraction on all documents, not just a sample.** For PDFs:
111→ - Try text extraction first (pdftotext, PyMuPDF, pdfplumber). Many "difficult"
112→ PDFs actually contain extractable text.
113→ - For tabular PDFs, use tabula-py or pdfplumber's table extraction.
114→ - For scanned/image PDFs, note the limitation explicitly but still attempt OCR
115→ if tools are available.
116→ - If extraction partially fails, work with what you got. Partial data from 16 PDFs
117→ is better than perfect data from 0 PDFs.
118→ - Log extraction quality for each document (clean, partial, failed) in your
119→ coverage notes.
120→3. **Build a structured dataset from extracted fields.** Dates, names, dollar amounts,
121→ addresses — anything that appears consistently across documents. This mini-dataset
122→ becomes analyzable alongside your structured sources.
123→4. **Sample for close reading.** Pick documents strategically (largest, smallest,
124→ newest, oldest, different categories) and read them carefully. Note any patterns
125→ in structure, language, or content.
126→5. **Use text search for hypothesis testing.** Once you have a hunch from sampling,
127→ grep/search across the full collection to see if the pattern holds.
128→6. **Cross-reference with structured data.** The most valuable analysis often comes from
129→ connecting document-extracted information to structured data — e.g., matching
130→ manufacturer names from PDFs to export volumes in CSVs.
131→
132→## Technique Catalog
133→
134→### Outlier Detection
135→
136→**Numeric outliers:**
137→- IQR method: values below Q1-1.5*IQR or above Q3+1.5*IQR
138→- Z-score: values >3 standard deviations from mean (but skewed data breaks this)
139→- For skewed distributions (very common in financial/government data): use log
140→ transform first, or use percentile-based thresholds (e.g., top/bottom 1%)
141→- Domain-specific thresholds are often more useful than statistical ones (e.g.,
142→ contracts just below the bid threshold)
143→
144→**Categorical outliers:**
145→- Values that appear only once or twice when most values appear hundreds of times
146→- Categories with unusual distributions on other fields
147→- Misspellings and near-duplicates (Levenshtein distance) that might be the same
148→ entity under different names
149→
150→### Concentration Analysis
151→
152→- Herfindahl-Hirschman Index (HHI) for market/allocation concentration
153→- Gini coefficient for distribution inequality
154→- Simple share analysis: what % of total does the top entity/category represent?
155→ Compare to what you'd expect if distribution were uniform.
156→- For geographic concentration: counts by geography normalized by population or
157→ another appropriate denominator
158→
159→### Threshold Analysis
160→
161→Suspicious patterns near known thresholds:
162→- Values clustering just below reporting thresholds (structuring)
163→- Values that are exact round numbers at unusual frequency
164→- Patterns of splitting (e.g., multiple transactions to the same entity
165→ that individually fall below a threshold but collectively exceed it)
166→
167→Approach:
168→```sql
169→-- Histogram around a threshold (e.g., $10,000)
170→SELECT
171→ width_bucket(amount, 8000, 12000, 40) as bucket,
172→ count(*) as n
173→FROM transactions
174→GROUP BY 1
175→ORDER BY 1
176→```
177→Look for a spike just below and a dip just above.
178→
179→### Temporal Analysis
180→
181→**Start with the macro trend.** Before looking for spikes and anomalies, compute the
182→overall trajectory of the main metric (total volume, approval rate, dollar amount, count)
183→across the full time range of the dataset. Table or plot it at an appropriate granularity.
184→This is your first analytical act on any temporal data. The macro trend is often the lead
185→itself — a decade-long collapse, a steady surge, a sudden plateau. Don't bury it.
186→
187→Once you have the big picture:
188→- Compare period-over-period (this month vs. same month last year)
189→- Look for activity at unusual times (weekends, holidays, after-hours)
190→- Identify "regime changes" — sudden shifts in volume, composition, or behavior
191→- Check for seasonality, and then look for deviations from the seasonal pattern
192→- Look for compositional shifts within the trend: even if total volume is flat, the
193→ mix of categories/entities/geographies may be changing significantly
194→- Check for rank-order changes over time: who was the top entity at the start of the
195→ data vs. the end? Rank reversals are often newsworthy even when the underlying
196→ numbers aren't statistical outliers
197→
198→### Entity Resolution / Network Signals
199→
200→- Shared attributes across records: same address, phone, officer, registered agent
201→- Look for entities that appear in multiple roles (e.g., both buyer and seller,
202→ both contractor and inspector)
203→- Cluster by shared attributes and look for unexpectedly large or densely connected
204→ clusters
205→- Name variations: sort alphabetically and scan for near-matches
206→
207→### Contextual Significance (beyond statistics)
208→
209→Statistical outlier detection (z-scores, IQR, percentile thresholds) finds what's
210→numerically unusual. But journalistic significance often depends on context that isn't
211→in the data. After your statistical passes, apply these lenses:
212→
213→**Policy timeline overlay:** Identify any known policy changes, legislation, regulations,
214→or court decisions relevant to the dataset's domain. Map your temporal trends against
215→these events. Patterns that start, stop, or inflect at policy boundaries are strong leads.
216→Even if you don't know the specific policies, note inflection points and flag them as
217→"something changed here — investigate what."
218→
219→**Rank-order and competitive analysis:** Compute rankings over time. Which entities were
220→at the top at the start of the data, and which are at the top now? Rank reversals —
221→especially among entities that a domain expert would consider peers or competitors — are
222→frequently newsworthy even when the absolute numbers aren't statistical outliers.
223→Guatemala surpassing Brazil as a destination isn't a z-score anomaly, but it's a story.
224→
225→**Geographic and demographic context:** Raw counts by geography are almost never the
226→story. Normalize by population, income, housing stock, or whatever denominator fits the
227→domain. But also consider: is the geographic distribution of this activity consistent with
228→what domain knowledge would predict? A pattern concentrated in regions with no obvious
229→connection to the activity is worth flagging.
230→
231→**Known sensitivity areas:** Some data patterns matter because of what they represent in
232→the world, not because of their statistical properties. Apply what you know about the
233→domain. Arms flows to conflict zones, lending patterns by race, environmental violations
234→near vulnerable communities, safety incidents at facilities with prior histories — these
235→deserve scrutiny proportional to their potential impact, even if the numbers are modest.
236→
237→**What's missing that should be there:** Domain knowledge helps you notice absences.
238→A major player missing from an industry dataset. A state absent from a federal program.
239→A category that should exist but doesn't. Statistical methods don't flag what isn't there.
240→
241→### Data Quality as Signal
242→
243→Sometimes the most interesting finding is about the data itself:
244→- Mandatory fields that are blank for a specific subset of records
245→- Date sequences with gaps (missing months, missing IDs in a sequence)
246→- Values that change in format partway through (suggests a system change
247→ or manual entry)
248→- Duplicate records — are they true duplicates or records that shouldn't match?
249→- Inconsistent categorization of the same entity
250→
251→### Cross-table / Cross-file Analysis
252→
253→When working with multiple related datasets:
254→- Check referential integrity: do all foreign keys actually resolve?
255→ Orphaned records are often interesting.
256→- Compare overlapping fields across tables for consistency
257→- Look for entities present in one table but absent in a related one
258→ where you'd expect them
259→- Temporal alignment: do the date ranges match? Are there periods covered
260→ by one dataset but not the other?
261→
262→## Anti-patterns to Avoid
263→
264→- **The fishing expedition report.** Don't report every mildly unusual number.
265→ Apply judgment — if you found 200 "anomalies," your threshold is too low.
266→ Aim for 3-8 leads per tipsheet.
267→
268→- **The correlation dump.** "Column A correlates with Column B" is not a lead
269→ unless you can explain why that's surprising or consequential.
270→
271→- **The denominator problem.** Big numbers mean nothing without context.
272→ "$5M in contracts" is meaningless unless you know the total contract volume.
273→ Always compute shares, rates, or per-capita figures.
274→
275→- **Survivorship bias.** You're analyzing what's in the data. Think about
276→ what's NOT in the data that should be.
277→
278→- **Ignoring data generation.** Understand how the data was created. A "spike"
279→ in records might just mean someone did a batch upload. A "gap" might mean the
280→ system was down. Ask about provenance.
281→
282→- **Satisficing on structured data.** If the source material includes both CSVs and
283→ PDFs, or both databases and document collections, you must analyze all of them.
284→ Agents consistently gravitate toward the cleanest structured source, produce findings
285→ from it, and then either skip or superficially acknowledge the rest. This misses entire
286→ categories of leads (e.g., manufacturer-level analysis that only exists in PDFs, or
287→ narrative context that explains a statistical pattern). Partial extraction from a hard
288→ source is worth more than no extraction.
289→
290→- **Statistical significance without journalistic significance.** A z-score of 4.5 is
291→ interesting, but "this country went from #3 to #1 in five years" might be a better
292→ lead even if it doesn't register as a statistical outlier. Always ask: would a reporter
293→ who covers this beat find this surprising or important? If you can't answer that
294→ question, flag it as a question for the journalist rather than ignoring the pattern.
295→
Thinking...
Now let me run a comprehensive analysis. I'll use DuckDB for the large district court data and focus on identifying UVA Health cases.
mkdir -p outputs/va-courts
Output
(empty)
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis.py
File content
#!/usr/bin/env python3
"""Analysis of Virginia court records for UVA Health lawsuits."""
import duckdb
import json
con = duckdb.connect()
BASE = "datasets/va-courts"
# ============================================================
# Phase 1: Profile both datasets
# ============================================================
print("=" * 80)
print("PHASE 1: DATA PROFILING")
print("=" * 80)
# Circuit court
print("\n--- CIRCUIT COURT ---")
circuit_q = f"SELECT * FROM read_csv_auto('{BASE}/circuit_civil_*_anon_00.csv', filename=true, union_by_name=true)"
print(con.sql(f"SELECT count(*) as total_rows FROM ({circuit_q})").fetchall())
print("\nColumns:")
print(con.sql(f"DESCRIBE ({circuit_q})").fetchdf().to_string())
# Distinct filing types
print("\nFiling types:")
print(con.sql(f"SELECT FilingType, count(*) as n FROM ({circuit_q}) GROUP BY 1 ORDER BY 2 DESC LIMIT 20").fetchdf().to_string())
# District court
print("\n\n--- DISTRICT COURT ---")
district_q = f"SELECT * FROM read_csv_auto('{BASE}/district_civil_*/*.csv', filename=true, union_by_name=true)"
print(con.sql(f"SELECT count(*) as total_rows FROM ({district_q})").fetchall())
print("\nColumns:")
print(con.sql(f"DESCRIBE ({district_q})").fetchdf().to_string())
# Case types
print("\nCase types:")
print(con.sql(f"SELECT CaseType, count(*) as n FROM ({district_q}) GROUP BY 1 ORDER BY 2 DESC LIMIT 20").fetchdf().to_string())
# ============================================================
# Phase 2: Find UVA Health cases
# ============================================================
print("\n\n" + "=" * 80)
print("PHASE 2: IDENTIFYING UVA HEALTH CASES")
print("=" * 80)
# Search for UVA-related plaintiffs in circuit court
print("\n--- UVA-related plaintiffs in CIRCUIT court ---")
uva_circuit_names = con.sql(f"""
SELECT Plaintiff1TradingAs, count(*) as n
FROM ({circuit_q})
WHERE lower(Plaintiff1TradingAs) LIKE '%university of virginia%'
OR lower(Plaintiff1TradingAs) LIKE '%uva %'
OR lower(Pla...
Output
File created successfully at: /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis.py
python3 outputs/va-courts/analysis.py 2>&1
Error
Exit code 1
Traceback (most recent call last):
File "/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis.py", line 4, in <module>
import duckdb
ModuleNotFoundError: No module named 'duckdb'
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis_phase1.py
File content
#!/usr/bin/env python3
# /// script
# dependencies = ["duckdb", "pandas"]
# ///
"""Phase 1: Profile data and identify UVA Health cases across VA court records."""
import duckdb
con = duckdb.connect()
BASE = "datasets/va-courts"
# ============================================================
# CIRCUIT COURT PROFILING
# ============================================================
print("=" * 80)
print("CIRCUIT COURT PROFILING")
print("=" * 80)
circuit_q = f"SELECT * FROM read_csv_auto('{BASE}/circuit_civil_*_anon_00.csv', filename=true, union_by_name=true)"
print(con.sql(f"SELECT count(*) as total_rows FROM ({circuit_q})").fetchall())
print("\nColumns:")
print(con.sql(f"DESCRIBE ({circuit_q})").fetchdf().to_string())
print("\nFiling types (top 20):")
print(con.sql(f"SELECT FilingType, count(*) as n FROM ({circuit_q}) GROUP BY 1 ORDER BY 2 DESC LIMIT 20").fetchdf().to_string())
print("\nJudgment outcomes:")
print(con.sql(f"SELECT Judgment, count(*) as n FROM ({circuit_q}) GROUP BY 1 ORDER BY 2 DESC LIMIT 20").fetchdf().to_string())
print("\nCases by year:")
print(con.sql(f"SELECT year(Filed::DATE) as yr, count(*) as n FROM ({circuit_q}) GROUP BY 1 ORDER BY 1").fetchdf().to_string())
# ============================================================
# DISTRICT COURT PROFILING
# ============================================================
print("\n" + "=" * 80)
print("DISTRICT COURT PROFILING")
print("=" * 80)
district_q = f"SELECT * FROM read_csv_auto('{BASE}/district_civil_*/*.csv', filename=true, union_by_name=true)"
print(con.sql(f"SELECT count(*) as total_rows FROM ({district_q})").fetchall())
print("\nColumns:")
print(con.sql(f"DESCRIBE ({district_q})").fetchdf().to_string())
print("\nCase types (top 20):")
print(con.sql(f"SELECT CaseType, count(*) as n FROM ({district_q}) GROUP BY 1 ORDER BY 2 DESC LIMIT 20").fetchdf().to_string())
print("\nJudgment outcomes:")
print(con.sql(f"SELECT Judgment, count(*) as n FROM ({district_q}) GROUP BY 1 ORDER BY 2 DESC LIMIT...
Output
File created successfully at: /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis_phase1.py
python-runner
Output
Launching skill: python-runner
uv run outputs/va-courts/analysis_phase1.py 2>&1
Output
Installed 5 packages in 75ms
================================================================================
CIRCUIT COURT PROFILING
================================================================================
[(404874,)]
Columns:
column_name column_type null key default extra
0 fips BIGINT YES None None None
1 Filed DATE YES None None None
2 FilingType VARCHAR YES None None None
3 FilingFeePaid VARCHAR YES None None None
4 NumberofPlaintiffs BIGINT YES None None None
5 NumberofDefendants BIGINT YES None None None
6 CommencedBy VARCHAR YES None None None
7 Bond VARCHAR YES None None None
8 ComplexCase VARCHAR YES None None None
9 DateOrderedToMediation VARCHAR YES None None None
10 Judgment VARCHAR YES None None None
11 FinalOrderDate DATE YES None None None
12 AppealedDate DATE YES None None None
13 ConcludedBy VARCHAR YES None None None
14 AppointmentType VARCHAR YES None None None
15 StateAgency VARCHAR YES None None None
16 DivorceFilingType VARCHAR YES None None None
17 DivorceDispositionType VARCHAR YES None None None
18 Plaintiff1TradingAs VARCHAR YES None None None
19 Plaintiff1Attorney VARCHAR YES None None None
20 Plaintiff2TradingAs VARCHAR YES None None None
21 Plaintiff2Attorney VARCHAR YES None None None
22 Plaintiff3TradingAs VARCHAR YES None None None
23 Plaintiff3Attorney VARCHAR YES None None None
24 Defendant1TradingAs VARCHAR YES None None None
25 Defendant1Attorney VARCHAR YES None None None
26 Defendant2TradingAs VARCHAR YES None None None
27 Defendant2Attorney VARCHAR YES None None None
28 Defendant3TradingAs VARCHAR YES None None None
29 Defendant3Attorney VARCHAR YES None None None
30 filename VARCHAR YES None None None
Filing types (top 20):
FilingType n
0 Divorce 97938
1 Garnishment 54206
2 Complaint - Catch-All 28246
3 Petition 27548
4 Motor Vehicle 22480
5 Reinstatement (General) 15793
6 Contract Action 14022
7 Compromise Settlement (Injury/Wrongful Death) 13401
8 Name Change 13253
9 Appointment Of Guardian And/Or Conservator 13243
10 Forfeiture Of Property Or Money 12520
11 General District Court Appeal 8356
12 Restore Driving Privilege 6759
13 Reinstatement Of Driving Privileges 6479
14 Delinquent Taxes 6266
15 Restore Firearms Rights Felony 4404
16 General Tort Liability 3689
17 Civil Contempt 3515
18 Gapl-Other 3298
19 Gapl-Warrant In Debt 2974
Judgment outcomes:
Judgment n
0 Other 211538
1 Plaintiff 149871
2 NaN 32458
3 Defendant 11007
Cases by year:
yr n
0 1976 1
1 1977 1
2 1979 2
3 1981 5
4 1982 2
5 1983 6
6 1984 3
7 1985 9
8 1986 13
9 1987 16
10 1988 20
11 1989 22
12 1990 38
13 1991 58
14 1992 53
15 1993 38
16 1994 49
17 1995 77
18 1996 73
19 1997 117
20 1998 87
21 1999 201
22 2000 220
23 2001 313
24 2002 373
25 2003 413
26 2004 321
27 2005 708
28 2006 1019
29 2007 1824
30 2008 2794
31 2009 5408
32 2010 9494
33 2011 26722
34 2012 57852
35 2013 54010
36 2014 53237
37 2015 54909
38 2016 53482
39 2017 50109
40 2018 30774
41 <NA> 1
================================================================================
DISTRICT COURT PROFILING
================================================================================
[(5172251,)]
Columns:
column_name column_type null key default extra
0 fips BIGINT YES None None None
1 FiledDate DATE YES None None None
2 CaseType VARCHAR YES None None None
3 DebtType VARCHAR YES None None None
4 Judgment VARCHAR YES None None None
5 Costs DOUBLE YES None None None
6 AttorneyFees DOUBLE YES None None None
7 PrincipalAmount DOUBLE YES None None None
8 OtherAmount DOUBLE YES None None None
9 InterestAward VARCHAR YES None None None
10 Possession VARCHAR YES None None None
11 WritIssuedDate DATE YES None None None
12 HomesteadExemptionWaived BOOLEAN YES None None None
13 IsJudgmentSatisfied BOOLEAN YES None None None
14 DateSatisfactionFiled DATE YES None None None
15 OtherAwarded VARCHAR YES None None None
16 FurtherCaseInformation VARCHAR YES None None None
17 Garnishee VARCHAR YES None None None
18 Address VARCHAR YES None None None
19 GarnisheeAnswer VARCHAR YES None None None
20 AnswerDate DATE YES None None None
21 NumberofChecksReceived BIGINT YES None None None
22 AppealDate DATE YES None None None
23 AppealedBy VARCHAR YES None None None
24 WritofEvictionIssuedDate VARCHAR YES None None None
25 WritofFieriFaciasIssuedDate VARCHAR YES None None None
26 WritofEvictionExecutedDate VARCHAR YES None None None
27 Plaintiff1DBATA VARCHAR YES None None None
28 Plaintiff1Address VARCHAR YES None None None
29 Plaintiff1Attorney VARCHAR YES None None None
30 Plaintiff2DBATA VARCHAR YES None None None
31 Plaintiff2Address VARCHAR YES None None None
32 Plaintiff2Attorney VARCHAR YES None None None
33 Plaintiff3DBATA VARCHAR YES None None None
34 Plaintiff3Address VARCHAR YES None None None
35 Plaintiff3Attorney VARCHAR YES None None None
36 Defendant1DBATA VARCHAR YES None None None
37 Defendant1Address VARCHAR YES None None None
38 Defendant1Attorney VARCHAR YES None None None
39 Defendant2DBATA VARCHAR YES None None None
40 Defendant2Address VARCHAR YES None None None
41 Defendant2Attorney VARCHAR YES None None None
42 Defendant3DBATA VARCHAR YES None None None
43 Defendant3Address VARCHAR YES None None None
44 Defendant3Attorney VARCHAR YES None None None
45 filename VARCHAR YES None None None
Case types (top 20):
CaseType n
0 Warrant In Debt 2117855
1 Unlawful Detainer 1195673
2 Garnishment 1142755
3 Interrogatory/Judge 167320
4 Detinue 135716
5 Administrative License Suspension 115601
6 Show Cause 75240
7 Other 57850
8 Motion For Judgment 49328
9 Impoundment 30902
10 Abstract Of Judgment 25000
11 Bond Forfeiture 21518
12 Zoning Violation 11522
13 Overweight Citation 8421
14 Counterclaim 5064
15 Capias 4793
16 Tenant's Assertion 2956
17 NaN 2283
18 Petition Right To Bear Arms 930
19 Motor Carrier 586
Judgment outcomes:
Judgment n
0 Plaintiff 2120446
1 NaN 1330038
2 Case Dismissed 1005867
3 Non-suit 310944
4 Other 233753
5 Not Found/Unserved 152434
6 Defendant 13623
7 Transfer/Change of Venue 4982
8 Removed To Circuit Court 158
9 Dismissed 4
10 Granted 2
Cases by year:
yr n
0 2002 11
1 2003 31
2 2004 38
3 2005 95
4 2006 165
5 2007 286
6 2008 337
7 2009 543
8 2010 1044
9 2011 141999
10 2012 800060
11 2013 765406
12 2014 716829
13 2015 710205
14 2016 702933
15 2017 727749
16 2018 604501
17 2019 17
18 <NA> 2
================================================================================
IDENTIFYING UVA HEALTH / UNIVERSITY OF VIRGINIA CASES
================================================================================
--- CIRCUIT COURT: UVA-related plaintiff names ---
Plaintiff1TradingAs:
Plaintiff1TradingAs n
0 UVA MEDICAL CENTER 1618
1 UNIVERSITY OF VIRGINIA MEDICAL 204
2 UVA MEDICAL CENTEFR 3
3 UVA CREDIT UNION 2
4 UNIVERSITY OF VIRGINIA MED CEN 1
5 UNIVERSITY OF VIRGINIA 1
6 UVA MEDICAL MECTER 1
7 UVA MECICAL CENTER 1
--- DISTRICT COURT: UVA-related plaintiff names ---
Plaintiff1DBATA:
Plaintiff1DBATA n
0 VIRGINIA A CORP T/A UNIVERSITY OF VIRGINIA 44136
1 UNIVERSITY OF VIRGINIA MEDICAL CENTER 180
2 VIRGINIA A CORP., T/A UNIVERSITY OF VIRGINIA 13
3 CORPORATION TRADING AS UVA MEDICAL CENTER 13
4 A CORPORATION TRADING AS UVA MEDICAL CENTER 11
5 TRADING AS UNIVERSITY OF VIRGINIA MEDICAL CEN 10
6 TRADING AS UNIVERSITY OF VIRGINIA MEDICAL 8
7 VIRGINIA TRADING AS UVA MEDICAL CENTER 7
8 D/B/A UVA CULPEPER HOSPITAL 7
9 VIRGINIA A CORP., T/A UVA MEDICAL CENTER 6
10 A CORPORATION UVA MEDICAL CENTER 6
11 VA, A CORPORATION TRADING AS UVA MEDICAL CENT 6
12 TRADING AS UVA MEDICAL CENTER 5
13 VIRGINIA A COPR T/A UNIVERSITY OF VIRGINIA 5
14 VIRGINIA A CORP. T/A UVA MEDICAL CENTER 4
15 CORPRATION TRADING AS UVA MEDICAL 3
16 UVA MEDICAL CENTER 3
17 N/K/A UVA COMMUNITY CREDIT UNION 3
18 T/A UNIVERSITY OF VIRGINIA MEDICAL CENTER 3
19 VIRGINIA T/A UVA MEDICAL CENTER 2
20 A CORP. TRADING AS UVA MEDICAL CENTER 2
21 VIRGINIA A CORP T/A UVA MEDICAL CENTER 1
22 A CORP T/A UNIVERSITY OF VIRGINIA 1
23 MEYER, C/UVA POLICE 1
24 OF VIRGINIA CORP T/A UNIVERSITY OF VIRGINIA 1
25 UNIVERSITY OF VIRGINIA A CORP T/A UVA 1
26 VIRGINIA A CORP.; T/A UVA MEDICAL CENTER 1
27 UVA POLICE DEPT 1
28 UNIVERSITY OF VIRGINIA 1
29 MAR/UVA PD 1
30 VIRGINIA, A CORP. TRADING AS UVA MEDICAL CTR 1
31 OF VIRGINIA, A CORP, UVA MEDICAL CENTER 1
32 MEYER, C.D.-UVA PD 1
33 RAGLAND, A/UVA PD 1
34 OF UVA MEDICAL CENTER 1
35 MILLER/UVA PD 1
36 MEGGINSON/UVA PD 1
37 MILLER, B/UVA PD 1
--- CIRCUIT COURT: Attorneys appearing with UVA plaintiff cases ---
Plaintiff1Attorney n
0 HETZEL, PETER H 187
1 WOLF, DANIEL S 13
2 VON MOLL, DAVID A 1
3 HETZEL,PETER H 1
4 DANIEL, MARY 1
5 DANIEL, MARY L 1
6 DANIEL, MARY COSTELLO 1
7 NaN 1
--- DISTRICT COURT: Attorneys appearing with UVA plaintiff cases ---
... (87 more lines truncated)
Excellent — UVA Health is a massive litigant. ~44,000+ district court cases and ~1,800+ circuit court cases. Now let me run the deep analysis.
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis_phase2.py
File content
#!/usr/bin/env python3
# /// script
# dependencies = ["duckdb", "pandas"]
# ///
"""Phase 2: Deep analysis of UVA Health lawsuits - trends, amounts, geography, comparisons."""
import duckdb
con = duckdb.connect()
BASE = "datasets/va-courts"
circuit_q = f"SELECT * FROM read_csv_auto('{BASE}/circuit_civil_*_anon_00.csv', filename=true, union_by_name=true)"
district_q = f"SELECT * FROM read_csv_auto('{BASE}/district_civil_*/*.csv', filename=true, union_by_name=true)"
# Build UVA filter for district court (the main volume)
UVA_FILTER_DISTRICT = """(
lower(Plaintiff1DBATA) LIKE '%university of virginia%'
OR lower(Plaintiff1DBATA) LIKE '%uva medical%'
OR lower(Plaintiff1DBATA) LIKE '%uva culpeper%'
OR lower(Plaintiff1DBATA) LIKE '%uva community credit%'
OR (lower(Plaintiff1DBATA) LIKE '%uva %' AND lower(Plaintiff1DBATA) NOT LIKE '%uva police%' AND lower(Plaintiff1DBATA) NOT LIKE '%/uva p%')
)"""
UVA_FILTER_CIRCUIT = """(
lower(Plaintiff1TradingAs) LIKE '%university of virginia%'
OR lower(Plaintiff1TradingAs) LIKE '%uva medical%'
OR lower(Plaintiff1TradingAs) LIKE '%uva mecical%'
)"""
# ============================================================
# 1. UVA DISTRICT COURT: Year-over-year volume trend
# ============================================================
print("=" * 80)
print("1. UVA DISTRICT COURT CASES BY YEAR")
print("=" * 80)
print(con.sql(f"""
SELECT year(FiledDate::DATE) as yr,
count(*) as total_cases,
count(*) FILTER (WHERE Judgment = 'Plaintiff') as plaintiff_wins,
count(*) FILTER (WHERE Judgment = 'Case Dismissed') as dismissed,
count(*) FILTER (WHERE Judgment = 'Not Found/Unserved') as unserved,
round(avg(PrincipalAmount), 2) as avg_principal,
round(median(PrincipalAmount), 2) as median_principal,
round(sum(PrincipalAmount), 2) as total_principal,
round(max(PrincipalAmount), 2) as max_principal
FROM ({district_q})
WHERE {UV...
Output
File created successfully at: /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis_phase2.py
uv run outputs/va-courts/analysis_phase2.py 2>&1
Output
Installed 5 packages in 79ms
================================================================================
1. UVA DISTRICT COURT CASES BY YEAR
================================================================================
yr total_cases plaintiff_wins dismissed unserved avg_principal median_principal total_principal max_principal
0 2007 1 0 1 0 NaN NaN NaN NaN
1 2010 1 0 1 0 NaN NaN NaN NaN
2 2011 1706 402 188 55 1922.36 983.00 772787.28 19812.76
3 2012 10932 5380 1791 633 1679.21 807.84 9035812.60 24427.21
4 2013 11660 5474 1823 835 1872.82 830.40 10257422.10 24917.36
5 2014 8313 3481 1316 494 2049.66 933.29 7141006.67 24448.12
6 2015 1748 45 15 1 18484.10 19837.24 831784.28 24793.60
7 2016 3202 1540 470 163 2477.78 1327.03 3815787.70 24959.18
8 2017 4146 1819 524 190 2495.22 1416.22 4541297.05 24892.68
9 2018 2734 1215 272 142 2699.70 1801.35 3282829.99 22702.95
================================================================================
2. UVA CIRCUIT COURT CASES BY YEAR
================================================================================
yr total_cases FilingType Judgment ConcludedBy
0 2009 1 Complaint - Catch-All Other Other
1 2010 1 Encumber/Sell Real Estate Plaintiff Settlement
2 2011 92 Garnishment Other Settlement/Nonsuit/Vol. Dismissal
3 2011 10 Garnishment Plaintiff Settlement/Nonsuit/Vol. Dismissal
4 2011 7 Garnishment NaN NaN
5 2011 4 Contract Action Plaintiff Default Judgment
6 2011 1 Garnishment Other Other
7 2011 1 Contract Action Other Default Judgment
8 2012 60 Garnishment Other Settlement/Nonsuit/Vol. Dismissal
9 2012 32 Contract Action Plaintiff Default Judgment
10 2012 24 Garnishment Plaintiff Settlement/Nonsuit/Vol. Dismissal
11 2012 12 Garnishment NaN NaN
12 2012 3 Contract Action Plaintiff Settlement/Nonsuit/Vol. Dismissal
13 2012 2 Contract Action Other Settlement/Nonsuit/Vol. Dismissal
14 2012 1 Garnishment Other Other
15 2012 1 Contract Action Other Dismissal
16 2012 1 Contract Action Plaintiff Trial - Judge With Witnesses
17 2012 1 Contract Action Other Default Judgment
18 2013 16 Contract Action Plaintiff Default Judgment
19 2013 6 Contract Action Plaintiff Settlement/Nonsuit/Vol. Dismissal
20 2013 2 Contract Action NaN NaN
21 2013 2 Contract Action Plaintiff Other
22 2013 1 Contract Action Plaintiff Trial - Jury
23 2014 182 Garnishment Other Settlement/Nonsuit/Vol. Dismissal
24 2014 98 Contract Action Plaintiff Default Judgment
25 2014 14 Contract Action Other Settlement/Nonsuit/Vol. Dismissal
26 2014 8 Compromise Settlement (Injury/Wrongful Death) Plaintiff Default Judgment
27 2014 5 Contract Action Plaintiff Other
28 2014 4 Complaint - Catch-All Plaintiff Default Judgment
29 2014 3 Contract Action Plaintiff Settlement/Nonsuit/Vol. Dismissal
30 2014 2 Contract Action Other Default Judgment
31 2014 1 Contract Action NaN NaN
32 2014 1 Petition NaN NaN
33 2014 1 Complaint - Catch-All Other Default Judgment
34 2014 1 Compromise Settlement (Injury/Wrongful Death) Other Settlement/Nonsuit/Vol. Dismissal
35 2014 1 Complaint - Catch-All Plaintiff Other
36 2014 1 Garnishment NaN NaN
37 2015 319 Garnishment Other Settlement/Nonsuit/Vol. Dismissal
38 2015 5 Garnishment NaN NaN
39 2016 160 Garnishment Other Settlement/Nonsuit/Vol. Dismissal
40 2016 130 Garnishment Other Dismissal
41 2016 3 Garnishment NaN NaN
42 2016 1 Garnishment Plaintiff Dismissal
43 2017 336 Garnishment Other Dismissal
44 2017 1 Garnishment NaN NaN
45 2018 270 Garnishment Other Dismissal
46 2018 1 Garnishment Plaintiff Dismissal
Simplified yearly:
yr total_cases
0 2009 1
1 2010 1
2 2011 115
3 2012 137
4 2013 27
5 2014 322
6 2015 324
7 2016 294
8 2017 337
9 2018 271
================================================================================
3. UVA DISTRICT CASES BY CASE TYPE
================================================================================
CaseType n avg_principal total_principal
0 Warrant In Debt 28703 2048.96 39676003.82
1 Garnishment 15675 NaN NaN
2 Other 55 2723.85 2723.85
3 Show Cause 6 NaN NaN
4 Interrogatory/Judge 3 NaN NaN
5 Administrative License Suspension 1 NaN NaN
================================================================================
4. JUDGMENT OUTCOMES: UVA vs ALL PLAINTIFFS (DISTRICT)
================================================================================
UVA outcomes:
Judgment n pct
0 Plaintiff 19356 43.55
1 NaN 15682 35.29
2 Case Dismissed 6401 14.40
3 Not Found/Unserved 2513 5.65
4 Non-suit 466 1.05
5 Other 15 0.03
6 Transfer/Change of Venue 7 0.02
7 Defendant 3 0.01
All plaintiffs outcomes:
Judgment n pct
0 Plaintiff 2120446 41.00
1 NaN 1330038 25.71
2 Case Dismissed 1005867 19.45
3 Non-suit 310944 6.01
4 Other 233753 4.52
5 Not Found/Unserved 152434 2.95
6 Defendant 13623 0.26
7 Transfer/Change of Venue 4982 0.10
8 Removed To Circuit Court 158 0.00
9 Dismissed 4 0.00
10 Granted 2 0.00
================================================================================
5. PRINCIPAL AMOUNT DISTRIBUTION (UVA DISTRICT CASES)
================================================================================
amount_bucket n pct
0 NULL 25078 56.43
1 $0-100 66 0.15
2 $101-500 4650 10.46
3 $501-1000 4827 10.86
4 $1001-2500 5781 13.01
5 $2501-5000 2390 5.38
6 $5001-10000 981 2.21
7 $10001-25000 670 1.51
================================================================================
6. DEFENDANT LOCATIONS (UVA DISTRICT CASES - TOP 30 CITIES)
================================================================================
city n avg_principal total_principal
0 CHARLOTTESVILLE 7805 1718.23 5572225.41
1 2847 3556.72 4990084.64
2 CULPEPER 1400 1864.90 1076046.82
3 LOUISA 1361 1817.85 1154335.20
4 WAYNESBORO 1258 1730.65 936279.19
5 PALMYRA 1081 1845.09 824756.04
6 ORANGE 1021 1795.02 743137.92
7 STAUNTON 927 1651.62 621010.21
8 LYNCHBURG 890 1986.86 800704.30
9 GORDONSVILLE 846 2038.23 666500.74
10 SCOTTSVILLE 830 1900.78 655769.79
11 RUCKERSVILLE 760 1744.37 528542.64
12 HARRISONBURG 664 1960.47 515603.77
13 MINERAL 628 1913.25 510836.87
14 STUARTS DRAFT 514 1295.85 279903.76
15 STANARDSVILLE 484 1920.93 399553.90
16 DILLWYN 393 1981.24 356623.15
17 CROZET 369 2272.87 350021.42
18 MADISON 349 1752.08 255803.94
19 BARBOURSVILLE 342 1666.40 226630.12
20 ROANOKE 306 1708.02 213502.42
21 KESWICK 303 1757.41 221434.16
22 WINCHESTER 297 2002.03 238241.08
23 AMHERST 293 1813.50 219433.49
24 FREDERICKSBURG 278 1896.11 219949.19
25 MADISON HEIGHTS 276 1683.79 207105.58
26 ELKTON 276 1972.96 242673.52
27 DANVILLE 272 2111.90 278770.44
28 TROY 271 1811.15 202848.44
29 RICHMOND 270 1627.58 157875.12
================================================================================
7. TOP PLAINTIFFS IN DISTRICT COURT (ALL YEARS)
================================================================================
Plaintiff1DBATA n total_principal avg_principal
0 MCV ASSOCIATED PHYSICIANS 75049 82101064.04 1605.48
1 PARTNERSHIP T/A GRAND FURNITURE DISC. STORES 65654 35771669.43 1242.59
2 VIRGINIA A CORP T/A UNIVERSITY OF VIRGINIA 44136 38526628.44 2007.22
3 TRAFFIC 28205 30963.10 20.64
4 FIRE-RESCUE SERVICES 24175 4142827.46 358.78
5 INOVA FAIRFAX HOSPITAL 21044 26755604.43 2321.12
6 CARILION ROANOKE MEMORIAL HOSPITAL 16396 26829635.16 4128.27
7 ASSIGNEE OF CREDIT ONE BANK NA 14915 7636390.89 833.12
8 GREAT RICHMOND RENTALS 11926 4509081.39 779.04
9 HENRICO COUNTY GENERAL DISTRICT COURT 11654 2227.00 0.54
10 MOORE LOANS INC 11098 18151814.26 6436.81
11 CRIMINAL 10964 27284.61 43.24
12 SOUTHSIDE REGIONAL MEDICAL CENTER 10732 13386867.16 2405.55
13 ASSIGNEE OF SYNCHRONY BANK 9758 10343283.88 1763.86
14 HOSPITAL OF MARTINSVILLE & HENRY COUNTY 8976 17939782.22 3225.42
15 EMERALD POINT APTS 8566 4482269.73 1039.97
16 NPD PHOTO SAFE PROGRAM 8219 208068.16 49.73
17 GRAND FURNITURE 8149 5467069.15 1604.19
18 INOVA FAIR OAKS HOSPITAL 7823 7334644.07 1738.48
19 UTILITIES 7305 2906648.40 793.73
20 552-6063 7069 0.00 0.00
21 GLASSER & GLASSER PLC 6972 14362172.30 4289.78
22 BELMONT HILLS 6448 3659863.80 904.12
23 SERVICES FOUNDATION 6295 4648225.89 1038.48
24 FIRE RESCUE SERVICES 6260 733262.22 331.49
25 FORD MOTOR CREDIT COMPANY 6252 11467773.82 7769.49
26 BANK 6230 6281326.31 1739.98
27 JERRY'S INC. A PARTNERSHIP TA GRAND FURNITURE 6208 3964003.59 1915.90
28 INC 6194 7541454.30 3115.02
29 DEPARTMENT OF UTILITIES 6068 2035598.09 524.37
30 ASSIGNEE OF CITIBANK NA 6039 8658628.84 2516.31
31 JEFFREY L SHAFER TREASURER 6033 343177.54 188.35
32 BY NNRHA 5876 608758.01 397.88
33 THE ALEXANDRIA HOSPITAL 5421 5556481.38 1705.49
34 CAMBRIDGE 5026 2215307.95 784.46
35 BY GEICO SUBROGEE 4963 14198443.20 4596.45
36 BANK NA 4961 2313293.58 860.60
37 HEALTH SERVICES FOUNDATION 4722 2948751.24 1012.97
38 ASSOCIATION 4707 6385431.75 3809.92
39 INOVA ALEXANDRIA HOSPITAL 4641 5713319.87 2101.26
================================================================================
8. HOSPITAL/MEDICAL PLAINTIFFS IN DISTRICT COURT
================================================================================
Plaintiff1DBATA n total_principal avg_principal
0 MCV ASSOCIATED PHYSICIANS 75049 82101064.04 1605.48
1 INOVA FAIRFAX HOSPITAL 21044 26755604.43 2321.12
2 CARILION ROANOKE MEMORIAL HOSPITAL 16396 26829635.16 4128.27
3 SOUTHSIDE REGIONAL MEDICAL CENTER 10732 13386867.16 2405.55
4 HOSPITAL OF MARTINSVILLE & HENRY COUNTY 8976 17939782.22 3225.42
5 INOVA FAIR OAKS HOSPITAL 7823 7334644.07 1738.48
6 THE ALEXANDRIA HOSPITAL 5421 5556481.38 1705.49
7 HEALTH SERVICES FOUNDATION 4722 2948751.24 1012.97
8 INOVA ALEXANDRIA HOSPITAL 4641 5713319.87 2101.26
9 CARILION MEDICAL GROUP 4613 1254196.70 572.95
10 HENRICO DOCTORS HOSPITAL 4487 5124389.27 2171.35
11 CHESAPEAKE REGIONAL MEDICAL CTR 3660 4569079.44 2163.39
12 SOUTHAMPTON MEMORIAL HOSPITAL 3112 3292101.13 1957.25
13 INOVA LOUDOUN HOSPITAL 3065 4264907.69 2445.47
14 VALLEY HEALTH SYSTEM 2867 7687630.79 3643.43
15 INOVA MT VERNON HOSPITAL 2830 2999180.56 1846.79
16 HOSPITAL OF MARTINSVILLE AND HENRY COUNTY 2614 4240876.17 3091.02
17 INOVA MOUNT VERNON HOSPITAL 2167 3045006.10 2075.67
18 DBA SOUTHERN VIRGINIA REGIONAL MEDICAL CENTER 2073 2467106.44 2218.62
19 HOSPITAL 1774 2021105.58 1989.28
20 LOUDOUN HOSPITAL CENTER 1415 2133245.92 2279.11
21 SENTARA NORTHERN VIRGINIA MEDICAL CENTER 1355 1088753.87 2085.74
22 C/O VALLEY HEALTH SYSTEM 1340 3084734.64 3125.36
23 THE CLINIC 1322 935966.23 931.31
24 MEMORIAL HOSPITAL OF MARTINSVILLE & HENRY CO 1263 2260332.86 2946.98
25 DBA INOVA FAIRFAX HOSPITAL 1074 1402278.95 2269.06
26 CHESAPEAKE REGIONAL MEDICAL CENTER 963 2067230.98 2763.68
27 JOHNSTON MEMORIAL HOSPITAL 942 1259319.52 2289.67
28 WILLIAM DBA SENTARA NORTHERN VIRGINIA MEDICAL 939 661584.59 1773.69
29 OBICI HOSPITAL 929 520210.00 1521.08
30 CARILION GILES MEMORIAL HOSPITAL 900 703522.73 3318.50
31 CHESAPEAKE EMERGENCY PHYSICIANS 888 49496.94 589.25
32 SURGEONS HEALTH SERVICES FOUNDATION 878 715839.71 1123.77
33 BLUEFIELD REGIONAL MEDICAL CENTER 878 977880.49 1891.45
34 NORTON COMMUNITY HOSPITAL 769 975446.31 2268.48
35 SMYTH COUNTY COMMUNITY HOSPITAL 620 792617.10 2021.98
36 OAKS HOSPITAL 618 459798.89 1393.33
37 CENTRA MEDICAL GROUP 592 569611.02 1655.85
38 MEDICAL ASSISTANCE SERVICES 512 1755415.49 6525.71
39 DBA INOVA ALEXANDRIA HOSPITAL 477 656089.35 2246.88
================================================================================
9. UVA GARNISHMENT CASES (DISTRICT)
================================================================================
yr total_garnishments total_principal avg_principal unique_garnishees
0 2011 1058 NaN NaN 751
1 2012 3070 NaN NaN 1626
2 2013 3459 NaN NaN 1816
3 2014 2912 NaN NaN 1647
4 2015 1683 NaN NaN 948
5 2016 988 NaN NaN 622
6 2017 1480 NaN NaN 931
7 2018 1025 NaN NaN 709
Top garnishees targeted by UVA:
Garnishee n
0 WAL MART ASSOCIATES INC 386
1 UVA MEDICAL CENTER 327
2 COMMONWEALTH OF VIRGINIA 241
3 UNIV VA & BLUE RIDGE HOSP 154
4 PUBLIC PARTNERSHIPS LLC 151
5 PUBLIC PARTNERSHIP LLC 140
6 COUNTY OF ALBEMARLE 101
7 CROTHALL HEALTHCARE INC 101
8 CROTHALL HEALTHCARE 94
9 WAL-MART ASSOC INC 88
10 ARAMARK CAMPUS LLC 83
11 CITY OF CHARLOTTESVILLE 81
12 MEDICAL FACILITIES OF AME 77
13 FOOD LION LLC 70
14 WALMART ASSOCIATES INC. 65
15 TRINITY MISSION OF CHARLOTTESV 54
16 OUR LADY OF PEACE INC 51
17 MORRISON MANAGEMENT SPECI INC 51
18 UNITED STATES POSTAL SERV 45
19 HARRIS TEETER INC 44
================================================================================
10. UVA CIRCUIT COURT FILING TYPES
================================================================================
FilingType n Judgment ConcludedBy
0 Garnishment 813 Other Settlement/Nonsuit/Vol. Dismissal
... (101 more lines truncated)
Thinking...
Fascinating findings emerging. Let me run the final analysis phase to develop the leads.
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis_phase3.py
File content
#!/usr/bin/env python3
# /// script
# dependencies = ["duckdb", "pandas"]
# ///
"""Phase 3: Lead development - deep dives on strongest signals."""
import duckdb
con = duckdb.connect()
BASE = "datasets/va-courts"
circuit_q = f"SELECT * FROM read_csv_auto('{BASE}/circuit_civil_*_anon_00.csv', filename=true, union_by_name=true)"
district_q = f"SELECT * FROM read_csv_auto('{BASE}/district_civil_*/*.csv', filename=true, union_by_name=true)"
UVA_FILTER_DISTRICT = """(
lower(Plaintiff1DBATA) LIKE '%university of virginia%'
OR lower(Plaintiff1DBATA) LIKE '%uva medical%'
OR lower(Plaintiff1DBATA) LIKE '%uva culpeper%'
OR (lower(Plaintiff1DBATA) LIKE '%uva %' AND lower(Plaintiff1DBATA) NOT LIKE '%uva police%' AND lower(Plaintiff1DBATA) NOT LIKE '%/uva p%')
)"""
# ============================================================
# 1. UVA GARNISHING ITS OWN EMPLOYEES
# ============================================================
print("=" * 80)
print("1. UVA GARNISHING ITS OWN EMPLOYEES / AFFILIATES")
print("=" * 80)
print(con.sql(f"""
SELECT Garnishee, count(*) as n
FROM ({district_q})
WHERE {UVA_FILTER_DISTRICT}
AND CaseType = 'Garnishment'
AND (lower(Garnishee) LIKE '%univ%virginia%'
OR lower(Garnishee) LIKE '%uva%'
OR lower(Garnishee) LIKE '%blue ridge%hosp%'
OR lower(Garnishee) LIKE '%albemarle%')
GROUP BY 1 ORDER BY 2 DESC
""").fetchdf().to_string())
# ============================================================
# 2. GEOGRAPHIC REACH - suing people far from Charlottesville
# ============================================================
print("\n" + "=" * 80)
print("2. DEFENDANTS FROM OUTSIDE CENTRAL VA (Warrant in Debt only)")
print("=" * 80)
# Extract state from address
print(con.sql(f"""
SELECT
count(*) as total_with_address,
count(*) FILTER (WHERE Defendant1Address NOT LIKE '% VA %' AND Defendant1Address NOT LIKE '% VA%') as out_of_state,
round(100.0 * count(*) FILTE...
Output
File created successfully at: /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/analysis_phase3.py
uv run outputs/va-courts/analysis_phase3.py 2>&1
Output
Installed 5 packages in 86ms
================================================================================
1. UVA GARNISHING ITS OWN EMPLOYEES / AFFILIATES
================================================================================
Garnishee n
0 UVA MEDICAL CENTER 327
1 UNIV VA & BLUE RIDGE HOSP 154
2 COUNTY OF ALBEMARLE 101
3 FLUVANNA COUNTY PUBLIC 27
4 UVA & BLUE RIDGE HOSPITAL 26
5 UVA DARDEN SCHOOL 15
6 FLUVANNA COUNTY PUBLIC SCHOOL 14
7 HISTORIC HOTELS OF ALBEMARLE 13
8 FLUVANNA CORRECTIONAL CENTER 12
9 UVA HEALTHSOUTH 9
10 UVA HEALTH SERVICES FOUND 9
11 FLUVANNA PUBLIC SCHOOL 8
12 FLUVANNA CORRECTIONAL CTR 7
13 UVA COMMUNITY CREDIT UNION 5
14 UNIVERSITY OF VIRGINIA 4
15 HISTORIC HOTELS OF ALBEMARLE L 4
16 COUNTY OF FLUVANNA 4
17 ALBEMARLE HEATING & AIR 4
18 MOLLY MAID OF ALBEMARLE 4
19 UVA PHYSICIANS GROUP 4
20 UVA HEALTH SERVICES FOUNDATION 3
21 ALBEMARLE BAKING CO INC 3
22 FAMILY MEDICINE OF ALBEMARLE I 3
23 ALBEMARLE HOSPITALITY INC 3
24 COMM OF VA/FLUVANNA COR 3
25 UVA HEALTH SERVICES FOUND INC 2
26 ALBEMARLE HEATING & AIR INC 2
27 UVA DARDEN SCHOOL FOUNDAT 2
28 FLUVANNA CO PUBLIC SCHOO 2
29 FLUVANNA CO PUB SCHL 2
30 THE MILLER SCHOOL OF ALBEMARLE 2
31 UVA COMM CREDIT UNION 2
32 ALBEMARLE DERMATOLOGY 1
33 UVA DARDEN BLVD 1
34 ALBEMARLE CO SERVICE 1
35 UVA COLONIAL RD 1
36 UNIVERSITY OF VIRGINIA MED CNT 1
37 ALBEMARLE HOUSING 1
38 COMM VA FLUVANNA CORR 1
39 ALBEMARLE ARTHRITIS ASSOC 1
40 UVA HEALTSOUTH 1
41 CHARLOTTERSVILLE & ALBEMARLE 1
42 UVA MEDICAL CTR 1
43 NOVANT HEALTH UVA CULPEPER MED 1
44 SERVPRO OF ALBEMARLE CO INC 1
45 UNIVA VA & BLUE RIDGE HOSP 1
================================================================================
2. DEFENDANTS FROM OUTSIDE CENTRAL VA (Warrant in Debt only)
================================================================================
total_with_address out_of_state pct_out_of_state
0 28694 1891 6.59
Out-of-state defendants by state:
state n
0 WV 740
1 NC 146
2 FL 86
3 MD 82
4 TN 78
5 TX 49
6 NY 48
7 PA 40
8 GA 38
9 SC 33
10 NJ 30
11 CA 24
12 OH 19
13 KY 17
14 AL 16
15 DC 13
16 MS 12
17 MI 12
18 IL 11
19 MO 11
================================================================================
3. THE 2015 DROP - Monthly breakdown 2013-2016
================================================================================
month cases warrants garnishments
0 2013-01-01 962 565 395
1 2013-02-01 1154 852 299
2 2013-03-01 906 599 306
3 2013-04-01 978 589 387
4 2013-05-01 835 606 228
5 2013-06-01 720 522 197
6 2013-07-01 875 569 305
7 2013-08-01 1113 837 276
8 2013-09-01 748 499 246
9 2013-10-01 1228 950 277
10 2013-11-01 684 443 241
11 2013-12-01 1457 1154 302
12 2014-01-01 1231 790 441
13 2014-02-01 621 503 117
14 2014-03-01 559 302 254
15 2014-04-01 705 483 221
16 2014-05-01 603 411 192
17 2014-06-01 824 412 412
18 2014-07-01 942 843 98
19 2014-08-01 748 500 246
20 2014-09-01 533 407 122
21 2014-10-01 753 478 275
22 2014-11-01 459 251 207
23 2014-12-01 335 7 327
24 2015-01-01 267 1 264
25 2015-02-01 215 0 212
26 2015-03-01 265 19 245
27 2015-04-01 95 10 83
28 2015-05-01 182 6 176
29 2015-06-01 157 2 155
30 2015-07-01 136 0 136
31 2015-08-01 61 0 61
32 2015-09-01 133 4 128
33 2015-10-01 98 0 98
34 2015-11-01 40 9 31
35 2015-12-01 99 5 94
36 2016-01-01 65 9 55
37 2016-02-01 67 28 39
38 2016-03-01 83 39 43
39 2016-04-01 263 200 63
40 2016-05-01 232 178 54
41 2016-06-01 339 237 101
42 2016-07-01 315 229 85
43 2016-08-01 351 263 87
44 2016-09-01 376 297 79
45 2016-10-01 401 290 110
46 2016-11-01 273 127 145
47 2016-12-01 437 309 127
================================================================================
4. TOP HOSPITAL SYSTEMS BY YEAR (Warrant in Debt only)
================================================================================
yr system cases
0 2012 UVA Health 7849
1 2012 MCV/VCU Health 7385
2 2012 Inova Health 4653
3 2012 Carilion 2456
4 2012 Martinsville/Henry Co 1556
5 2012 Valley Health 375
6 2012 Sentara 48
7 2012 Southside Regional 1
8 2013 MCV/VCU Health 8450
9 2013 UVA Health 8185
10 2013 Inova Health 5177
11 2013 Carilion 2623
12 2013 Martinsville/Henry Co 2090
13 2013 Valley Health 573
14 2013 Sentara 482
15 2013 Southside Regional 328
16 2014 MCV/VCU Health 8741
17 2014 Inova Health 5783
18 2014 UVA Health 5384
19 2014 Martinsville/Henry Co 2934
20 2014 Carilion 1892
21 2014 Southside Regional 716
22 2014 Valley Health 396
23 2014 Sentara 376
24 2015 MCV/VCU Health 9584
25 2015 Inova Health 5996
26 2015 Martinsville/Henry Co 2247
27 2015 Carilion 1528
28 2015 Southside Regional 921
29 2015 Valley Health 736
30 2015 Sentara 543
31 2015 UVA Health 56
32 2016 MCV/VCU Health 8637
33 2016 Inova Health 7996
34 2016 UVA Health 2206
35 2016 Southside Regional 1339
36 2016 Carilion 1187
37 2016 Martinsville/Henry Co 1163
38 2016 Valley Health 536
39 2016 Sentara 483
40 2017 MCV/VCU Health 8378
41 2017 Inova Health 8025
42 2017 UVA Health 2664
43 2017 Southside Regional 2296
44 2017 Carilion 1471
45 2017 Sentara 674
46 2017 Martinsville/Henry Co 337
47 2017 Valley Health 307
48 2018 Inova Health 6785
49 2018 MCV/VCU Health 5071
50 2018 UVA Health 1707
51 2018 Southside Regional 1502
52 2018 Carilion 1239
53 2018 Valley Health 721
54 2018 Sentara 422
55 2018 Martinsville/Henry Co 1
================================================================================
5. TOTAL DOLLARS SOUGHT BY UVA (ALL YEARS)
================================================================================
total_cases cases_with_amount total_principal_sought total_principal_won avg_principal median_principal p25 p75 p90 p95
0 28703 19364 39676003.82 39622098.03 2048.96 1022.36 506.4 2121.77 4424.56 7754.93
================================================================================
6. SMALL DEBT LAWSUITS BY UVA (under $500)
================================================================================
yr total_warrant_cases under_200 under_500 pct_under_500
0 2007 1 0 0 NaN
1 2010 1 0 0 NaN
2 2011 647 5 96 23.94
3 2012 7849 101 1784 33.15
4 2013 8185 112 1775 32.41
5 2014 5387 46 976 28.01
6 2015 56 0 0 0.00
7 2016 2206 1 33 2.14
8 2017 2664 0 9 0.49
9 2018 1707 0 4 0.33
================================================================================
7. REPEAT DEFENDANTS (same address sued multiple times by UVA)
================================================================================
Defendant1Address times_sued total_principal first_suit last_suit case_types
0 CHARLOTTESVILLE VA 22901 2549 1912563.42 2011-07-13 2018-10-30 [Garnishment, Warrant In Debt]
1 CHARLOTTESVILLE VA 22903 2517 1631305.10 2011-07-19 2018-10-30 [Warrant In Debt, Garnishment]
2 CHARLOTTESVILLE VA 22902 1912 1475369.62 2011-07-19 2018-10-30 [Garnishment, Interrogatory/Judge, Warrant In Debt]
3 CULPEPER VA 22701 1400 1076046.82 2011-07-13 2018-11-09 [Warrant In Debt, Garnishment]
4 LOUISA VA 23093 1358 1154335.20 2011-07-14 2018-10-30 [Warrant In Debt, Garnishment]
5 WAYNESBORO VA 22980 1258 936279.19 2011-07-29 2018-10-30 [Garnishment, Warrant In Debt]
6 PALMYRA VA 22963 1073 819872.62 2011-07-26 2018-11-16 [Garnishment, Warrant In Debt]
7 ORANGE VA 22960 1021 743137.92 2011-03-03 2018-11-16 [Warrant In Debt, Garnishment]
8 STAUNTON VA 24401 914 605700.14 2011-07-25 2018-10-30 [Garnishment, Warrant In Debt]
9 GORDONSVILLE VA 22942 844 666283.84 2011-07-19 2018-12-07 [Warrant In Debt, Garnishment]
10 SCOTTSVILLE VA 24590 827 655769.79 2011-07-19 2018-10-30 [Warrant In Debt, Garnishment]
11 RUCKERSVILLE VA 22968 760 528542.64 2011-06-10 2018-10-30 [Garnishment, Warrant In Debt]
12 CHARLOTTESVILLE VA 22911 756 502493.77 2011-08-12 2018-10-30 [Warrant In Debt, Garnishment]
13 MINERAL VA 23117 625 490379.82 2011-08-12 2018-10-23 [Warrant In Debt, Garnishment]
14 STUARTS DRAFT VA 24477 512 279650.35 2011-07-14 2018-10-30 [Warrant In Debt, Garnishment]
15 STANARDSVILLE VA 22973 483 399553.90 2011-07-19 2018-10-23 [Garnishment, Warrant In Debt]
16 DILLWYN VA 23936 393 356623.15 2011-07-26 2018-10-30 [Garnishment, Warrant In Debt]
17 CROZET VA 22932 369 350021.42 2011-07-25 2018-10-30 [Warrant In Debt, Garnishment]
18 HARRISONBURG VA 22802 343 243545.48 2011-07-26 2018-10-05 [Garnishment, Warrant In Debt]
19 MADISON VA 22727 342 246855.30 2011-07-15 2018-10-15 [Garnishment, Warrant In Debt]
20 BARBOURSVILLE VA 22923 339 226404.72 2011-09-16 2018-10-29 [Garnishment, Warrant In Debt]
21 LYNCHBURG VA 24502 336 276881.21 2011-08-12 2018-10-30 [Warrant In Debt, Garnishment]
22 HARRISONBURG VA 22801 309 262691.21 2011-05-24 2018-10-12 [Garnishment, Warrant In Debt]
23 KESWICK VA 22947 303 221434.16 2011-07-25 2018-10-25 [Warrant In Debt, Garnishment]
24 LYNCHBURG VA 24501 299 267043.02 2011-07-29 2018-10-30 [Garnishment, Warrant In Debt]
25 AMHERST VA 24521 293 219433.49 2011-07-19 2018-10-30 [Warrant In Debt, Garnishment]
26 MADISON HEIGHTS VA 24572 276 207105.58 2011-08-16 2018-10-29 [Garnishment, Warrant In Debt]
27 ELKTON VA 22827 276 242673.52 2011-08-31 2018-10-23 [Warrant In Debt, Garnishment]
28 TROY VA 22974 271 202848.44 2011-07-29 2018-10-30 [Garnishment, Warrant In Debt]
29 AFTON VA 22920 250 185662.37 2011-06-10 2018-10-30 [Warrant In Debt, Garnishment]
Repeat defendant summary:
unique_defendants sued_2_plus sued_3_plus sued_5_plus sued_10_plus pct_repeat
0 2464 1192 867 622 403 48.38
================================================================================
8. UVA AS SHARE OF FIPS 3 (ALBEMARLE) DISTRICT COURT CASELOAD
================================================================================
yr total_fips3_cases uva_cases uva_pct_of_court
0 2006 1 0 0.00
1 2007 1 1 100.00
2 2008 1 0 0.00
3 2009 3 0 0.00
4 2010 6 1 16.67
5 2011 2759 1706 61.83
6 2012 16103 10932 67.89
7 2013 17713 11660 65.83
8 2014 13512 8310 61.50
9 2015 6802 1746 25.67
10 2016 9030 3196 35.39
11 2017 10904 4146 38.02
12 2018 7351 2734 37.19
================================================================================
9. HOSPITAL SYSTEM COMPARISON - amounts and outcomes
================================================================================
system total_cases avg_principal median_principal total_principal win_rate_pct dismiss_rate_pct
0 MCV/VCU Health 57655 1607.40 758.00 82064285.67 88.78 5.34
1 UVA Health 28700 2048.84 1022.31 39671719.02 67.44 22.13
2 Inova Fairfax 22564 2315.16 901.40 28701031.61 54.84 26.01
3 Martinsville/Henry 10360 2930.94 1994.39 26601214.74 87.61 0.12
4 Carilion Roanoke 8865 4641.58 2000.27 29590103.40 71.90 0.35
5 Southside Regional 7103 2608.00 1024.59 16099164.31 87.06 11.59
================================================================================
10. UVA GARNISHMENT TARGETS BY EMPLOYER TYPE
================================================================================
Garnishee n
0 WAL MART ASSOCIATES INC 386
1 UVA MEDICAL CENTER 327
2 COMMONWEALTH OF VIRGINIA 241
3 UNIV VA & BLUE RIDGE HOSP 154
4 PUBLIC PARTNERSHIPS LLC 151
5 PUBLIC PARTNERSHIP LLC 140
6 CROTHALL HEALTHCARE INC 101
7 COUNTY OF ALBEMARLE 101
8 CROTHALL HEALTHCARE 94
9 WAL-MART ASSOC INC 88
10 ARAMARK CAMPUS LLC 83
11 CITY OF CHARLOTTESVILLE 81
... (61 more lines truncated)
Thinking...
Now let me compile the tipsheet with all findings.
/Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/tipsheet.md
File content
# Tipsheet: UVA Health's Aggressive Patient Debt Litigation Machine
## Source Material
- **Circuit court civil cases** (2012–2018): 7 CSV files, 404,874 total rows. Contains plaintiff/defendant names, attorneys, filing types, judgment outcomes.
- **District court civil cases** (2012–2018): 23 CSV files across 7 year-directories, 5,172,251 total rows. Contains case types, dollar amounts (principal, costs, attorney fees), plaintiff/defendant names and addresses, garnishment details.
- **Analysis date**: March 2026
- **Coverage**: All files examined. UVA Health cases identified via plaintiff name matching across all name variants (over 30 distinct spellings found). FIPS code 3 (Albemarle County) confirmed as the primary filing jurisdiction.
- **Limitations**: Data is anonymized (no individual defendant names). Defendant addresses are present but without names, limiting individual case-tracing. Data ends in 2018. No information on the underlying medical services or patient demographics.
## Summary of Findings
UVA Health was one of Virginia's most prolific medical debt litigants from 2011–2018, filing over **44,000 district court cases** (including ~28,700 warrant-in-debt suits and ~15,700 garnishments) seeking approximately **$40 million** from patients. At its peak in 2012–2013, UVA's lawsuits constituted nearly **68% of all civil cases** in the Albemarle County district court. The hospital sued patients for debts as small as **$13.59**, routinely garnished wages from **low-wage workers** at employers like Walmart and Food Lion, and even **garnished its own employees' wages** over 500 times. A dramatic near-total halt in new warrant-in-debt filings in 2015 — dropping from ~8,000/year to just 56 — followed by a partial resumption with added attorney fees, suggests a deliberate policy shift that warrants investigation.
## Leads
### Lead 1: UVA Health Dominated Its Local Court System
**Signal strength**: Strong
**Evidence**: In the Albemarle County General District ...
Output
File created successfully at: /Users/nrh146/Documents/agentic-investigation-newsworthiness-dataonly/outputs/va-courts/tipsheet.md
The tipsheet is saved at outputs/va-courts/tipsheet.md. Here's a summary of the strongest leads:
Lead 1 (Strong): UVA dominated its local court. At peak, UVA lawsuits were 68% of all civil cases in Albemarle County district court. The court was essentially a debt collection pipeline for the hospital.
Lead 2 (Strong): Lawsuits over tiny debts. UVA won judgments for amounts as low as $13.59. About a third of 2012–2013 cases were under $500.
Lead 3 (Strong): UVA garnished its own employees' wages — over 550 times. The hospital was simultaneously employer and debt collector, garnishing paychecks from its own medical center workers, Darden School staff, and affiliates.
Lead 4 (Strong): Garnishments targeted low-wage workers. Walmart (539), Food Lion, Kroger, fast-food workers, home health aides, and janitorial staff were the top targets.
Lead 5 (Strong): A mysterious near-total halt in 2015. Warrant-in-debt filings dropped from ~8,000/year to just 56 in all of 2015, then resumed at lower volume — but with added attorney fees (~15% surcharge). Something triggered a deliberate policy shift.
Lead 6 (Moderate): High dismissal rate. 22% of UVA cases were dismissed vs. 5% for MCV/VCU Health and <1% for Carilion, suggesting aggressive filing against people who couldn't be served or whose debts shouldn't have been litigated.
Lead 7 (Moderate): Concentrated community impact. Towns like Palmyra (pop. ~100) had over 1,000 UVA lawsuits filed against residents.
Lead 8 (Preliminary): Cross-state pursuit. 1,891 cases against out-of-state defendants, including 740 in West Virginia.
All analysis scripts are saved in outputs/va-courts/ for reproducibility. Note that Kaiser Health News published a major investigation of UVA patient lawsuits in 2019 — this data predates and would corroborate that reporting.