Get clarity before
you call a pro

The project started when I saw first time homeowners hit small problems with no clear next move. A drip, a strange sound, or a failed outlet can feel like a major emergency before you even know what you are looking at.

I used V0 and AWS to build the first working version quickly, then plugged in Gemini to read the photo, assess urgency, estimate a fair range, and recommend either a product path for DIY or a nearby pro.

Odosan then tracks progress in My home so the work does not disappear after one repair. The goal is to help people diagnose, decide, and follow through with confidence.

Role
Product Designer & Builder
Date
2026
Format
PWA · phone-first

Six-step homeowner journey

From diagnosing a problem to saving it, revisiting details, and keeping home records in one place.

Odosan diagnose intake — browse home problem categories
Odosan diagnose intake with preset problem filter selected
Odosan follow-up clarifying questions before final diagnosis
Odosan My home showing saved diagnoses
Odosan seasonal detail page with what to watch out for
Odosan home documents upload and saved notes view

Odosan starts with regular maintenance for first-time owners

Odosan is built for people who just bought their first home and don't yet have a mental model for upkeep. I mapped the full ownership arc — buy, move in, maintain, upgrade, budget — and kept coming back to the same column: regular maintenance. That's the space we're targeting — what to fix, when it matters, and who to call when you don't have inherited home knowledge.

Odosan research — Buy a home, from searching through closing

Know what's wrong — and whether you can fix it yourself.

Take a photo, add a quick note. Odosan tells you what it is, what it should cost, and whether it's a quick DIY or worth calling a pro.

  • Snap + a sentence — diagnosis and fair price for your area
  • DIY or pro? Straight answer on which way costs less
  • Save to My Home — a record that grows over time

How the app connects to its data

The H0 hackathon required a real AWS database — not a mock. That constraint became the spine of the build: Next.js PWA on Vercel, server API routes as the trust boundary, and Amazon Aurora PostgreSQL as the centerpiece every persistent piece of state flows through.

Sensitive logic runs server-side — secrets never reach the browser. Bedrock handles diagnose and nameplate OCR. S3 stores photos durably. Aurora holds providers, leads, quotes, home profiles, and auth — with contact data gated behind consent, enforced as a foreign-key boundary inside Postgres.

Client

Homeowner & Provider

installable PWA · Next.js

Trust boundary

V0 app shell + server API routes

all secrets stay server-side

AI

Amazon Bedrock

diagnose · nameplate OCR

Storage

Amazon S3

nameplate + home documents

AWS database

Amazon Aurora PostgreSQL

Serverless v2 · us-west-2

Persistent state

App data in Aurora

providers · leads · quotes · homes · auth

Privacy gate

contacts · gated

identity · phone · email — released on consent

Commerce

Amazon Associates

DIY parts to buy

The privacy promise is a foreign-key boundary.

A provider reaches a homeowner's contact info only after consent, enforced inside the database, not just in policy.

Vercel trust boundary → read/write → Aurora. Bedrock for diagnose/OCR, S3 for photos, Amazon Associates for DIY parts.

Four AWS services power Odosan

Submission answer for H0: Amazon Aurora PostgreSQL Serverless v2 — cluster odosan-aurora, engine 16.4, region us-west-2, fronted by RDS Proxy and Secrets Manager.

Aurora PostgreSQL

Primary data store — providers, leads, quotes, home profiles, auth tables.

Amazon Bedrock

Claude Sonnet 4.6 for nameplate OCR and diagnose reasoning.

Amazon S3

Durable nameplate photo storage (`odosan-nameplates`).

RDS Proxy + Secrets + IAM

Production connection pooling and scoped credentials.

Amazon RDS console showing the odosan-aurora Aurora PostgreSQL cluster
H0 proof artifact — Aurora PostgreSQL Serverless v2 cluster odosan-aurora, engine 16.4, us-west-2.

Privacy enforced in the schema, not in policy

The red box in the architecture diagram is the point: contacts (identity, phone, email) live in a gated relation. A provider reaches them only via a consented lead row — not a service-layer check, not an admin override. The database is the trust boundary.

providers ──────┬─ provider_users        (provider account claim)
                └─ provider_areas
leads ──────────┬─ lead_quotes            (estimate ranges per provider)
                └─ homeowner_user_id      (linked only after consented flow)
home records ───┬─ user_home_briefs       (saved diagnoses)
                └─ user_home_systems      (nameplates + scanned systems)
journey data ───┬─ homeowner_homes
                └─ home_profiles · territory_summaries
auth tables:      user · session · account · verification
privacy rule:     provider view contains problem + neighborhood, never raw contact fields

From photo to fix — with a fork that respects the homeowner

Open Odosan, snap a photo, get a confident AI diagnosis with clarifying questions when the image alone isn't enough. Then fork: DIY parts or matched East Bay pros — anonymous until connect. Either way, the brief saves to My home.

Intake

Trigger

Something breaks

planned

Trigger

Seasonal reminder

Open app

Open Odosan

Intake

Photo + preset filters

AI result

AI diagnosis

issue · price · urgency · confidence

Clarify

Follow-up questions

Decision

DIY or hire a pro?

DIY path

DIY

See parts to buy

affiliate-tagged links

DIY

Fix it yourself

guided next steps

saved

Record

Auto-saved to My Home

status: open / planned / fixed

Pro path

Pro

Match local pros

trade + service area match

Pro

Compare estimates

still private

Pro

Consent → connect

saved

Record

Saved to My Home

diagnosis + quote history

From problem to fix — DIY path, pro path, and a My Home record that grows over time.

Four surfaces that carry the story

Tabs on the left, one surface at a time — live PWA preview beside the copy for diagnose, results, nameplate scan, and My home.

Odosan diagnose intake with preset problem filter selected

/diagnose — step-by-step home triage

Start with a photo, category, and neighborhood. Odosan asks follow-up questions when needed, then returns issue, urgency, fair price, and the recommended next step.

  • Guided flow: browse issue type, then refine with context
  • Follow-up questions improve accuracy before recommendations
  • Clear output: urgency, fair range, and next action

Trust is the pitch — and the schema makes it impossible to violate

A provider can reach a homeowner's contact info only after the homeowner consents — enforced inside Aurora, not just in policy.

Typical marketplace

Share contact info upfront. Get three wildly different quotes for the same job. Hope someone shows up.

Odosan

Stay anonymous until you choose a pro. Pre-diagnosed job card. Fair price range before anyone calls you back.

Free for homeowners — aligned on both revenue paths

Finding fee

When Odosan matches a homeowner to a pro and they connect, the provider pays a small fee for a pre-qualified, ready-to-hire lead.

Amazon affiliate

When a homeowner buys recommended DIY parts, Odosan earns a small commission. The homeowner pays nothing extra. Both paths reward the right answer, not the expensive one.

What ships in production

Frontend

Next.js 16React 19TypeScriptTailwind v4installable PWAbetter-auth

Data

Aurora PostgreSQL Serverless v2pg via RDS ProxyKysely for auth integration

AI

Bedrock Claude Sonnet 4.6 (primary)Gemini 2.5 Pro (automatic fallback)

Storage & hosting

S3 nameplate photosVercel serverless API routesFluid Compute

Try Odosan live

Something's wrong at home, and you shouldn't have to carry that worry alone

What's next

H0 proved the stack. Next is polish, provider partnerships, and the proactive home-health layer — reminders before systems fail, not after.

Proactive home health

Use home profiles + territory data for gentle reminders before systems age out.

Maintenance timeline

Visual 30 / 90 / 365-day view of what's due based on system ages.

Masked contact relay

Twilio proxy numbers so neither side shares real phones until consent.

Live provider data

Replace seed listings with canonical Google Business Profile listings.