Meeting Pulse · Independent product · Local-first mobile

Meeting Pulse — Making Meeting Impact Visible.

Your calendar tracks time. Meeting Pulse tracks the energy, clarity, and decision quality behind it — so recurring meeting friction becomes visible enough to change.

Role — Product designer + builder — framing the opportunity, selecting the MVP, defining the information model and scoring logic, designing the mobile experience, implementing the Expo app, testing it, building the support/privacy site, and carrying the build through TestFlight onto the App Store.
iOS  Expo · React Native
Local-first  SQLite · no backend
Deterministic  explainable scoring
31  automated tests · typed
End to end  design → release
Live  on the App Store
§ I
Why I built it

Meetings consume time. Their real cost is harder to see.

A calendar can show that a meeting lasted 45 minutes. It can't show whether it created clarity, moved a decision forward, drained the room, or ended without an owner.

Those effects are felt immediately but usually disappear before they become usable evidence. Meeting Pulse began with a deliberately small question: could a person capture the after-effect of a meeting quickly enough to build a useful pattern over time — without turning private reflections into another workplace surveillance system?

The product needed to feel faster than writing a note, more trustworthy than a black-box score, and private enough for honest reflection.

Meeting Pulse Today screen: daily pulse, energy balance, log CTA, and reflections list
Fig. 01 Today — the daily pulse
Product
thesis
A short private reflection can become a better signal for changing meeting behavior than another calendar analytics dashboard.The product thesis that framed the MVP.
§ II
The strategy

The constraint was the strategy.

I chose a local-first MVP rather than beginning with accounts, integrations, team dashboards, or an AI assistant. The first version stays focused on one behavior: reflect immediately, understand the score, and see the weekly pattern.

  • No account or authentication before the core habit proved useful.
  • No server storing meeting names, notes, or emotional reflections.
  • No opaque AI score that a user could not inspect.
  • No calendar integration in v1; the product had to earn the right to automate.
What I optimized for · four design principles
Principle 01

Fast enough for the moment

A focused two-step flow designed around a roughly 30-second reflection.

Principle 02

Signal, not judgment

Scores describe impact; they don't label the person or the meeting as good or bad.

Principle 03

Explanation before sophistication

Mood, duration, and selected reasons visibly contribute to the result.

Principle 04

Patterns over isolated reactions

The weekly view matters more than any single score.

§ III
The system

A small loop with enough structure to become useful.

The core loop moves from immediate reflection to longitudinal learning. The app stores the meeting, calculates an explainable impact score, updates the day and week, and returns one useful pattern — not a dashboard full of undifferentiated metrics.

Step 01 · Reflect

Log the moment

Capture the meeting, mood, duration, and the reasons that shaped the outcome.

Step 02 · Understand

See the signal

See the impact score and the concrete signals that produced it.

Step 03 · Adjust

Change the pattern

Use weekly patterns to protect useful formats and change recurring friction.

Meeting Pulse log screen: mood grid and what worked / what got in the way
Fig. 02 Reflect — 30-second mood check
Meeting Pulse result screen: score reveal orb and calculation breakdown
Fig. 03 Understand — explainable score
Meeting Pulse insights screen: weekly pulse, week chart, and snapshot grid
Fig. 04 Adjust — weekly signal

The product is built around a compact object model — meeting, reflection, mood, reason, impact score, day, week, and insight. Their relationships keep the experience coherent across Today, Insights, History, results, detail views, reports, and settings.

Governing
principle
The system may summarize what the user reported. It may not invent intent, diagnose a team, or disguise an opinion as intelligence.Scoring was a design-governance problem before it was an algorithm.
§ IV
Governing the score

Set the boundary before the model.

Once an app converts a private reflection into a number, it creates an authority relationship — the system appears to know what the meeting was worth. I rejected an AI-generated assessment in v1 and made trust, explainability, and change control into product requirements.

Three non-negotiables: every input must be chosen by the user; every weight must be explicit and revisable; and the same inputs must always produce the same result. The model separates three kinds of evidence, then translates the number into plain-language impact labels so the score supports reflection rather than pretending to be an objective grade.

The scoring model · input → design role → implemented rule
Input
Design role
Implemented rule
Mood
Sets direction and emotional intensity
Energized +3 → neutral 0 → frustrated / anxious −3
Duration
Scales the cost or return of the experience
1× at ≤15 min, rising in steps to 2.5× beyond 90 min
Reasons
Adds context mood alone can't explain
Explicit modifiers from +2 to −2 for selected conditions
Impact label
Turns arithmetic into reflective language
High return · energy returned · neutral · some friction · high cost
Deterministic in practice · mood × duration + reason modifiers
Meeting
Visible calculation
Result
Clear · 30 min
2 × 1.2 + clear outcome 2 + good facilitation 1
+5.4 · High return
Drained · 60 min
−2 × 1.5 + no decision −2 + too many people −1
−6 · High cost
Neutral · 30 min
0 × 1.2 + fast decision 2
+2 · Energy returned
Why
deterministic
It creates a stable contract between product intent, interface explanation, and executable code. The user can challenge the model because the model can be seen.Encoded as one centralized, typed domain function with boundary tests.
§ V
Privacy as architecture

Privacy expressed in the product's technical shape.

Meeting Pulse uses local SQLite persistence and requires no backend or cloud profile. In v1, meeting names, notes, moods, and scores stay on the device.

Privacy is therefore not only a policy statement — it is visible in the architecture. Removing the server also removed infrastructure that did not serve the first user outcome, which kept the MVP focused on the reflective behavior itself.

Local-first · no required account · no cloud profile in v1
§ VI
Key decisions

The work is visible in the choices, not the feature count.

Five decisions carried the product from an ambiguous problem to a governed, shippable v1.

Decision 01

Build the behavior before the ecosystem

I cut login, calendar sync, team analytics, and collaboration from v1. The reflection loop had to prove itself independently.

Decision 02

Govern the score as a product decision

I defined what the system was allowed to infer, made every weight inspectable, exposed the calculation in the experience, and implemented the model as centralized, tested domain logic.

Decision 03

Make local-first a trust promise

SQLite persistence made the privacy position concrete and reduced infrastructure that did not serve the first user outcome.

Decision 04

Design for the after-meeting moment

The logging flow prioritizes recognition and quick selection over a long form or retrospective journaling experience.

Decision 05

Ship the whole product surface

The work included the app, report sharing, support content, privacy policy, public website, release assets, TestFlight, and the App Store release.

§ VII
What shipped

A complete product surface, not a prototype.

I closed the loop around the product rather than stopping at a working screen.

Every surface in the loop was designed, built, and wired to real local data — including the archive, where past reflections stay inspectable without reliving each meeting. The ledger below is the full v1 surface behind those screens.

Meeting Pulse history screen: impact filters and meetings grouped by day
Fig. 05 History — the private archive
Area
Evidence
Core product
Today, Insights, History, logging, result, detail, report, settings, and onboarding surfaces.
Data
Local SQLite persistence with repository and fixture layers.
Logic
Deterministic scoring plus date, time, and insight domain logic.
Quality
TypeScript, ESLint, 31 automated tests, Expo Doctor validation, and native bundle checks.
Release
Public GitHub repository, EAS build workflow, TestFlight, App Store record, and live release.
Trust
Standalone landing, support, and privacy pages for a complete public product surface.
§ VIII
Outcome & reflection

What this project proves — and what it doesn't yet.

Meeting Pulse is intentionally smaller than the enterprise systems elsewhere in my portfolio. Its value is different: recency, range, and follow-through.

What it demonstrates today. A focused product proposition, a coherent end-to-end experience, a legible decision model, a trust position expressed through the architecture, and a deliberately constrained MVP that protects the reflective behavior before adding automation.

What I can't claim yet.I don't have enough real-user evidence to say Meeting Pulse improves meeting culture or changes weekly behavior. Those are hypotheses, not outcomes.

What I would test next:

  • Activation — can a new user log the first meeting without explanation?
  • Comprehension — can users explain why a score changed?
  • Habit strength — does the 30-second promise hold after novelty fades?
  • Insight usefulness — does a weekly pattern lead to one observable change?
  • Privacy understanding — do users notice and value local-first?
Built independently in 2026 · Expo · React Native · SQLite · TypeScript
Builder
signal
I didn't stop at a prototype. I closed the loop around the product: working app, persistence, tests, release build, store workflow, support, privacy, and public documentation.The next iteration should prove which part of the behavior deserves to survive.