Get clarity before
you you call a pro
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 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.

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.
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.

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 fieldsFrom 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
DIY path
Pro path
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 — 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
/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.
- The `leads` table is the only edge between homeowners and providers — problem + neighborhood only, no contact fields.
- Contact data lives in gated auth relations, reachable only after homeowner consent.
- EXIF/GPS stripped on upload so photos cannot leak location.
- The foreign-key boundary is the trust boundary — enforced in 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
Data
AI
Storage & hosting
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.
Explore other case studies

Bookee
AI receptionist that researches leads, calls them back, and books meetings — from one form submission.

Oakling
Family activity app — from research to App Store launch.

FurPass
Native iOS app that turns your pet's care routine into a secure, shareable guide for whoever's watching them. Pivoted from PetCard after App Store rejection.

Kamper
Building a waitlist before Kickstarter — for an outdoor kitchen I designed ten years ago.

NFCtree
A social-sharing product that happens to use NFC — tap a chip, open your whole link tree in any browser.

Bookee
AI receptionist that researches leads, calls them back, and books meetings — from one form submission.

Oakling
Family activity app — from research to App Store launch.

FurPass
Native iOS app that turns your pet's care routine into a secure, shareable guide for whoever's watching them. Pivoted from PetCard after App Store rejection.

Kamper
Building a waitlist before Kickstarter — for an outdoor kitchen I designed ten years ago.

NFCtree
A social-sharing product that happens to use NFC — tap a chip, open your whole link tree in any browser.

