Skip to content

s3ak6i-dev/HOO

Repository files navigation

HOO — Household Operations Platform

"Run your home together." A voice-first household coordination app for dual-income Indian couples — built to make invisible mental load visible, shareable, and fair.

Status Platform Stack License


Table of Contents


What is HOO?

HOO (short for Household Operations Orchestrator) is a mobile-first platform that helps dual-income couples coordinate household responsibilities without nagging, mental fatigue, or one partner silently carrying the load.

⚠️ HOO is NOT a dating app. It's built for couples who already live together and need a better system for running their shared life — groceries, appointments, chores, finances, kids, family events, and everything in between.

The product is built around two AI mascots:

  • Ollie 🐙 — the organized one. Handles task capture, reminders, and scheduling.
  • Opal 🐙 — the insightful one. Surfaces balance insights and gentle, non-judgmental nudges.

(They're octopi, not owls — eight arms for juggling many responsibilities at once.)


Why HOO Exists

Household management research consistently shows one partner — usually women — carries a disproportionate, invisible mental load: remembering appointments, anticipating needs, coordinating help, tracking what's run out. This labor is real, exhausting, and rarely visible to the other partner.

HOO's mission is to:

  1. Make the load visible — a dashboard that shows who's carrying what, not just a shared to-do list.
  2. Reduce friction in capture — speak a task naturally instead of opening an app and typing into fields.
  3. Preserve context — a task isn't just "buy milk," it's why, when, and any preferences that matter.
  4. Encourage balance, not guilt — insights and nudges are supportive and judgment-free (the No-Nag principle — see Privacy & Data Principles).
  5. Speak the target audience's language — literally. English, Hindi, and Hinglish voice capture, and India-specific life events (festivals, household help, wedding season) built in from day one.

Core Features

Feature Description
🎙️ Voice-First Capture Tap-to-record, speak naturally ("Kal subah doodh lana hai"), AI transcribes (Whisper) and parses into structured task fields (GPT).
🔄 Partner Sync Real-time task sharing, delegation, and negotiation between partners via Supabase Realtime.
📊 Mental Load Dashboard Visual balance meter, task distribution by category, and trends — celebrates 50/50 balance instead of shaming imbalance.
🧠 Context Preservation Tasks carry full context (notes, due dates, recurrence, priority, category) — not just a bare title.
🔁 Recurring Tasks & Automation RFC-5545 (RRULE)-based daily/weekly/monthly recurrence with automatic instance generation via pg_cron, skip/edit-this-vs-all-future support, and timezone-safe DST handling.
📈 Insights & Analytics Pre-computed daily analytics snapshots, AI-generated pattern insights, burnout-risk indicator (framed positively), and category-level trend charts (Victory Native).
🔔 Daily Briefings Morning briefing (today's priorities + partner status) and evening handoff (what partner accomplished) — delivered via push notification, not from the partner directly.
🤝 Partner Invitations Invite via email, SMS, or shareable link; invites expire after 7 days.
🇮🇳 India-First Design Hindi/Hinglish support, festival reminders, household-help scheduling, family-event coordination — on the roadmap beyond MVP.
🔒 No Ads, Ever Subscription-only business model — your household data is never monetized via advertising.

Brand Identity

Color Hex Usage
Deep Purple #6B46C1 Primary brand color, recurring-task UI
Warm Coral #F56565 Accents, notifications
Soft Gold #ECC94B Achievements, highlights
Lavender #9F7AEA Secondary, backgrounds
Cream #FFFAF0 Background

Brand voice: warm but efficient, supportive (never judgmental), uses "we" language, culturally aware of Indian family dynamics, light humor when appropriate. Full guidance lives in Documenation/brand-strategy.md and Documenation/mascot-design-guide.md.


Tech Stack

Layer Technology Version
Mobile/Web Framework Expo (React Native) ~54.0
UI Library React / React Native 19.1 / 0.81.5
Routing expo-router (file-based, typed routes) ~6.0
State Management Zustand ^5.0
Backend Supabase (Postgres, Auth, Realtime, Edge Functions, pg_cron)
Voice Transcription OpenAI Whisper via openai SDK ^6.16
NLP / Task Parsing OpenAI GPT-4o-mini (parsing) / GPT-4o (insights)
Charts Victory Native (+ @shopify/react-native-skia) ^41.20
Recurrence Engine rrule (RFC-5545) + date-fns-tz ^2.8 / ^3.2
Local Storage @react-native-async-storage/async-storage ^2.2
Notifications expo-notifications (Firebase Cloud Messaging under the hood) ~0.32
Language TypeScript (strict mode) ~5.9

Architecture Overview

┌─────────────────────────┐        ┌──────────────────────────┐
│   Expo App (RN + Web)    │        │        Supabase           │
│                          │        │                           │
│  app/        (routes)    │◄──────►│  Postgres (RLS-protected) │
│  components/ (UI)        │ REST + │  Auth (email/password)    │
│  lib/stores/ (Zustand)   │ Realtime│  Realtime (task sync)     │
│  lib/services/ (parsing, │ Edge   │  Edge Functions:          │
│   transcription, invite) │ Funcs  │   - generate-recurring-   │
│  lib/hooks/ (voice rec.) │        │     tasks                 │
└──────────┬───────────────┘        │   - generate-analytics-   │
           │                        │     snapshot               │
           │ Whisper + GPT calls    │  pg_cron (scheduled jobs) │
           ▼                        └──────────────────────────┘
┌─────────────────────────┐
│        OpenAI API        │
│  Whisper (transcription)  │
│  GPT-4o-mini (task parse) │
│  GPT-4o (insight gen.)    │
└─────────────────────────┘

Key architectural decisions:

  • Voice pipeline: audio is recorded on-device (expo-audio), sent to OpenAI Whisper for transcription, then the audio file is deleted immediately — only the transcript and parsed task are persisted.
  • Privacy-by-design: PII is stripped before any external API call (transcription/parsing).
  • Realtime-first: Supabase Realtime pushes task changes to both partners instantly — no manual refresh.
  • Pre-computed analytics: Rather than computing insights client-side on every load, a daily Edge Function (generate-analytics-snapshot) pre-computes metrics + AI insights and stores them in analytics_snapshots, scheduled via pg_cron at 1am IST. Falls back gracefully if OPENAI_API_KEY isn't configured (so local dev works without it).
  • Recurring tasks: modeled as a parent template + generated instances (industry-standard pattern), with an recurring_exceptions table for skip/edit overrides. Instances are generated server-side via Edge Function + pg_cron, with client-side generation as a fallback for availability.
  • No-Nag principle: all reminders/insights come from the system, never appear to come from the partner — and severity is framed supportively ("Worth Noting" instead of "Medium", an inverted/positive-framed burnout-risk meter, etc.).

Project Structure

HOO/
├── app/                          # expo-router file-based routes
│   ├── (auth)/                   # Sign-in, sign-up, forgot-password
│   ├── (tabs)/                   # Main tab navigator: index, tasks, insights, settings
│   ├── invite/[code].tsx         # Partner invite acceptance flow
│   ├── partner/invite.tsx        # Send a partner invite
│   ├── task/new.tsx              # Create task
│   ├── task/voice.tsx            # Voice capture flow
│   ├── task/[id].tsx             # Task detail / edit
│   ├── modal.tsx, +html.tsx, +not-found.tsx, _layout.tsx
│
├── components/
│   ├── charts/                   # BalanceTrendChart, CategoryTrendChart (Victory Native)
│   ├── insights/                 # InsightCard, BurnoutRiskCard, RecommendationCard, CategoryDeepDive
│   └── __tests__/                # Component tests
│
├── lib/
│   ├── hooks/useVoiceRecorder.ts # Recording state machine for voice capture
│   ├── services/
│   │   ├── transcription.ts      # Whisper API integration
│   │   ├── taskParser.ts         # GPT-based NL → structured task parsing
│   │   └── invitation.ts         # Partner invite generation/validation
│   ├── stores/                   # Zustand stores: auth, household, partner, tasks,
│   │                              # recurring, insights
│   ├── types/                    # database.types.ts (Supabase generated), recurring.types.ts
│   ├── utils/rrule.ts             # RRULE pattern helpers
│   ├── openai.ts                 # OpenAI client init
│   └── supabase.ts                # Supabase client (SSR-safe, AsyncStorage-backed)
│
├── supabase/
│   ├── migrations/                # 00001 → 00008: schema, tasks, partners, recurring, analytics
│   └── functions/
│       ├── generate-recurring-tasks/    # Edge Function: creates upcoming task instances
│       └── generate-analytics-snapshot/ # Edge Function: computes daily insights snapshot
│
├── constants/Colors.ts            # Brand color tokens (light/dark)
├── assets/                        # Icons, splash, images
├── .planning/                     # GSD planning artifacts (PROJECT.md, ROADMAP.md, STATE.md, research/)
├── docs/ , Documenation/          # Product docs: PRD, specs, brand strategy, competitive analysis, etc.
├── app.config.js                  # Expo app config (name, icon, plugins, env passthrough)
├── babel.config.js, tsconfig.json # `@/*` path alias → project root
├── CLAUDE.md                       # Project brief used as AI agent context
├── GSD.md, RALPH.md, IMPLEMENTATION-PLAN.md  # Workflow / planning reference docs
└── package.json

Note: an AgentRank/ directory is present in this working copy but is an independent, unrelated nested git repository (own .git, own package.json) — it is not part of the HOO codebase and is untracked by HOO's own .gitignore/git history.


Database Schema

Schema evolves through sequential SQL migrations in supabase/migrations/:

Migration Adds
00001_initial_schema.sql households, profiles tables; RLS; auto-create-profile-on-signup trigger
00002_tasks.sql tasks table (title, description, category, priority, assignee, due date, status)
00003_partner_system.sql Partner linking, invitation tables/flow
00005_recurring_tasks.sql Recurring columns on tasks (is_recurring, recurring_pattern, parent_task_id, archived_at), recurring_exceptions table
00006_pg_cron_recurring.sql Scheduled job: hourly recurring-instance generation
00007_analytics_snapshots.sql analytics_snapshots table (JSONB metrics/category_breakdown/trends/ai_insights), RLS (read: authenticated, write: service_role only)
00008_pg_cron_analytics.sql Scheduled job: daily analytics snapshot generation (1am IST)

All tables use Row Level Security (RLS) — household members can only read/write their own household's data; analytics writes are restricted to the service_role (Edge Functions only, never client-writable).

Core entities, conceptually:

User (auth.users + profiles)
├── id, email, full_name, avatar_url, household_id

Household
├── id, name, owner_id

Task
├── id, title, description, category, priority
├── assigned_to, created_by, due_date, status
├── is_recurring, recurring_pattern (RRULE/JSONB), parent_task_id, archived_at

RecurringException
├── task_id, occurrence_date, action (skip/edit), overrides

AnalyticsSnapshot
├── household_id, date
├── metrics (JSONB), category_breakdown (JSONB)
├── trends (JSONB), ai_insights (JSONB)

Getting Started

Prerequisites

  • Node.js 18+ and npm
  • Expo CLI (installed automatically via npx expo)
  • A Supabase project (free tier is fine) — for Auth, Postgres, Realtime, Edge Functions
  • An OpenAI API key — for voice transcription (Whisper) and task/insight parsing (GPT)
  • For native builds: Xcode (iOS) and/or Android Studio (Android), or use Expo Go for quick testing
  • (Optional) Supabase CLI for running migrations and Edge Functions locally

Installation

git clone https://github.com/s3ak6i-dev/HOO.git
cd HOO
npm install

Environment Variables

Create a .env file in the project root (already covered by .gitignore — never commit this):

# Supabase
EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key

# OpenAI (client-side parsing / transcription calls)
EXPO_PUBLIC_OPENAI_API_KEY=sk-...

Edge Functions (generate-analytics-snapshot, generate-recurring-tasks) additionally require OPENAI_API_KEY to be set as a Supabase secret (supabase secrets set OPENAI_API_KEY=sk-...) — they run server-side and degrade gracefully (skip AI insight generation) if it's missing.

Running the App

npm start          # Expo dev server — scan QR with Expo Go, or press i/a for simulator
npm run ios         # Run on iOS simulator
npm run android     # Run on Android emulator
npm run web         # Run in browser via react-native-web

Supabase Setup

  1. Create a project at supabase.com.
  2. Apply migrations in order (via Supabase Studio SQL editor, or the CLI):
    supabase link --project-ref your-project-ref
    supabase db push     # applies everything in supabase/migrations/
  3. Deploy Edge Functions:
    supabase functions deploy generate-recurring-tasks
    supabase functions deploy generate-analytics-snapshot
  4. Set Edge Function secrets:
    supabase secrets set OPENAI_API_KEY=sk-...
  5. Confirm pg_cron jobs from migrations 00006 and 00008 are scheduled (Supabase Studio → Database → Cron Jobs).

Available Scripts

Command Description
npm start Start Expo dev server
npm run ios Build & run on iOS simulator
npm run android Build & run on Android emulator
npm run web Run in browser (Metro web bundler)

Development Workflow (GSD)

This project is developed using GSD (Get Shit Done) — a structured, multi-agent planning workflow for Claude Code that fights "context rot" via fresh contexts per phase and atomic commits.

/gsd:new-project        # questions → research → requirements → roadmap
/gsd:plan-phase <N>      # research + plan + verify a phase
/gsd:execute-phase <N>   # execute the phase in parallel waves
/gsd:progress            # check current status

All planning artifacts live in .planning/:

  • PROJECT.md — project vision
  • REQUIREMENTS.md — 63 scoped requirements (REQ-IDs)
  • ROADMAP.md — phase breakdown & progress
  • STATE.md — decisions, blockers, session continuity
  • research/ — stack, features, architecture, pitfalls research
  • phases/ — per-phase plans and verification reports

See GSD.md for the full command reference, and RALPH.md for additional workflow notes.


Project Status / Roadmap

Current state: v2.0 Post-MVP — all 9 planned phases complete (63/63 requirements, 100%).

Phase Name Status
1 Foundation & Auth ✅ Complete
2 Core Task System ✅ Complete
3 Voice Capture & AI ✅ Complete
4 Partner System ✅ Complete
5 Dashboard & Views ✅ Complete
6 Notifications & Briefings ✅ Complete
7 Load Balance & Polish ✅ Complete
8 Recurring Tasks & Automation ✅ Complete
9 Insights & Analytics Dashboard ✅ Complete

Open items before launch (from .planning/STATE.md):

  • Provision production Supabase project + API keys
  • Provision production OpenAI API key
  • Set up App Store / Play Store developer accounts
  • Set up Expo account for EAS Build
  • No-P0-bugs pass + beta test with 5–10 households

Post-MVP / future scope (see Documenation/mvp-scope.md):

  • Hindi / Hinglish voice support
  • Grocery list with store-aisle-optimized "store mode"
  • Calendar integration
  • "Power Hour" focused-completion mode
  • Festival reminders & Hindu calendar integration
  • Household help (servant/maid) scheduling & payment tracking
  • UPI expense tracking

Privacy & Data Principles

  1. No ads, ever — subscription-only business model.
  2. Voice deleted immediately — audio is transcribed then discarded; only text/structured data persists.
  3. PII stripped before external calls — no raw personal data sent to OpenAI beyond what's needed for parsing.
  4. User owns their data — export and delete anytime.
  5. DPDP compliant — designed around India's Digital Personal Data Protection Act.
  6. Minimal collection — only what's functionally necessary.
  7. No-Nag system — all reminders/insights come from the app, never attributed to or sent "on behalf of" a partner; tone is always supportive, never guilt-inducing (e.g., severity labels read "Worth Noting" rather than "Medium", burnout-risk meters are framed positively).

Full details: Documenation/privacy-strategy.md.


Testing

npm test     # not yet wired up — see components/__tests__ for existing test scaffolding

Component tests currently live under components/__tests__/ (e.g. StyledText-test.js) using react-test-renderer. Test coverage is an open area — contributions adding RTL/Jest coverage for stores (lib/stores/) and services (lib/services/) are welcome.


Contributing

This is currently a closed, single-maintainer project under active development via the GSD workflow. If you're collaborating:

  1. Branch off main — don't commit directly to it.
  2. Follow the existing atomic-commit convention (one logical change per commit, descriptive type(scope): message style — see git log for examples like feat(09-05): enhance Insights screen with AI-powered components).
  3. Run migrations locally before submitting schema changes; never edit a previously-applied migration file — add a new one.
  4. Respect the No-Nag and privacy principles above in any user-facing copy or notification logic.

Documentation Index

Doc Purpose
CLAUDE.md Full project brief (AI agent context)
Documenation/PRD.md Product Requirements Document
Documenation/problem-statement.md Problem definition
Documenation/proposed-solution.md Solution overview
Documenation/feature-specification.md Detailed feature specs
Documenation/technical-specification.md Tech architecture detail
Documenation/user-flows.md User journey maps
Documenation/wireframes.md UI wireframes
Documenation/brand-strategy.md Brand positioning
Documenation/mascot-design-guide.md Ollie & Opal specs
Documenation/mvp-scope.md MVP & post-MVP scope
Documenation/privacy-strategy.md Privacy framework
Documenation/competitive-analysis.md Market analysis
Documenation/financial-projections.md Financial model
Documenation/investor-pitch-guide.md Pitch materials
Documenation/marketing-strategy.md Go-to-market plan
Documenation/social-media-content-engine.md Content strategy
Documenation/asset-design-prompts.md AI image-generation prompts for assets
Documenation/brand-moodboards.md Visual mood references
docs/brand-palettes Color palette assets
IMPLEMENTATION-PLAN.md 150-task implementation checklist
GSD.md GSD workflow command reference
RALPH.md Additional workflow reference
.planning/ Live planning state: requirements, roadmap, research, phase plans

This README reflects the repository state as of Phase 9 completion (v2.0 Post-MVP milestone, January 2026).

About

HOO (short for Household Operations Orchestrator) is a mobile-first platform that helps dual-income couples coordinate household responsibilities without nagging, mental fatigue, or one partner silently carrying the load.

Topics

Resources

Stars

Watchers

Forks

Contributors