SATELLAI · connected pet tech

Shaping and evolving connected pet products from launch to real-world use.

SATELLAI builds connected devices for dog safety, location, and health, combining GPS tracking, virtual fencing, activity and health monitoring, and AI-powered insights through companion apps. During my time there, I worked across two products: launching the new SATELLAI Go app for its tracker and improving the existing SATELLAI app for its electronic collar.

Role
Product Designer
Period
Aug 2025–Jun 2026
Products
SATELLAI Go · SATELLAI
Partners
CEO · CTO · Engineering
A dog wearing a connected collar outdoors under a clear blue sky.
SATELLAI Go Health screen with a Weekly Summary, respiratory rate, running, and walking data.

Shipping in two months meant knowing what not to reinvent.

Shape · SATELLAI Go · 0→1 · Launched

With a two-month window to stand up a connected-device app, I reused proven conventions where they already worked and focused design effort on the product rules and hardware-dependent states SATELLAI needed to get right.

My roleOwned the end-to-end MVP experience: product structure, core journeys, state behavior, launch scope, and engineering handoff.

Chapter 01 · At a glance
Three product judgments made the MVP shippable.

Established patterns bought speed. The remaining design effort went into the rules that kept the pet useful beyond its hardware and made disconnected states part of the core experience.

01 · Reuse what worksBuy speed with proven conventions.
  • Onboarding
  • Pet profile
  • Device pairing
  • Navigation
Reuse + adaptSpend originality on SATELLAI-specific rules

These interactions were established enough to adapt rather than reinvent. The judgment was where to stop exploring and redirect a limited design window.

02 · Define what persistsThe pet record outlives the device link.
Persistent recordPet + history
Replaceable linkDevice

Pet–device separation reused a mature category convention. The SATELLAI-specific rule was that unbinding stopped new collection without erasing access to the pet profile or historical Health and Activity data.

03 · Treat hardware states as product statesDesign the space between disconnected and working.
  1. SATELLAI Go Manage screen before a pet or device has been added.
    01
    No petCreate the record
  2. SATELLAI Go Manage screen with a pet record and no assigned device.
    02
    Pet, no deviceHistory stays useful
  3. SATELLAI Go screen for pairing a device by serial number.
    03
    PairingConnect the hardware
  4. SATELLAI Go device detail screen with connected network and online GPS status.
    04
    ConnectedRead system status
  5. SATELLAI Go device detail screen with network, GPS, and signal unavailable.
    05
    UnavailableExplain and recover

No device, pairing, unavailable hardware, and recovery were defined as core behavior before handoff—not added after the happy path.

Across the product

One product model stayed coherent across the app.

From pairing and location to health and management, the same rules for pets, devices, data, and hardware state had to hold together.

  1. SATELLAI Go serial-number pairing screen.
    01Pair or skipHardware could join later
  2. SATELLAI Go map home exposing device and service state alongside location.
    02LocateRead state, then act
  3. SATELLAI Go health screen showing activity and rest data.
    03Review healthData stays useful over time
  4. SATELLAI Go management screen showing pets and collars as separate linked objects.
    04Manage the linkPet and device stay distinct
  1. AugProduct skeleton
  2. SepCritical states
  3. OctMVP handoff
  4. DecLaunched
2 months

From product framing to an implementation-ready SATELLAI Go MVP.

When should AI speak—and when should the product ask for more data?

Make intelligence useful · Shared across both apps

The system first had to decide what was worth saying, whether the available data supported it, how to say it concisely, and what to request when it was not ready. Contextual Nudges helped raise baseline coverage from 40% to 70%.

My roleDefined readiness and Nudge logic across both apps, then shaped the context, output hierarchy, evaluation rubric, and refinement loop for AI Health.

Chapter 02 · At a glance
One summary surface, two jobs.

The same surface had to change its job with data quality: collect the missing input when context was weak, then prioritize signal, context, and an actionable Nudge when it was strong.

Context incompleteCollect what the next insight needs.
Latest SATELLAI Health screen asking the user to keep the device on longer before generating an insight.
Shipped wear-time Nudge
  • Profile incomplete

    Ask only for the fields required to personalize the next insight.

  • Wear insufficient

    Use the captured window, avoid full-day or baseline claims, then encourage more wear and a routine-fit charging moment.

  • Insights disabled

    Stay silent instead of turning an opt-out into an engagement prompt.

Enough contextUse attention on what changes the next action.
Latest SATELLAI Daily Summary with prioritized health guidance and actionable Nudges.
Shipped Daily Summary
  • Signal

    Resting breathing was valid and higher than the pet’s personal baseline.

  • Context

    High activity happened despite heavy rain; weather did not explain away the respiratory signal.

  • Nudge

    Limit treats and charge during naps—only because weight and battery made those actions relevant.

Pets with an established baseline40%70%
  1. Check data quality
  2. Prioritize anomaly
  3. Add an actionable Nudge
  4. Omit normal and raw filler
Baseline coverage rose from 40% to 70%. This measures data readiness; summary quality was evaluated separately against the rubric below.
Behavior evaluation

Accuracy was necessary. Restraint made it useful.

01Detect

Did the output catch the actual abnormal signal?

02Attribute

Was weather or another explanation used only when defensible?

03Prioritize

Did anomaly come before an actionable Nudge, with normal data suppressed?

04Operate

Did language, external context, JSON, and downstream interfaces behave correctly?

What return feedback revealed about the existing product.

Evolve · SATELLAI · Existing product · Shipped

Customers described technical uncertainty as product failure. I translated that language into system causes and product responses; after the January release, overall returns were ~25% from February onward versus a ~40% Aug–Jan average.

My roleMapped return feedback to system causes, redesigned connection-state communication, and improved fence creation, validation, and review.

Chapter 03 · At a glance
Customer report → system cause → product response.

Customer language was the entry point. I separated the system causes, made each state actionable, and tracked returns after release as a directional signal.

Aug–Jan average~40%

Overall return rate before the release.

JanuaryRelease

Connectivity-state and fence-interaction improvements shipped.

From February onward~25%

Observed overall return rate after release.

Customer reportUnderlying causeProduct decision
“The tracker is broken.”
  • GNSS freshness
  • LTE quality
  • Device offline
Replace “Connecting…” with the cause.

Separate GNSS, LTE, and device states so the user can identify the failure and next action.

“The fence won’t save.”
  • Road or building
  • Size or width
  • Canopy constraint
Show the exact invalid area before commitment.

Let users shape first, then review the constraint and either edit or proceed.

Directional internal metric; the original export is no longer available. The post-release change is presented as correlation, not sole causation.
Connectivity · Paired comparison

Replace a vague failure message with a readable system state.

Before
Earlier treatmentOne tooltip collapses several failures into “cannot connect.”
Earlier SATELLAI map with a floating connection error tooltip.
  • The map still looks live underneath the warning
  • No readable difference between GNSS, LTE, and offline
  • The owner cannot tell what remains trustworthy
After
Shipped responseSeparate the cause, freshness, and next action.
Redesigned SATELLAI connectivity drawer with decomposed status.
  • A persistent status surface instead of a transient tooltip
  • Last update time and last-known location remain legible
  • GPS, network, Bluetooth, and battery are decomposed
Design shiftFrom a generic error to a readable cause, freshness, and next action.
Fence editing · Paired comparison

Make every edit reveal what will change before it happens.

Interaction issue · 01

One delete icon changed meaning with selection.

Before
Hidden scopeThe same trash action could remove one boundary point or the entire no-go zone.
Earlier fence editor with boundary points and a generic Delete action.
Fence-point mode → same Delete
Earlier no-go zone editor using the same generic Delete action.
No-go-zone mode → same Delete

Its scope was never named. Users had to notice a subtle selection change, remember the rule, and predict what the generic icon would delete.

After
Visible selectionThe selected object stays legible before Delete becomes available.
Redesigned editor with one enlarged selected boundary point.
Selected point is enlarged
Redesigned editor with the no-go zone selected and named.
Selected zone is named and outlined

A point enlarges when selected. A no-go zone gets its own title, color, and handles—making the destructive scope readable before the tap.

Design shiftMake the active object visible before a destructive action.
Interaction issue · 02

A feature label had to become a spatial task.

Before
Detached explanation“Add Zone” did not say what would be added—or what the next gesture would do.
Earlier no-go zone explainer shown apart from the editing action.
Definition appears outside the task
Earlier editor with an Add Zone action.
Editor falls back to “Add Zone”

A separate onboarding card explained the term, while the editor used different wording. Users still had to translate both into a map operation.

After
In-context placementThe choice explains the capability; the map shows the actual object being placed.
Redesigned fence type choice explaining that complex fences support no-go zones.
Capability is explained at the choice
Redesigned map editor showing a labeled no-go zone being placed.
The next action is visible on the map

Complex Fence is introduced as the type that supports no-go zones, then a labeled zone appears directly inside the boundary for positioning.

Design shiftExplain the capability, then let people place the object where it belongs.
Interaction issue · 03

The map should be the workspace—not the backdrop.

Before
Controls dominateA persistent bottom panel took over the area needed to judge the fence.
Earlier fence editor with a large persistent bottom control panel.
Persistent panel competes with the map

Generic Undo and Delete actions occupied a large block even when they were not relevant, reducing the useful map and separating tools from the geometry.

After
Map-first editingCompact contextual actions leave the geometry and surroundings visible.
Redesigned fence editor using compact contextual controls over a full-height map.
The map remains the primary work surface

Editing happens in place. Object actions sit beside the selected shape, while the single primary Save action remains stable at the bottom.

Design shiftKeep object-level tools contextual and preserve the map for spatial judgment.
After the project · Speculative exploration

Questions I kept exploring

What if connected pet care were built around the pet—not the device?

After the project, I used this interactive prototype to keep exploring that broader question. It is a conceptual direction, not shipped work.

Guided highlightUse the app anytime—the guide will step aside.
Other decisions along the way

Two adjacent systems extended the product—and the team’s way of working.

The same product judgment extended to an intermittent, expensive satellite link and to conversational access to grounded product data.

S1 · Two satellite product rules

Designing useful behavior when every satellite transmission has a cost.

S1 used satellite in two different ways: messages needed honest delivery states across an intermittent link, while location updates needed to remain useful without transmitting every new fix.

01 · Message delivery

Confirm only what the link has actually delivered.

  1. 01ComposeMessage is ready locally

    The action is accepted without implying delivery.

  2. 02Wait for linkPending network…

    The message remains visible while the device connects to satellite.

  3. 03ConfirmSent just now

    Success appears only after the transmission is confirmed.

02 · Selective location reporting

Report meaningful movement—not every new fix.

Each new location was compared with the last location reported over satellite. The product transmitted again only when straight-line displacement exceeded 250 meters.

Hardware constraintPositioning and satellite transmission ran serially—not in parallel.
Economic constraintEvery satellite uplink carried a meaningful cost.
Search needWithin 250 m, the previous report still gave the owner a useful search area.
Last reportNew fix≤ 250 m
Hold the uplinkKeep the last reported location and its search area.
Last reportNew fix> 250 mSend via satellite
Transmit and resetSend the new location, then use it as the next reference point.
Reconstructed product rule. The original interface is available in the protected evidence below.
Data Agent · Internal workflow

Making product data queryable through conversation.

A basic product question previously required opening BigQuery, knowing the schema, writing SQL, and interpreting the result. I connected a Feishu chatbot to an OpenClaw + MCP workflow so the model acted as the conversational interface while BigQuery remained the source of truth.

Before

Question

BigQuery

Write SQL

Interpret result

After

Question

Feishu

Grounded answer

Reconstructed interaction
You

How did average app session duration change this month compared with last month?

Data Agent

Average session duration decreased by 30 seconds month over month.

Period
This month vs. previous month
Source
BigQuery · live product data
Recreated from the original workflow and query pattern; this is not an archived Feishu screenshot.
FeishuOpenClawMCPBigQuery
Impact

Shape the product. Make its intelligence useful. Evolve it with evidence.