Skip to main content
DivWeaversStudio
Mobile product engineeringHabit Reflection and Reviewable Check-ins

Turning habit reflections into structured progress

Tare is a mobile habit reflection app that saves original check-ins, proposes structured fields for user review, and uses recorded history for progress views and insight paths.

Product engineering
RoleShashank Sangule · Founder & Lead Developer, DivWeavers
ProductMobile habit reflection · Reviewable AI-assisted check-ins
Two Tare app screens showing a habit overview and a reviewed check-in.

Product screenshots

Tare home screen with a synthetic morning walk habit and identity statement.
A habit begins with a clear identity anchor.
Tare check-in screen with a synthetic morning walk reflection.
Check-ins start in the user's own words.
Tare review screen with completion, mood, energy, and context fields.
Structured fields are proposed for review before saving.
Tare weekly report with synthetic narrative and next-week focus.
Weekly reports draw from saved check-ins.
Tare diary listing synthetic habit check-ins.
The original entries remain available in the diary.

Turning habit reflections into structured progress.

Tare is a mobile habit reflection app for habits to build or avoid. Identity-oriented onboarding leads into written or transcribed check-ins, a diary, recent momentum, and history-based insight paths.

The app saves the original reflection before model extraction. Proposed completion and context fields are shown for review before the structured check-in is updated, keeping the person's words separate from the model's interpretation.

A habit has more context than a yes-or-no mark.

A completion mark alone cannot record the circumstances around a habit. A free-form reflection can, but it needs reviewable structure before the app can use it for progress and later observations.

Tare saves the reflection first, proposes structured fields second, and leaves the completion result open to the user's correction.

Make reflection useful as a durable record.

The flow gives people room to describe the day while retaining consistent check-in fields for the diary, recent momentum, and later insights.

  • Set up a build or break habit around an identity statement
  • Write a reflection or speak an entry and review its transcription
  • Review extracted fields and correct completion before saving
  • See recent completed-day momentum and recorded history

My role

As Founder & Lead Developer at DivWeavers, I built Tare across the React Native app and Supabase backend, including the anonymous first-run flow, habit and check-in screens, structured AI extraction, history and insight views, data rules, scheduled analysis, notification paths, Free/Pro integration, and mobile build setup.

Free-form input needs explicit data boundaries.

One reflection is submitted at a time. Model output is a proposal rather than the authoritative user record, and extraction can fail after the original entry is saved.

  • An anonymous first-run still requires a successful Supabase Auth session
  • Completion means an action was done for a build habit or avoided for a break habit
  • Generated insights depend on enough saved history and configured services
  • Public release and external service delivery require separate verification
User and system workflow

From reflection to a reviewable record

One written or transcribed reflection becomes a structured check-in only after the person reviews the proposed fields.

01

User reflection

Type freely or speak an entry and review its transcription in the same editable field.

Editable input
02

Original entry saved

Save the user's words before requesting analysis so they remain available if extraction fails.

Durable original
03

Model extraction

Propose schema-checked completion and context fields; a successful result is not guaranteed.

Proposed fields
04

User review

Review the proposal and correct the completion value before finalizing.

Completion correction
05

Structured update

Update the saved check-in after review; the model does not write the final record directly.

Reviewed record
06

Diary and momentum

Use saved check-ins for diary history, recent momentum, and later insight paths.

Recent history
Architecture

System boundary

Mobile app, durable data, and service paths

This is the implemented architecture, not proof that each external integration is operating in production.

React Native and Expo

Identity-oriented onboarding, habit setup, check-in review, diary, and insight views.

Supabase Auth and PostgreSQL

Anonymous first-run sessions, habit and check-in records, row-level security, and tier rules.

Edge Functions and AI services

Structured extraction, voice transcription, summaries, and external integration paths.

Scheduled PostgreSQL work

Report and notification paths based on stored history and habit timing.

Engineering challenges

Where product judgment mattered

From reflection to a reviewable record

Challenge

Free-form check-ins vary, but progress views need consistent fields.

Why it mattered

A model interpretation should not silently replace what the person actually wrote.

Approach

Save the original entry, request schema-checked extraction, and show the proposed fields for review.

Trade-off

Review adds a step and extraction may fail.

Result

The original diary entry remains available even when structured analysis fails.

Make completion and limits explicit

Challenge

Build and break habits give the same completion field different meanings.

Why it mattered

The app also needs an enforceable active-habit limit across Free and Pro tiers.

Approach

Treat completion as doing a build action or avoiding a break action, and enforce active-habit limits in PostgreSQL.

Trade-off

The onboarding UI can stage more habits than the current Free database rule permits.

Result

The database remains the enforcement point; the onboarding inconsistency still needs product work.

Use history without overstating inference

Challenge

A single check-in cannot establish a recurring context pattern.

Why it mattered

Reports, correlations, and nudges need saved history and configured backend paths.

Approach

Derive rolling momentum from completed days and provide conditional paths for context observations, weekly reflections, friction reports, and cross-habit correlations.

Trade-off

Correlations and rule-based nudge scores do not prove causation, prediction accuracy, or behavior change.

Result

The implemented views describe recorded patterns when enough history is available.

Important decisions

The trade-offs behind the workflow

Preserve the original check-in

Decision

Write raw text before model extraction and make structured fields a reviewable proposal.

Why

The user's words should survive an extraction failure or an incorrect interpretation.

Alternative considered

Let the model response become the final check-in immediately.

Trade-off

The user reviews completion before the structured update.

Why acceptable

The diary retains the original entry and the app can offer retry or Finish Later.

Derive progress from saved days

Decision

Calculate recent completed-day momentum from saved check-ins.

Why

Progress views should use recorded completion state rather than generated narrative.

Alternative considered

Use model-generated summaries as the progress measure.

Trade-off

Momentum describes recent history without explaining its cause.

Why acceptable

The measure remains inspectable alongside diary entries and conditional insight reports.

Separate the mobile flow, records, and services.

The Expo app handles onboarding and review. Supabase Auth and PostgreSQL with row-level security hold profiles, habits, and check-ins. Edge Functions coordinate extraction, transcription, summaries, and external integrations; scheduled PostgreSQL work supports reports and notification paths.

The app includes a Free/Pro entitlement model. RevenueCat and Expo notifications are part of the integration architecture; their production operation is not established by repository code alone.

The original entry survives an extraction failure.

Tare writes the user's words before requesting model extraction. If analysis fails, the original entry remains and the UI offers retry or Finish Later; a structured result is not guaranteed. Typed output validation, row-level security, database habit limits, and report uniqueness support the implemented flow.

Implementation and release are separate facts.

Tare has iOS and Android app architecture. This case study describes implemented product paths without claiming public store availability or verified external service delivery.

A growing history supports progress and observed patterns.

Saved check-ins support a diary and rolling momentum. Context observations, weekly reflections, friction reports, and cross-habit correlations are implemented paths that depend on sufficient history, tier, and configured services; they do not establish causes or outcomes.

What this project demonstrates

Tare demonstrates product engineering across a mobile interface, durable records, reviewable AI extraction, scheduled backend work, notification paths, and subscription rules. The check-in remains a user-reviewed record rather than a model response alone.

A check-in should remain inspectable.

Saving the original entry and reviewing proposed fields allows flexible input without treating an AI interpretation as unquestioned truth. Later views can draw from that saved history without becoming a separate chat memory.

Building a product with similar technical complexity?

Share the product problem, the current system, and where delivery is stuck.