PETPALS / PRODUCTReview draft 1.2Open storyboardDownload PRD

PetPals — Product Requirements Document

Review draft 1.2 · 28 October 2026 Native iOS first. Matching native Android next.

This document consolidates the product discussion into one current specification. It replaces the earlier running PRD notes. “Agreed” means the user explicitly requested the behavior; it does not mean the entire storyboard or implementation is approved. Proposed release boundaries, prices and technical choices are identified below. Graphics and storyboard review remain in progress.

1. Product purpose

PetPals helps people enjoy life with their pets, build useful routines, connect with friends, discover local care and bring missing pets home. The pet is the personality at the center of the experience. One human account can manage several pets and, where verified, a real business location.

The experience must make the next step obvious. A person should not need to understand our feature inventory to start a walk, report a sighting or find a veterinarian. Each journey should show the current task, one clear next action and a reliable way back.

The existing live app has active users. A redesigned experience must preserve their identities, pets, relationships, content, points and outstanding obligations. A feature deferred from the redesign cannot simply disappear for existing users who depend on it.

2. What we are agreeing before building

  1. Finish the storyboard, including onboarding and important failure states.
  2. Agree on the journeys, visual direction and realistic first-release scope.
  3. Finalize the Firebase/Google architecture, data contracts, permissions, costs and migration plan.
  4. Build and validate the backend foundations in an isolated development environment.
  5. Implement and pilot native iOS, then roll out gradually with a rollback path.
  6. Build matching native Android against the agreed product and service contracts.

This PRD covers planning and review mockups. The user has authorized publishing the review website at petpals.isnotreal.site. Production app/backend changes, purchases and database migrations remain outside this planning scope. The current Flutter mockup and live-source layouts are references to capabilities, not designs to reproduce.

3. People and roles

One person may have several roles. Business management must stay distinct from the pet's personality page. Shared household care, detailed staff permissions and multi-location administration require later design decisions.

4. Navigation and visual rules

The agreed persistent navigation is: Profile · Feed · Missing · Nearby · Messages. Missing is the central rescue entry. The bar meets the bottom edge and respects the phone's safe area; it must not float above an empty gap.

Profile is the selected pet's everyday hub. Feed is a separate destination. This supersedes the earlier idea of scrolling down Profile into the feed. Settings remain available through the header, with account/security and business management separate from pet identity.

Visual requirements:

The local storyboard uses sample content and simulated camera, location, payment and publishing actions. Generated product images illustrate a proposed catalogue; they are not real partner offers.

5. Proposed release scope

The first release should prove the connected everyday loop: return/sign in → select pet → walk/capture → finish/goal → optional share → eligible points → useful reward. Missing-pet support and existing-user continuity are equally important release gates. DNA cup sales are a confirmed launch requirement under an existing paid partnership, not a later marketplace expansion.

First redesigned iOS release — proposal

Paid missing-pet reach is a requested capability. Include its states and entitlement model now; activation depends on approved radius/pricing, purchasing rules, delivery limits and cost tests. Free reporting and sighting help must work independently.

This is still a substantial scope. Estimates and a staged release sequence follow storyboard agreement; there is no committed launch date or fixed budget in this PRD.

Later expansion — proposal

6. Onboarding and returning users

New owner journey: welcome → choose purpose → create/recover account when needed → add one pet → choose optional trackers/goals → review privacy → Profile.

“Already use PetPals” checks the existing session. A valid session restores the existing account and pets. Otherwise it opens sign-in and recovery. It must not create a duplicate account or match ownership using pet names or email text alone. Existing anonymous/device identities require a safe linking/recovery plan.

New-owner onboarding sets up exactly one pet. Add another pet is available later from Profile; it is not an onboarding step or loop. Returning users recover all existing pets. Helpers and business operators can continue without creating a fictional pet.

Per pet, ask what the person wants to track: walks and grooming are agreed; play/enrichment and other care reminders are optional proposals. Let users skip nonessential choices and change them later. Grooming schedules are chosen by the owner, not prescribed universally.

Request camera, microphone, location and notification permissions when the relevant feature is used. Denial and cancellation must leave a useful alternative. Establish terms/privacy and age requirements before implementation; the target age policy is not decided.

Acceptance: a returning user does not lose or duplicate their pets; a new owner finishes with one pet and can skip optional trackers; Back preserves setup choices; adding another pet later does not overwrite the first pet's settings.

The review website shows two independent phones: onboarding on the left and the everyday app on the right. A dropdown above each phone jumps to preview states; Restart resets onboarding and Back preserves choices within the flow. The device picker remains available for iPhone and Pixel. The current onboarding proposes welcome, purpose, account, first pet, optional routines/goals, privacy and completion; account methods remain illustrative until confirmed.

7. Profile, pet personality and privacy

The hub shows the selected pet's name, photo and Visit Profile action beside the name. Swipe horizontally through owned pets, with bare left/right chevrons over the image. Pet identity, statistics, routines and action context change together.

Beneath the image show views, likes, walks recorded this week and goal progress, such as “2 more walks to reach your goal.” Views/likes definitions and time windows remain open; sample counts are not verified analytics.

Hub actions include Let’s walk!, Grooming, Shopping and Pet Sitters, with compact points/rewards and a prominent MY PET IS MISSING action. Do not turn every optional routine into another equally prominent tile.

Visit Profile opens the pet's personality: profile photo, bio, life goals and recent posts. Owners can edit; visitors cannot see editing controls. Life goals are personal ambitions written in the pet's voice, not clinical advice or performance requirements.

Privacy requirements:

Acceptance: changing pets updates all visible context; a public visitor cannot read friends-only content through a profile, feed, cached response or share link.

8. Walks and grooming

Walk entry and recording

Let’s walk! is a button. It opens two choices: a large bold “Start a walk & record it,” then “Help me find a new place to walk” underneath.

Recording carries the selected pet forward and can include other owned pets. Explain route privacy and request location as needed. During the walk, show Walk in progress, elapsed time, distance, participating pets, Take a photo, Record a video, Write a note and End walk. Pause/resume is a proposed secondary action.

Photos, video clips and notes belong to that walk event. Capture returns to the active walk. Cancelling a photo or closing a note does not stop recording. Persist unfinished work locally so interruption or lost connectivity does not silently discard it. Video duration, upload limits and storage retention remain open decisions.

Ending shows duration, distance, pets and captured moments, followed by accurate encouragement tied to that week's goal. Saving the walk grants each eligible pet one completion credit; revisiting the summary or retrying sync cannot count it twice.

Sharing

A walk is private by default. Offer Keep private and an optional share journey. The owner selects highlights, caption and audience, then sees exactly what will be posted. Share time/distance and selected photos/video/notes; hide precise route, start and end locations by default.

Remove unrelated GPS metadata from shared media derivatives. Visible landmarks and notes may still reveal a location, so the owner must be able to remove them. Do not promise automatic anonymity. Exact or generalized route sharing is not approved scope.

Grooming

Support a chosen grooming activity, date/interval, reminder and completion history per pet. Initial examples: brushing, bath, nail trim or a groomer appointment. Completing a task updates the correct pet once. Users can reschedule or disable a reminder. Shared care, richer notes/photos and appointment integrations can follow.

Acceptance: a multi-pet walk is one event with correct per-pet credit; offline progress is retained; private routes never appear in the shared post; grooming settings remain independent for each pet.

9. Feed and messages

The Feed toolbar contains logo · Friends / For You · settings. No PetPals wordmark, “Good company” heading or introductory block on this page. Composer wording: “Share Something..”.

Friends contains friends' permitted posts only. Keeping unrelated recommendations and advertisements out of Friends is the current proposal. For You contains eligible public discovery and clearly disclosed sponsored placements. Monolith is the intended recommendation direction, but not a dependency already adopted or running.

Support selected-pet posting, audience review, reactions, comments, reporting and blocking. Counts need consistent definitions. A reported/blocked relationship must have an enforced outcome across feed, profile and messages, not merely a recorded button tap.

Messages provides clear context for pet-friend conversations, business inquiries and missing-pet contact. Sending, pending, failed and delivered states must be distinguished where known. A request sent to a business is not a confirmed appointment or payment.

Acceptance: Friends never leaks nonfriend/private content; blocked interactions behave consistently; retrying a message does not produce duplicates; offline drafts do not claim delivery.

10. Missing pets — priority experience

Entry and active status

MY PET IS MISSING is prominently visible on Profile; Missing is the center navigation entry. A red status bar appears below the header only when an active relevant case exists: MISSING PET ALERT NEAR YOU or MILO IS REPORTED MISSING. No active relevant case means no bar.

The current requested example is on Messages only. Broader placement and multiple-case aggregation still need agreement. An owner's own active case takes precedence in the proposed ordering.

Owner journey

Choose pet → last-seen place/time and identifying details → review exposure/contact → publish free alert → manage case and updates → confirm safely home.

Use in-app contact by default. Do not publish a home address or phone number automatically. Publishing, notification queueing and actual delivery are different states. Owners confirm reunion; a helper's report cannot close the case. Stop pending outreach after confirmed closure, and define how stale cases request updates or expire.

Helper journey

  1. Start with a list: pet image on the left; name, brief description and last-seen area on the right. Map view uses the same cases.
  2. Open “Have you seen Buddy?” with the owner's post, photo and where/when last seen.
  3. Show a large red REPORT SIGHTING action immediately below the photo. It opens the camera first so the person can photograph a moving animal.
  4. After capture, allow an optional note. A clearly visible note-only fallback is available when a photo is not possible. Preserve the draft when going back or closing.
  5. Show a large “Where did you see them?” heading and two large, bold choices in the middle: Use my location / Choose on a map.
  6. Current location is acquired when chosen and confirmed, not silently attached. On a map, keep a target fixed in the center and move the map underneath it; confirm with Use this location.
  7. Review evidence and location, then send. Share the confirmed location only with permitted case roles, not automatically with a public feed.
  8. Show Sent only after acceptance; offline work is Saved, not sent. A sighting is a possible match, not proof the pet has been found.

Record when the animal was seen separately from submission time. Current location may differ from the sighting spot. Preserve location source, timestamp and accuracy where available. Denial, poor accuracy and timeout must retain the manual-map fallback. Sightings and owner closure are free.

Geographic reach and paid expansion

Agreed baseline: a free alert with a 3-mile radius, aimed at eligible app users in that area. Optional feed posting is separate and requires an audience choice.

Illustrative expansion only: approximately $10 for 15 miles or $25 for 150 miles. Currency, duration, exact prices and coverage are not approved. Publish the free alert before offering an upgrade. Failed or cancelled payment leaves existing coverage active.

“Everyone within the radius” is a product ambition, not a promise of receipt: location freshness, consent, connectivity, notification settings and platform behavior affect eligibility and delivery. A 150-mile circle covers 2,500 times the area of a 3-mile circle; test recipient density and costs before pricing.

Acceptance: camera precedes note entry; target stays fixed while the map moves; the selected coordinate is what gets submitted; retries create one sighting; helpers cannot close another owner's case; paid expansion cannot disable a free alert.

11. Nearby, maps and our directory

Nearby answers “What are we looking for?” with Walking spots, Pet sitters, Groomers, Veterinarians and Pet-friendly places. Missing-pet help and adoption/rescue can be secondary entries.

Map and List share categories, area, loaded records and selected place. A pin and its row open the same detail. Pet Sitters on Profile enters the relevant filter directly. Directions, contact and inquiry should be obvious; a booking requires an explicit later confirmation.

Architecture proposal:

Current Google pricing lists unlimited free Maps SDK usage for standard native iOS/Android maps without a Map ID. Map IDs trigger a different paid map-load SKU. Places, routes, Firebase and media remain separate costs. Verify the actual development billing SKU before release. [1,2]

The first person in an uncovered area may trigger a deduplicated discovery/import job when opening Nearby, not during account creation. Show existing content promptly and explain incomplete coverage. Do not imply that bounded search results contain every business.

Detailed proposal: MAPS-ARCHITECTURE.txt. Provider selection and the exact read/cache design remain subject to review.

12. Business accounts, claims and reviews

Businesses represent real physical locations. Claim journey: find location → authenticated claimant → demonstrate authority → pending verification → approved, rejected or appeal. A PetPals claim is separate from Google Business Profile ownership. Prevent duplicate claims and keep verification evidence private.

Verified operators can manage permitted listing information, respond to inquiries, reply to PetPals reviews, publish promotions and request paid distribution. Initial verification and campaign support can be manually operated if adequately staffed.

PetPals owns its review system around PetPals business IDs. Reviews include author, rating/text, timestamps and moderation state; replies belong to verified business roles. Businesses can reply or report a review, not change the customer's words or delete unfavorable feedback. Trusted processing maintains eligible rating/count summaries.

Do not merge PetPals stars with Google ratings or imply a PetPals claim grants permission to reply to Google reviews. External provider content needs its own attribution and permitted-use handling.

Acceptance: an unverified claimant cannot take over a business; paying for promotion cannot change verification or review scores; duplicate business records can be reconciled without losing reviews or ownership history.

13. Shopping, points and rewards

Shopping introduces a curated set of useful partner products with real imagery, clear terms and a transparent destination. Start with a small supported catalogue rather than an unbounded marketplace. Sample graphics and point values must not be mistaken for approved inventory, prices or earned balances.

DNA cups — confirmed launch requirement

The user confirmed an existing paid partnership: customers must be able to buy DNA cups from launch. A promotional tile, points-only reward or interest form does not satisfy this requirement. The partner name, exact product, prices, commercial terms and operational responsibilities still need confirming; no provider or financial arrangement is assumed here.

Required journey: Shopping → DNA cup product details → quantity and delivery details → review full cost → pay → verified order confirmation → order status and support. An agreed partner-hosted checkout can fulfill this journey if the handoff and confirmation are reliable; the checkout owner is still to be decided.

Acceptance: a customer can complete a real supported DNA cup purchase at launch, receive a confirmed order reference and reach fulfillment/support. Failed or abandoned checkout does not claim success; retries cannot duplicate an order; the partner's required post-purchase steps are supported. Review product details, checkout, confirmation, order status and help in the storyboard before implementation.

Points and rewards

The complete reward journey is: eligible activity → pending/confirmed points → balance/history → offer and terms → redemption review → success or failure → fulfillment/support.

Acceptance: every balance change has a reason and reference; insufficient balance/failure is recoverable; retries cannot double-spend; partner terms and support are visible before redemption.

14. Advertising and revenue

Support direct partner product placements, paid business/location promotion, promoted posts and a potential external ad-network lane. The provider mix, inventory priority and commercial model are open decisions. They should coexist within one understandable placement and disclosure model.

The DNA cup paid partnership is confirmed launch scope. Its product sales and order lifecycle are distinct from campaign placement and advertising delivery; the commercial terms remain to be documented.

Proposed disclosure: “Ad · Sponsored by [advertiser]”, prominent with the creative and retained after opening it. Do not rely on a logo or “Promoted” alone to explain payment. Specific launch-market and platform requirements need review before operation. [3,4]

Separate campaign, creative/version, moderation, funding/payment and delivery states. Successful payment is not approval; approval is not proof of delivery. Support budget/schedule limits, pause/end, rejection, exhaustion, refunds and reporting.

Private content cannot become advertising silently. Promoting a Friends-only or Only-me post requires deliberate approval of a public advertising version. Source edits, deletion or privacy changes must stop or re-review affected creative.

Requirements include Why this ad?, hide/report controls, frequency limits and a clear advertiser destination. Paid placement must be distinguishable from organic relevance, business verification and review ratings. Avoid advertising interruptions in missing-pet reporting; do not target on private messages, precise home/walk routes or missing-pet distress.

Paid missing-pet reach is a separate entitlement from commercial campaigns. Physical-product checkout, in-app promotional boosts and digital reach upgrades require separate purchasing-rule evaluation for each storefront; do not assume one payment provider handles them identically.

Acceptance: every paid impression carries its disclosure; paused/expired/exhausted campaigns stop serving; retries cannot duplicate charges; changing an ad budget cannot mint owner rewards or broaden private-post access.

15. Backend, privacy and cost requirements

Firebase and Google services are the chosen direction. Favor client-side presentation, local drafts, photo compression, loaded-result filtering and deliberate caching. Keep authorization, claim approval, review aggregates, point ledgers, purchase verification and notification audience selection authoritative on trusted services.

Conceptual records to preserve in later schema design: accounts and identity links; pets and ownership roles; routines and walk events; media derivatives; posts and audiences; friendships and blocks; conversations/messages; missing cases, sightings and reach entitlements; businesses, provider mappings, claims, reviews/replies; promotions/campaigns/creatives; partners, products/SKUs, orders/items, payment/provider references, fulfillment/shipping, refunds and support; partner-required kit registration and pet associations if applicable; reward ledger/redemptions; delivery jobs, moderation and audit events.

This is an entity checklist, not an approved collection layout. Use stable IDs, explicit ownership, lifecycle/version information and retry identifiers. Keep public summaries separate from private operational or location data.

For DNA cup commerce, trusted services verify payment, authorize order access, enforce price/availability rules and deduplicate provider events. Phones may cache product details and order summaries but cannot declare a purchase paid. Keep delivery addresses and any kit/results references private and distinct from public pet profiles or advertising audiences.

Native Firestore supports offline caching. A cache does not eliminate online read costs or establish complete/fresh coverage. Bound queries, paginate, avoid unnecessary listeners, cap media and show stale/pending states. Provider restrictions apply to phone storage as well as server storage. [5,6]

Do not fetch every user's position to the client for alert matching. Use a private consented eligibility index, fresh enough for the agreed alert semantics, with deduplicated outreach. Keep eligible, queued, accepted, delivered and opened counts distinct.

Define abuse controls, content moderation, account deletion/export, retention, access revocation and privacy-safe analytics before launch. Budget alerts are not hard cost caps; add request quotas and application-level limits where appropriate. Measure provider calls, database reads, cache hit rates and media/network usage separately.

16. Existing-user transition and source findings

Source reviewed: EHadnot007-beep/petpalsapp-company (current live-app source provided), Digital-Disconnections-LTD/petpals (Flutter mockup) and bytedance/monolith (research reference).

The supplied native checkout has build issues and referenced files that are absent. Several overlapping storage paths exist. These findings do not prove that features or balances are absent from the shipped app. Production user records have not been downloaded in this planning work.

Before rollout, reconcile the shipping binary/source and data contracts. Preserve account identity, all pets/media, friends/messages, walks/achievements, active missing cases, points, business accounts, listings/applications and outstanding reservations or payment obligations.

Use additive compatibility where possible, explicit legacy-ID mapping, reconciliation evidence, a limited pilot and rollback. Do not delete old collections or reset local points because the new app uses a cleaner model. A “Reserved” flag is not proof payment succeeded.

Acceptance: the migration plan names every retained record/obligation, defines recoverable failure paths and demonstrates that active users can continue their important tasks without recreating accounts or pets.

17. Validation and launch measures

Before release, verify complete journeys rather than isolated screens: onboarding/recovery, switching pets, walk capture/completion/sharing, grooming, friend privacy, message retries, missing report/sighting/reunion, directory inquiry, business claim, points/redemption and DNA cup purchase through verified confirmation, fulfillment and support. Exercise payment failures, interrupted checkout, delayed/duplicate provider events, unavailable stock, cancellations/refunds and the partner's required post-purchase steps.

Test offline and reconnect behavior, denied permissions, duplicate submissions, expired sessions, app interruption, text scaling, screen readers and both themes. Verify precise location never leaks through public posts, media metadata or shared caches. Verify real account authorization and deployed rules independently of prototype behavior.

Proposed product measures: successful onboarding/recovery; completed walks and grooming tasks; optional sharing completion; useful reward redemption/fulfillment; DNA cup purchase completion, fulfillment and support outcomes; missing-case publication and sighting completion; owner-confirmed reunions; directory-to-inquiry conversion; verified business participation; ad disclosure/reporting quality; crash-free use and cost per active user.

Baseline values and numerical targets are not established. Do not optimize engagement metrics at the expense of privacy, emergency usefulness or reward integrity.

18. Decisions needed next

19. Review materials and sources

Shared interactive storyboard: https://petpals.isnotreal.site/ Shared PRD reader: https://petpals.isnotreal.site/prd.html Custom graphics review: https://petpals.isnotreal.site/graphics.html Local working preview: http://127.0.0.1:8771/ Map architecture discussion: MAPS-ARCHITECTURE.txt Feature comparison: FEATURE-INVENTORY.txt Detailed source evidence: NATIVE-FEATURE-AUDIT.txt and FLUTTER-FEATURE-AUDIT.txt Setup/source notes: PLANNING-NOTES.txt (historical; this PRD supersedes its older design choices) Previous running PRD: archive/PETPALS-PRD-before-consolidation-2026-10-28.txt

Primary references checked during planning: [1] Google Maps pricing: https://developers.google.com/maps/billing-and-pricing/pricing [2] Map billing triggers: https://developers.google.com/maps/billing-and-pricing/sku-details#maps-sdk-ess-sku [3] FTC native advertising guidance: https://www.ftc.gov/business-guidance/resources/native-advertising-guide-businesses [4] Apple App Review Guidelines: https://developer.apple.com/app-store/review/guidelines/ [5] Firestore offline behavior: https://firebase.google.com/docs/firestore/manage-data/enable-offline [6] Google Places policy: https://developers.google.com/maps/documentation/places/web-service/policies [7] Overture Places and licensing: https://docs.overturemaps.org/guides/places/ and https://docs.overturemaps.org/attribution/

Review goal: agree the product journeys and release boundaries, resolve the decisions above, then convert this PRD into implementation contracts. No production backend or migration has been built as part of this storyboard.