Case Study
Appliance broke? Get it to the people who can actually fix it.
This is the story of a pivot. v1 is a working React prototype of a complaint-fighting agent, running on staged data with no live model calls. v2 is the direction I moved it in, written up as a PRD and a clickable 12-screen design. Targets below are hypotheses for a pilot, not measured results. View the repo → · Read the PRD → · Click through the live prototype →
The first version of Resolved was built on a simple asymmetry: companies put AI chatbots in front of their support queues, and customers get stalled by them. So I built the customer an agent of their own. Drop in a screenshot of a bad order, and it pulls out the facts, picks a tone and a legal hook, drafts a complaint in four formats (letter, tweet, call script, court filing), and walks you up a five-rung escalation ladder from the vendor to the consumer commission.
It demoed well. Then I tried to answer the questions an investor or a hiring manager would ask, and it fell apart in a few specific places.
| Question | v1: complaint agent | v2: after-sales bridge |
|---|---|---|
| Who pays? | Consumers, who rarely pay to complain | Brands, for a console with structured tickets and defect signals |
| Can it be copied? | Easily. Any chatbot can write a complaint letter | Gets harder with use: catalog, channels, issue lists and response times accumulate |
| Stance toward companies | Adversarial, so no brand would ever work with it | Cooperative first; escalation stays as the backstop |
| Legal risk | Drafts legal claims. My own prototype cited the wrong section of the Act | Mostly routing and filled-in facts; citations come from a small reviewed library |
| AI cost per user | High: the model drives every step | Low: AI only where text input is genuinely worse |
The bigger shift was noticing what people actually need for appliances. Not a sharper letter. They need to reach the brand's authorized service, with the model number and invoice in hand, before they give up and call the local repair shop.
Every durable goes through the same after-sales loop: raise a ticket, a technician visits, diagnosis, part, repair, close. A washer, a TV, an AC and a trimmer all look the same from here. The front of that loop is where it breaks.
| Friction | Root cause | What happens |
|---|---|---|
| Finding the right channel | Each brand mixes toll-free numbers, WhatsApp bots, apps, email and service centres differently | People give up before the first message |
| The first request is incomplete | Nobody knows where the serial number is or whether they're in warranty | The first reply asks for details and a week is gone |
| Out of warranty, people go informal | Local shops and app-based repair services are quicker to book than the authorized route | Non-original parts, voided panel cover, no service record. The brand loses the customer and the defect signal |
| Stalls have no next step | Few people know brands have nodal or grievance officers, or that the National Consumer Helpline exists | The case quietly dies |
People don't skip authorized service because they prefer the shortcut. They skip it because the authorized path is hard to start. India's Right to Repair Portal is already pushing brands to publish service and warranty information; Resolved turns that into a flow someone can finish in two minutes.
A. LG washer, not draining, in warranty.
B. Samsung TV, no picture but sound works, out of warranty. This is the journey that matters most, because it's exactly where people drift to unverified repair. The app suggests a 30-second torch test (a faint image usually points to the backlight), then shows an honest comparison of authorized service and a local shop: genuine parts and a written quote on one side, speed on the other, with the risk to any remaining panel cover spelled out. The authorized request goes out on WhatsApp with the test photo attached.
The cold-start problem kills most two-sided marketplaces, so v2 doesn't need brands on day one. Every brand is listed using public channels. Brands that opt in get the request first:
The pitch to a brand in month 4 is one slide of their own data. Brands pay for the console; consumers never pay.
The most important AI decision in v2 was taking the model out of most of the flow. Routing and legal wording have to be right every time, and templates are free to run.
| Step | Approach | Why |
|---|---|---|
| Brand, model, issue | Structured catalog | Faster than typing and never wrong |
| Drafting the request | Templates with filled fields, four tones | Predictable and reviewable; no invented clauses |
| Legal citations | Small reviewed library | v1 taught me what a confidently wrong section number looks like |
| Reading a sticker or invoice photo | Vision model | The one step where typing is genuinely worse |
| "Something else" problems | Small model maps free text to a known issue | Keeps the catalog clean |
| Defect clusters for brands | Grouping over structured requests | Works because the inputs are structured to begin with |
| Test case | Expected | What a bad result reveals |
|---|---|---|
| Clear sticker, good light | All fields, high confidence | Missing a visible field means the reading itself is weak, not the prompt |
| Serial number half covered by a fold | Serial null, the rest filled, medium confidence | A completed serial means the model is pattern-matching instead of reading |
| Invoice brand differs from sticker brand | Both kept; user asked to confirm | Silently picking one hides a possible wrong-product claim |
| Photo of the TV screen, not a label | not_a_label true, all null | Invented details from an irrelevant photo |
Whatever the model returns, the user confirms the facts on screen before anything is drafted. Low confidence opens the field for editing instead of filling it.
North star: cases resolved within 7 days, because both sides want it to go up.
| Metric | Pilot target | Guardrail |
|---|---|---|
| Cases resolved within 7 days | 50% | Confirmed by the user, not the brand |
| Time from open to request sent | Under 2 minutes | Drop-off at the issue picker under 20% |
| Requests sent with full facts | 90% | |
| Out-of-warranty users choosing authorized repair | Track from day one | Never hide the local option |
| Partner brands at 6 months | 2 | Partner SLA met 80% of the time |
"Why not just Google the service number?" The answer has to be what Google doesn't give you: a complete request on the first try, a tracker, the next step when it stalls, and your appliances' warranties in one place.
People need it rarely. Appliances break once or twice a year. "My appliances" (invoices, warranty dates, service history) and a reminder a month before a warranty ends give people a reason to open the app between breakdowns.
The catalog goes stale. Issues are defined per category, not per model, and launch is limited to 5 brands and 4 categories. Users can flag a dead channel.
Getting found. People search at the moment something breaks. A page per model and fault ("Samsung TV no picture, sound works") is probably the cheapest way to acquire users.
Brands may resist the badge. That's fine. Listed brands still get requests; the badge is only for partners who want the credit.