Compute: rows = 31 (header + 30 data). Duplicates: 1008 appears twice → drop 1. Excluded non-numeric: 1006 N/A, 1017 unknown, 1028 N/A → 3 excluded. Rows counted: 30-1-3=26. Parse amounts: strip $, commas. Negative = refund. Revenue by region & quarter: Texas: Q1: 1001 1240, 1003 312.50, 1009 -450, 1010 870.10, 1013 1580 → 1240+312.5-450+870.1+1580=3552.60. Q2: 1016 990, 1019 2075, 1022 845, 1024 1300, 1030 730.90 (1028 excluded) → 990+2075+845+1300+730.90=5940.90. Texas total 9493.50. California: Q1: 1004 1764, 1008 2310 (once), 1012 640, 1015 3050 → 7764.00. Q2: 1018 1420.50, 1021 1111.11, 1025 2940.40, 1027 1875.25 → 7347.26. Total 15111.26. Ohio: Q1: 1005 455, 1007 1102.25, 1011 1999.99, 1014 225.75 → 3782.99. Q2: 1020 760.25, 1023 -220, 1026 515, 1029 1660 → 2715.25. Total 6498.24. Grand: Q1=3552.60+7764.00+3782.99=15099.59. Q2=5940.90+7347.26+2715.25=16003.41. Grand=31103.00. Top region California $15,111.26. Build HTML with embedded CSV, JS parsing, SVG bars, pivot table, quality panel. Compute dynamically — fine, JS will compute same values. Write code: normalize region via map lowercase. Date parse: formats YYYY-MM-DD, M/D/YYYY, "Mon D, YYYY". Quarter from month. SVG bar chart scaled with max value. Keep simple but styled nicely.