Records go back to the 1950s, and some are on paper. A service line is the pipe from the water main to a home. Many are of unknown material, and some are lead. A dig costs hundreds to thousands of dollars. That is a general range, not an EPA number, and it varies by utility.
Digging is not the only way to find out. Utilities also review records and, where their state allows it, use statistics or predictions.
EPA estimates 4 million lead service lines in the US: 3 million reported, and about 1 million predicted among lines reported as unknown. 81% of community water systems serve 3,300 people or fewer.
The 2027 and 2037 dates come from the Lead and Copper Rule Improvements: a full inventory by November 1, 2027, and most lead lines replaced within about ten years after. The rule is being challenged in court, so the dates could move.
3 months, inside a May to September 2026 engagement
Status
Handed off, not shipped
Original engagement work
Made for 120Water.
Portfolio reconstruction
Rebuilt afterward, with demo data.
Later proposed improvement
Fixed or proposed after handoff.
What I did
I owned the design, the research, the interactions, the iteration and the UX handoff. Engineering and data judged what was feasible.
Would you trust this table?
The original table, with demo data. Portfolio reconstructionA closer look: the tag, and the material on file.
Its data isn’t verified or cleaned up. Would you spend taxpayer money on it?
The job was to earn that trust.
Why a tag isn’t enough.
A tag says what the model thinks, not how sure anyone is.
What 120Water’s model said
Likely lead
Inconclusive
N/A
What it left out
How old is the record?
Who recorded it?
How sure is anyone?
First, I learned how utilities work.
Water-quality specialists, consulting for 120Water.
Old, messy records
Show the evidence
Tight budgets
Strict rules
The table left three questions open.
What do I have?What can the model call?What do I fix?
I put the model in front of users.
Hidden, people second-guess the data. Shown, it builds trust.
HiddenPeople second-guess it
In front of usersPeople can check it
One failed check locks the whole planner.
The locked planner
Click ReviewFix one of the four checks: street names.
Click Approve AllThese highway addresses can’t match a standard street name, so a person approves them.
Click Apply ChangesNothing reaches the inventory until you apply.
The planner is still locked9 street names are still flagged, so all four checks still need attention. All or nothing: the gate I’d now open step by step.
LiveFixed after handoffThis check no longer says complete while records are flagged.
Why the planner waits
A result is only as clean as the data under it, so Data Quality comes first. The planner stays locked until the checks pass, then it ranks the unknown lines that are worth a dig.
We did not measure an accuracy gain. This is the design argument, and it was handed off, not shipped.
40+ prototype versions, built with Claude.
Figma and pen and paper
A working prototype
Final screens and design system
Throughoutengineeringsalescustomer experience
My earliest Figma layouts. Portfolio reconstruction
Data Quality stayed visible in every plan.
I pushed for
Show the data problems.
Engineering’s concern
It could cost a lot to run.
Basic names three groups. Premium shows every score.
Inventory: Basic and Premium
BasicPremium
Drag the handleWipe between the Basic plan and the Premium plan.
ScreensPortfolio copy, demo data
Reading the scores
Below 40Likely non-lead
40 to 69Inconclusive: the model can’t call it
70 and upLikely lead
A score is not a verified probability.
The full story
Company experts, product leadership, engineering, data specialists and customer-facing teams reviewed the design. The tradeoff was customer value and transparency against engineering complexity and running cost. Data Quality stayed visible in every plan.
Engineering described one way to deliver it: run the checks on everything once, then only on records that change.
Our design lead showed me that dig costs vary by utility, so any dollar figure is wrong for someone. The early scores card carried an estimated saving with a disclaimer. People anchor on a dollar figure, and he was right. That is why the card counts digs avoided.
Each plan answers a different question. Basic says where to send crews first, in three plain words you can click to filter. Premium is for people who defend a classification to a regulator, so it shows the full distribution and digs avoided. I designed the charts.
Digs avoided counts the unknown lines scored outside the middle range: 2,847 of 10,295 in this demo data. It is not a saving.
Six recorded sessions on a working prototype.
I wrote the script and ran several sessions myself.
Two utility customers, four water-industry experts
Could they understand the predictions?
Could they fix their records?
Did they know what to do next?
atharvadnyanmote.com/predictive-modeling
Start with the service linesThe Unknown slice is what the model scores.
Data Quality checks the recordsAll four checks need attention, each with a status and a count of flagged lines.
Click Review Data QualityThe planner is locked until the records pass their checks.
Click Street Name ValidationEach check opens its own guided fix.
Click Approve AllHighway route addresses cannot be matched to a standard street name, so a person approves them together.
Click Apply ChangesNothing is saved to the inventory until you apply.
Tap the menuOn a small screen the side menu opens from here.
Click the gearThese settings are only for the prototype. They switch the plan and the planner stage.
Click PremiumThe locked planner card is replaced by the Premium view, and the list shows a Lead Score.
Fixed after handoffTotals: the donut, the bars and both counts add up to the same 10,295 unknown lines, and the table says it lists a 200-line sample of 34,199.
Fixed after handoffScore ranges: below 40, 40 to 69 and 70 and up, the same in the chart, the table, the filters and the line drawer. Basic uses the same three words in the chart and the table.
Fixed after handoffStreet Name Validation, Update Year Built and Schools and Childcare say what is still flagged instead of complete.
Fixed after handoffAccept All fills blank years only, and a bulk button never overwrites a recorded year or class.
Fixed after handoffAccepting the rest of the 78-line cluster needs 25 lines checked first.
Fixed after handoffThe Basic line drawer shows words, never a percentage. Premium calls it a score.
How the sessions ran
Moderated, task-based usability sessions on a working prototype, with some questions about how people work today. Seven people took part in six sessions, so the count is sessions, not people. Roles only: two utility customers and four water-industry experts.
Six sessions can show patterns and failures in the design: where people misread staged and saved, hesitated on bulk actions or got lost in a long list. They can’t show adoption or statistical significance, and they didn’t prove the model is right. Six was how far we could take it, because utility and industry customers are hard to get.
What else six sessions taught, and what each changed
Words carry risk
Basic uses words instead of scores.
“Now what?”
Plan Next Batch. Setup starts from capacity.
Bulk trust is earned
Accept All stays, for low-risk changes.
People think on a map
The map stays beside the list.
What else people said
I’ve done the first 10, they look good, you know, accept the rest. I trust you.Internal product manager
Six-digit coordinates mean nothing to most people.Utility GIS and operations lead
The padlock over a blur almost feels like an upsell.Design lead
I think that makes it palatable.Utility GIS and operations lead
What the sessions changed.
My call
Every suggestion needs a yes.
CostSlower cleanup for big backlogs.
Update Year Built
Click Accept AllEvery safe suggestion goes through in one click.
Click Accept or RejectA line recorded as lead never changes in bulk. A person decides.
Click Next: Review & Apply ChangesEvery accepted change is listed before anything is written.
Click Apply ChangesOnly now do the changes reach the inventory.
LiveFixed after handoffAccept All now fills blank years only.
Why Accept All stays
Nobody used Accept All, even where it was allowed, so its use became the trust metric I’d track. A utility GIS and operations lead wanted to be granular first. He said he’d use Accept All once corrections were right over 95% of the time. That was his own threshold, not a measured accuracy.
I kept it because trust grows, some utilities will have hundreds of flagged lines, and we’d already limited it to low-risk changes. The guardrail since June 1: the three-step Year Built review, and Accept All only for filling blank years.
Fixed after handoffIn the first build, three bulk buttons, Newer Year, Older Year and Schools, still overwrote recorded values, which broke that rule. Now only blank years and blank classes are filled in bulk.
My call
A 78-line cluster gets batches, not a stepper.
CostSlower than automation, on purpose.
78 lines on one point
See the stack on the mapAll 78 lines share one point. The green dots are suggested locations.
Click AcceptIt takes the suggested point for that line. Each one is a guess, so check it first.
Watch the resolved countIt starts at 0 of 78. Accepting the rest unlocks once 25 are checked.
Click the next page arrowThe list comes a page at a time.
LiveFixed after handoffAccepting the rest now needs 25 lines checked first.
Why batches
I rejected a stepper, and accepting every suggested point. In the session I said: someone has to step through all 78 of them. Geocoding had put all 78 on one default coordinate, so nobody knew where any of them were.
Legitimate clusters, like apartment buildings, are filtered out first. Before the side panel, a full-screen modal covered the map. Our design lead questioned whether bulk approval should exist at all.
Shared
The operator chooses the strategy.
Find lead fast, or sample at random.
Build a verification plan
Click Generate PlanThe plan starts at 100 lines a month. Change that first if your team can verify more.
Click RemoveThe plan is a draft. Drop any line you do not want.
Click Next: Program DetailsNext you name the program and set its dates.
Type a program nameThen pick a start and an end date. Assigning the crew comes after.
Live
Why the operator picks
The model learns from every verified line. I designed the plan that turns that into field work. The operator picks a strategy.
Utilities don’t share one goal. Some want lead found fast. Some have to show a regulator their inventory holds up, and that takes a random sample as well as the likely-lead lines. Engineering pushed back: the ranking lived in the back end, and every re-rank costs compute.
What I’d change: a program is either targeted or random. A utility usually needs both in the same month, so I’d let them split capacity inside one program.
I designed how a user chooses a strategy. Michigan’s guidance has utilities dig a statistically sound sample of unknown lines (EDF, 2021 (opens in a new tab)).
From a prediction to Monday.
Operators asked: the AI made predictions, so now what?
Inventory
Data quality
Verified records
Predictions
A verification plan
Field assignments
Progress
Keep verifying. New records can inform later predictions.
The last mile
Whether predictions improve was not measured. What I designed is the operator-facing planning: setting a capacity, choosing a strategy, reading the plan, and seeing progress.
Basic answers where to send crews first, in plain words. Premium shows the full distribution for people defending a classification. The chart for each tier is mine.
The last mile is still open: crews won’t log in, so the plan has to leave the product.
What I’d do differently.
Test the whole workflow with technicians.
I never tested what crews do with the plan.
Decide early what each record must show.
Not every old record had a full history.
Unlock the planner in steps.
One failed check blocked every prediction.
More on each
Went wrong. I designed how a verification plan is made, but I didn’t validate what happens once it reaches the crew: assignments, exports, field reporting, and results coming back. Next time I’d involve field technicians earlier and test the whole workflow.
The prototype covers building the plan, assigning lines to a crew and tracking progress. This gap was found at handoff, not in production: nothing shipped, so nothing failed in the field. A utility program lead said field crews probably won’t be in PWS much, meaning 120Water’s platform.
Went wrong. I separated recorded materials from AI predictions and designed source details, but not every legacy record had a complete history. Next time I’d define what each record must show earlier: source, method, date and history.
In the prototype, a record shows a basis for each part, such as Visual inspection (2019), or Not yet verified, as free text rather than a structured field. A tester whose records go back to the 1950s asked where a classification came from, and the table had no answer.
Went wrong. The planner stays locked until every check passes: one failed check blocks every prediction. A utility program lead read it as an error. We fixed how it reads, not that it is all or nothing.
Portfolio reconstruction My own Figma file: designs I transferred and rebuilt, with sample data. The affinity map is recreated. The production files are 120Water’s.
What the system covers
Foundations, icons, buttons and links, form controls, badges and status, navigation, cards and widgets, tables, flyouts, modals and feedback, and record rows and details. High-fidelity screens with a clear information hierarchy, and consistent patterns for status, badges, tables and flyouts.
Lead red means lead, in every theme. Yellow already meant galvanized, so the middle bar went neutral. Basic and Premium differ in presentation, not in pattern. My drawer and flyout patterns were chosen in the final review.
The production design system is 120Water’s, and I don’t claim it. This page is in my own file.
Handed off, not shipped.
Interactive prototype
Figma designs
Interaction specification
Research findings
Open questions
No adoption numbers. No savings claimed.
“intuitive to the nth degree in comparison to what we’ve had historically.”
Internal modeling expert
“something we desperately, desperately could use.”
Client success manager
What I’d measure next
These are reactions in sessions, not adoption: six sessions on demo data, no field use. The interaction specification says how it behaves, and the open questions are all written down, now with 120Water’s leadership.
What I’d measure next, none of it achieved: how accurately operators tell recorded from predicted information; the correctness and speed of reviewing suggested changes; time to create a useful verification plan; field verification completion; correction, reversal and error rates; and appropriate reliance on the model’s recommendations, which means neither blind trust nor blanket rejection.
Our BRD says the manual service has typically classified about 10 to 40 percent of unknowns without a dig. That is a range for the manual service, not a result for this product.
Who made which call.
My call
Showing the model,Three trust questions,Accept All,78-line batches,One chart per plan
Changed my mind
Digs, not dollars,Schools and Childcare as its own check
Shared
Planner lock,Data Quality in every plan
Lost
Setup off the dashboard,A 2 by 2 widget grid
More calls, with dates
My callShow the utility side and the customer side of each line separately, because one combined label can hide where the lead is.
My callRenamed the model’s gray area to Requires verification (late May).
My callThe teaser pattern for customers without Premium, because some customers are sensitive to upsell.
My callThe drawer and flyout patterns, kept after a final review against another prototype (Sept 23).
My callConsistency with Sample Manager’s design language, and a column chooser to fit the score into a busy table (May 18).
My callDropped the single accuracy number. An engineering leader, on a bare 97 percent: A regular user is like, okay, what does that tell me? An operator decides about one line at a time.
Changed my mindSchools and Childcare as its own check. I questioned it first. Once I understood the rule, I defended it. The rule: utilities list the schools and child care facilities they serve and sample at least 20 percent of the elementary schools and child care facilities a year for five years (40 CFR 141.92 (opens in a new tab)).
LostA 2 by 2 widget grid for room and accessibility. The design went with one row of three (late May).
SharedLetting the operator choose the prioritization strategy, from a team brainstorm. Engineering pushed back on cost.