📸
Reporting

Multiple ways to report infrastructure issues, designed for speed and accuracy.

Quick Report (10 seconds)

One-screen flow: pick a category, GPS auto-detects your location, snap a photo, select hazard level, submit. Designed for people who don't have time for forms.

Single-screen flow. expo-location high-accuracy GPS, expo-image-picker for camera, auto-triggers Claude Haiku vision analysis via Supabase Edge Function.

📋 Detailed Report (5 steps)

Full wizard: category selection, interactive map with draggable pin, photos/videos, adaptive severity assessment, review screen. For when you want to be thorough.

5-step wizard with MapView draggable Marker, expo-image-picker multi-select, adaptive severity dimensions per CategoryInfo.severityDimensions array.

🗣️ Voice Commands

Say "Report pothole" or "Fix this" to start a report hands-free. Uses native speech recognition — no internet required for the voice trigger.

expo-speech-recognition with configurable trigger phrases. On-device speech-to-text, keyword matching, auto-navigates to Report screen with prefilled category.

🗨️ Audio-Guided Mode

Fully conversational reporting for visually impaired users or hands-free situations. The app talks you through every step, listens to your responses, and submits without ever touching the screen.

AudioGuideSession state machine: idle → greeting → category → photo → severity → description → confirm → submit. Uses expo-speech TTS + expo-speech-recognition STT.

📍 GPS + Draggable Pin

Location auto-detected with high-accuracy GPS. Step 2 of the report shows an interactive map where you can drag the pin to the exact spot. Reverse geocoding fills in the address.

expo-location high-accuracy → react-native-maps MapView with draggable Marker → reverseGeocodeAsync for address resolution.

🤖 AI Photo Analysis

After you take a photo, AI (Claude Vision) automatically identifies the issue type, estimates severity, detects dimensions, and describes the damage. Auto-fills the report form with its suggestions.

Base64 image → Supabase Edge Function → Claude Haiku vision API. Returns JSON: category, confidence 0-1, size, hazard, dimensions, surface type, weather conditions.

📷 Smart Photo Coaching

Category-specific guidance overlaid on the camera: "Place a shoe next to it for scale. Photograph from 3 feet away. Include surrounding road surface." AI then scores photo quality.

Category-specific PhotoGuideline arrays. Post-capture assessPhotoQuality() scores based on AI confidence, category detection, and dimension estimation.

📳 Bump Detection

Accelerometer monitors for road impacts while driving. Uses rolling-window analysis to filter false positives (speed bumps, railroad crossings). Asks "Was that a pothole?" before creating a report.

expo-sensors Accelerometer at 10Hz. Rolling 10-reading window filters single jolts. Sustained threshold (1.5G × 3+ readings) + spike threshold (2.5G) triggers confirmation.

👤 Anonymous Reporting

No account required. Report without signing in. Your identity is never attached to anonymous reports — not even in our database.

Reports INSERT with user_id = NULL. RLS policy: user_id IS NULL OR auth.uid() = user_id. No session token required.

📶 Offline Mode

No signal? Reports queue locally and auto-submit when you reconnect. Works on subways, in rural areas, anywhere. Nothing is lost.

AsyncStorage JSON queue. expo-network monitors connectivity. processQueue() on foreground retries failed items. Offline reports persist across app restarts.

🏷️ 24 Categories

Potholes, streetlights, sidewalks, signage, drainage, graffiti, road debris, guardrails, crosswalks, traffic signals, needed traffic lights, water mains, sewers, bridges, fallen trees, snow/ice, accessibility issues, bike lanes, abandoned vehicles, illegal dumping, parking meters, parks/playgrounds, utility poles, and "other."

ReportCategory union type, 24 literals. CategoryInfo includes severityDimensions array defining applicable assessment axes per category.

📊 Adaptive Severity

Each category shows only relevant severity dimensions. Potholes get size + hazard. Streetlights get urgency + hazard. Graffiti gets condition only. No irrelevant questions.

CategoryInfo.severityDimensions: SeverityType[] controls which UI picker sections render. ReportSeverity stores nullable fields for non-applicable dimensions.
👥
Community Verification

Crowdsourced verification turns individual reports into undeniable community evidence.

3️⃣ Three-Report Threshold

When 3 unique people report the same issue (same category within 50 meters), it's marked "community-verified." This filters noise and confirms real problems.

🔔 Witness Network

When a dangerous hazard is reported, nearby users get a push: "Can you verify? Pothole 200m from you." If they're heading that way, one tap and a photo confirms it — often within minutes.

👍 Upvote & Confirm

Upvote = "this matters." Confirm = "I've seen this too." Both boost the report's priority. Both are tracked independently.

🔗 Duplicate Detection

If you're about to report something that already has 8 reports, the app shows you the existing cluster and asks "Add yours to this?" Saves time, boosts count faster.

📢 Community Campaigns

Create named campaigns: "Fix Elm Street." Set a goal, track progress, share on social media. Turn scattered complaints into organized collective action with momentum.

📨
Authority Escalation

Automatic, professional, documented communication with the right government authority.

🏛️ Auto Authority Identification

GPS boundary mapping + Census data identifies whether your report goes to the city, county, or state. 795 authorities pre-configured across 46 states, with routing polygons seeded from the US Census TIGER dataset.

📧 Auto Escalation (10 reports / 30 days)

When a cluster hits 10 reports over 30 days, a professional report is auto-emailed to the responsible authority with location, photos, community impact, and fiscal projections.

🔌 Direct 311 / SeeClickFix API

For cities with Open311 or SeeClickFix APIs (Boston, Cambridge, hundreds more), reports submit directly into their ticketing system. No email — real tickets with tracking numbers.

🔄 Bidirectional Status Sync

For API-connected cities, Fault Line pulls status updates back. When the city marks it "in progress" or "resolved" in their system, your app updates automatically.

🚨 Emergency Fast-Track

Reports rated "extremely dangerous" or "critical urgency" skip the normal threshold. They're flagged immediately and prioritized for escalation.

🗺️
Coverage

Where Fault Line routes reports into real municipal ticketing systems today — nationwide, growing, and honest about where we can't yet reach.

795
Authorities seeded
589
Active cities & towns
46
US states
584+
With Census boundary routing
CACalifornia56 cities

Alameda, Antioch, Burlingame, Chula Vista, Dublin, Elk Grove, Emeryville, Folsom, Foster City, Gilroy, Los Angeles, Menlo Park, Merced, Millbrae, Milpitas, Morgan Hill, Murrieta, Oakland, Paso Robles, Poway, San Bernardino, San Clemente, San Leandro, San Rafael, South San Francisco, St. Helena, Truckee, Tustin, Vallejo, Victorville, Visalia, Walnut Creek, Watsonville + 24 more

MAMassachusetts48 cities

Amesbury, Attleboro, Boston, Brockton, Cambridge, Chicopee, Fall River, Fitchburg, Foxborough, Framingham, Gloucester, Haverhill, Holyoke, Lawrence, Leominster, Lowell, Lynn, Malden, Marlborough, Medford, Methuen, Natick, Needham, New Bedford, Newburyport, Peabody, Pittsfield, Plymouth, Quincy, Revere, Salem, Somerville, Springfield, Taunton, Waltham, Watertown, Westfield, Weymouth, Worcester + 9 more

FLFlorida40 cities

Boca Raton, Clearwater, Daytona Beach, Fort Lauderdale, Fort Myers, Fort Pierce, Homestead, Key West, Largo, Orlando, Pembroke Pines, Pensacola, Pinellas Park, St. Petersburg, Stuart, Tamarac, Tarpon Springs, Venice, Winter Haven + 21 more

TXTexas34 cities

Abilene, Baytown, Beaumont, Cedar Park, College Station, Edinburg, Farmers Branch, Houston, Killeen, Lubbock, Mesquite, Midland, Odessa, Pasadena, Victoria + 19 more

WAWashington30 cities

Auburn, Bainbridge Island, Bellingham, Burien, Everett, Federal Way, Issaquah, Kent, Marysville, Mercer Island, Mukilteo, Puyallup, Renton, Sammamish, SeaTac, Shoreline, Tacoma, University Place + 12 more

GAGeorgia29 cities

Albany, Alpharetta, Brunswick, Decatur, Dunwoody, East Point, Kennesaw, Marietta, McDonough, Milton, Norcross, Smyrna, South Fulton, Stone Mountain, Valdosta + 14 more

ILIllinois26 cities

Algonquin, Aurora, Carbondale, Elk Grove Village, Geneva, Glenview, Lake Forest, Libertyville, Lombard, Mount Prospect, Oak Brook, Peoria, Rock Island, Schiller Park, Springfield + 11 more

OHOhio24 cities

Athens, Canton, Chillicothe, Cleveland Heights, Gahanna, Hamilton, Hilliard, Hudson, Lima, Lorain, Newark, Parma, Reynoldsburg, Toledo, Upper Arlington, Westerville, Youngstown + 7 more

MIMichigan19 cities

Ann Arbor, Bay City, Canton, Dearborn Heights, Detroit, Ferndale, Livonia, Muskegon, Portage, Sterling Heights, Westland, Ypsilanti + 7 more

CTConnecticut17 cities

Bridgeport, Danbury, Darien, Enfield, Hamden, Hartford, Meriden, Middletown, New Britain, New Haven, Norwalk, Stamford, Waterbury, West Hartford, Wethersfield, Wilton, New Milford

COColorado15 cities

Arvada, Aspen, Brighton, Colorado Springs, Commerce City, Durango, Erie, Greenwood Village, Littleton, Manitou Springs, Milliken, Montrose, Superior, Westminster, Windsor

INIndiana15 cities

Avon, Carmel, East Chicago, Elkhart, Fishers, Hammond, Huntington, Lafayette, New Haven, Plainfield, South Bend, West Lafayette + 3 more

UTUtah14 cities

Bluffdale, Draper, Farmington, Lehi, Murray, Provo, Salt Lake City, Sandy, Saratoga Springs, South Jordan, South Salt Lake, Spanish Fork, Syracuse, West Valley City

KSKansas12 cities

Derby, Hutchinson, Independence, Junction City, Lawrence, Manhattan, Mission Hills, Overland Park, Pittsburg, Shawnee, Topeka, Wichita

MNMinnesota12 cities

Blaine, Buffalo, Burnsville, Chanhassen, Eden Prairie, Edina, Mankato, Maple Grove, Minneapolis, Oakdale, Owatonna, Plymouth

NJNew Jersey12 cities

Ewing, Fairview, Jersey City, Kearny, Madison, Middletown, Newark, Paterson, Princeton, Summit, West Windsor, Westfield

AZArizona10 cities

Casa Grande, Chino Valley, Florence, Gilbert, Litchfield Park, Marana, Peoria, Queen Creek, Tucson, Yuma

NCNorth Carolina10 cities

Archdale, Burlington, Carolina Beach, Davidson, Eden, Fayetteville, Nags Head, Pineville, Raleigh, Wake Forest

NYNew York10 cities

Albany, DeWitt, Ithaca, Mount Vernon, New York, Newburgh, Peekskill, Schenectady, Southampton, Syracuse

TNTennessee10 cities

Clarksville, Goodlettsville, Hendersonville, Johnson City, Kingsport, Knoxville, Lakeland, Memphis, Mount Juliet, Smyrna

IAIowa9 cities

Ames, Bettendorf, Clinton, Coralville, Davenport, Mason City, Muscatine, Urbandale, West Des Moines

MOMissouri9 cities

Chesterfield, Columbia, Harrisonville, Hillsboro, Joplin, Lee's Summit, Parkville, Springfield, St. Joseph

NHNew Hampshire9 cities

Concord, Dover, Keene, Laconia, Lebanon, Manchester, Nashua, Portsmouth, Rochester

OKOklahoma9 cities

Bixby, Broken Arrow, Coweta, Duncan, Edmond, El Reno, Enid, Muskogee, Piedmont

ALAlabama8 cities

Alabaster, Albertville, Birmingham, Gadsden, Homewood, Huntsville, Northport, Tuscaloosa

RIRhode Island8 cities

Cranston, East Providence, Middletown, Newport, Pawtucket, Providence, Warwick, Woonsocket

SCSouth Carolina8 cities

Anderson, Beaufort, Bluffton, Hartsville, Hilton Head Island, Pendleton, Spartanburg, Summerville

WIWisconsin8 cities

Bayside, De Pere, Glendale, Greenfield, Mosinee, Oshkosh, Sheboygan, South Milwaukee

MEMaine7 cities

Auburn, Augusta, Bangor, Biddeford, Lewiston, Portland, South Portland

IDIdaho6 cities

Boise City, Eagle, Garden City, Kuna, Meridian, Pocatello

MDMaryland6 cities

Annapolis, Bel Air, Cheverly, College Park, Hyattsville, Laurel

NMNew Mexico6 cities

Albuquerque, Carlsbad, Gallup, Las Cruces, Rio Rancho, Santa Fe

PAPennsylvania6 cities

Bethlehem, Lancaster, Monroeville, Norristown, State College, Zelienople

VTVermont6 cities

Burlington, Colchester, Essex, Montpelier, Rutland, South Burlington

KYKentucky5 cities

Danville, Frankfort, Jeffersontown, Paducah, Winchester

OROregon5 cities

Ashland, Bend, Eugene, Newberg, Troutdale

VAVirginia5 cities

Danville, Herndon, Martinsville, Portsmouth, Vienna

ARArkansas4 cities

Fayetteville, Fort Smith, Maumelle, Russellville

HIHawaii4 cities

Kahului, Kihei, Lahaina, Wailuku

LALouisiana4 cities

Gretna, Lake Charles, New Orleans, Plaquemine

NVNevada4 cities

Boulder City, Henderson, Las Vegas, North Las Vegas

DEDelaware2 cities

Elsmere, Milford

NENebraska2 cities

La Vista, Lincoln

SDSouth Dakota2 cities

Brookings, Sioux Falls

WVWest Virginia2 cities

Huntington, Morgantown

MSMississippi1 city

Columbus

WYWyoming1 city

Cheyenne

Coming Soon

Nationwide expansion, on the record.

Chicago, San Francisco, Seattle, Austin, and Philadelphia run proprietary 311 platforms that don't expose public APIs — we're building a web-form-scraping worker to reach them. Boston's standalone Open311 endpoint is seeded and awaiting its API key. Additional direct-email DPW coverage is queued for under-served states, and a Census fuzzy-match pass will recover 50–70 deactivated unincorporated places.

See the full roadmap →
⚖️
Accountability & Legal

Tools that create real consequences for ignoring infrastructure problems.

📜 Legal Demand Letters

Auto-generates formal notices citing your state's specific statute (MA: M.G.L. c. 84 § 15, RI: R.I. Gen. Laws § 24-5-14, NH: RSA 231:90-92). Tracks statutory deadlines. Shareable.

🛡️ Insurance Claim Packager

One tap generates a complete evidence bundle: timestamped GPS data, photos, report timeline, authority notification proof, community verification count. Share directly with your insurance company.

💰 Fiscal Impact Projections

Shows authorities the math: "Fix this for $75 now, or face $12,000 in liability in 12 months." Includes deterioration curves, claim probability, and expected liability costs by category.

⏱️ Response Countdown Scoreboard

Public timer from the moment an authority is notified. Miss the deadline? Auto-notification to everyone who reported it. Milestones at 30, 60, and 90 days overdue.

🏗️ Contractor Accountability

Tracks repair quality by analyzing re-reports at resolved locations. If a pothole was "fixed" and reopens in 3 months, the contractor's failure rate is recorded and published.

🔍 Repair Quality Verification

After a fix, nearby users photograph the result. AI grades it: Excellent, Good, Adequate, Poor, Failed. "Poor" or "Failed" reopens the report automatically.

📸 Deterioration Timelapse

When the same spot is photographed over weeks/months, the app builds a visual timeline of neglect. Shareable proof that an issue worsened while being ignored.

🎥 Video Testimonials

Record a 15-second video about how the issue affects you. Attached to escalation emails because a face and a voice are harder to ignore than a spreadsheet.

📊
Data & Transparency

Public data that drives accountability and informs decisions.

🏆 Infrastructure Health Grades

Every city gets a live A+ to F grade based on report density, fix rate, response time, severity distribution, and repair recurrence. Public, shareable, updated in real-time.

😬 Cross-Municipal Shame Index

Comparative rankings between neighboring cities. "Your city: D+. Next town: B+." Competitive pressure between municipalities is the most powerful force for improvement.

🗳️ Election District Overlay

Maps reports to political districts using Census Bureau data. See which representatives' areas have the most unresolved issues. Free, no API key needed.

💵 Budget Transparency

Connects to municipal open data portals. "Your city allocated $4.2M for roads. $1.8M spent. 340 issues remain." Follow the money.

🔮 Predictive Analytics

Analyzes historical patterns, seasonal trends, and severity curves to predict where damage will occur. Generates pre-deployment reports so cities can fix proactively instead of reactively.

🛣️ Street Decay Profiles

Per-street condition grades with recurrence rates, seasonal patterns, and projected repair timelines. "Elm Street has a 78% probability of needing major repair within 12 months."

📰 Media & Journalist Pipeline

CSV data exports, authority performance reports, alert subscriptions. Give journalists the tools to cover infrastructure stories with real data.

💲 Cost Estimation

Every report shows an estimated repair cost. Aggregated per city. "Your city has $2.3M in deferred maintenance." Based on FHWA and ASCE data.

🎮
Engagement & Rewards

Incentives that keep communities engaged over the long haul.

🔥 Daily Streaks

Report something every day, build your streak. 7-day streak = 50 bonus points. 30-day streak = 200 points. Streaks show on your profile and the leaderboard.

🏅 Points & Badges

10 points per report, 15 with photo, 25 when your report gets resolved, 5 per streak day. Earn badges for milestones: first report, 10th report, 50th, first resolution, and more.

🏆 Leaderboards

Global, state, and city rankings. See who's making the biggest impact. Top contributors are featured in weekly community updates.

📰 Neighborhood Feed

Real-time activity near you: new reports, resolutions, milestones, campaigns. See your community in action.

Local Business Rewards

Local businesses sponsor rewards: "Report 10 issues, get a free coffee." Points redeem for real rewards. Business gets exposure, user gets rewarded, community wins.

📊 Weekly Digest

Every Sunday: how many reports in your area, how many resolved, which authorities responded. Stay informed without opening the app.

🧠
Intelligence

The app learns your patterns and surfaces the right information at the right time.

🚗 Commute Learning

Tracks your frequent locations (commute, neighborhood). When a pothole appears on your route: "The pothole on your morning commute needs 2 more reports for escalation."

⚠️ Proximity Danger Alerts

Approaching a known hazard? Vibrate + notification: "Caution: large pothole 200 feet ahead on your right." Passive safety from community data.

🔔 Smart Notifications

Not spam — context. "Your report was acknowledged." "3 more reports needed for escalation." "The city missed their deadline." Quiet hours respected.

🗺️ AR Overlay

Point your camera at the road. See floating markers showing nearby reports — color-coded by severity, showing distance and category. Tap any marker for details.

🗺️ Offline Maps

Cache map tiles for your area so the map works without cell service. Download from Profile → Offline Maps. Configurable zoom levels.

Accessibility & Language

Built for everyone, not just tech-savvy English speakers.

🔤 5 Languages

English, Spanish, Portuguese, Chinese, and Haitian Creole — the top languages spoken in MA, RI, and NH. Auto-detects device language. Switch anytime in settings.

Screen Reader Support

Every button, every label, every interaction has proper accessibility roles and labels. Tested with VoiceOver and TalkBack.

🔊 Audio-Guided Reporting

Complete voice-driven reporting flow: the app speaks to you, you speak back. Category, severity, photo, description, submission — zero screen touches required.

🔠 Dynamic Text Sizing

Respects your device's accessibility text size settings. Everything scales properly — no truncated text, no broken layouts.

🌓 High Contrast Mode

Enhanced contrast color palette for users with low vision. Larger touch targets. Reduce-motion support.