The home dad you can call

Snap a photo. Odosan tells you what it is, what it should cost, and whether it's a quick DIY or worth calling a pro — so you spend the least to keep your home healthy.

Two threads converged: a home-maintenance product I'd been shaping for first-time homeowners, and the H0 Hackathon's requirement to ship on Vercel with a real AWS database.

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

Five screens that carry the product

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
The buy phase — anxiety peaks at mortgage pre-approval and making an offer.

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

Vercel — server API routes

secrets never reach the browser

AI

Amazon Bedrock

diagnose · nameplate OCR

Storage

Amazon S3

diagnose + nameplate photos

AWS database

Amazon Aurora PostgreSQL

Serverless v2 · us-west-2

Persistent state

App data in Aurora

providers · leads · quotes · homes · users

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    (claim a business)
            └─ provider_areas
homes ──────┬─ home_systems
            └─ home_profiles · territory_summaries
leads:        problem + neighborhood ONLY — no contact fields
quotes:       lead_id → provider_id (estimate range)
contacts:     released only on homeowner consent
user/session/account/verification (better-auth)
user_home_briefs · user_home_systems (per-user saved record)

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

My Home reminder

Open app

Open Odosan

Intake

Snap a photo

AI result

AI diagnosis

issue · price · urgency

Clarify

Quick questions

Decision

DIY or hire a pro?

DIY path · free fix

DIY

See parts to buy

on Amazon

DIY

Fix it yourself

save labor cost

in progress

Record

Saved to My Home

maintenance journey

Pro path · stay private

Pro

Match local pros

2–3 vetted

Pro

Compare quotes

stay anonymous

Pro

Consent → connect

in progress

Record

Saved to My Home

maintenance journey

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.

/diagnose — AI home triage

Photo + category + neighborhood → Bedrock returns issue, severity, scope, fair price, DIY vs. pro, confidence score, and clarifying questions when needed.

  • Category chips and neighborhood set context before the model runs
  • Clarifying questions when the photo alone isn't enough
  • Fair price range and severity before you choose a path

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.