Product deep-dive

How a day becomes data you can actually trust

LifeCopilot doesn't hand you a magic score. It turns raw activity into an explainable timeline through a transparent pipeline — every number can be traced back to the signals and rules behind it. This page goes under the hood: what is measured, how it's classified, and how it becomes projects, planning and insight.

Aggregation pipeline

From raw events to work sessions

Captured window and input events are merged into canonical work sessions — the single source of truth for every duration in the app.

01

Capture

Active window, title, input activity, AFK and IDE/browser metadata are recorded locally as timestamped events.

02

Merge

Consecutive events of the same app and project are joined when the gap is under 30 seconds (5 s across window-title changes).

03

De-duplicate

Duration is the union of intervals, not the span — overlapping sources never inflate your time, and AFK gaps under 60 s are absorbed.

04

Resolve

Each session gets a final category and project by majority rule; sessions shorter than 1.5 s are dropped as noise.

05

Persist

The merged timeline is rebuilt atomically and becomes the only surface reports and billing read — no double counting.

Productivity, transparently

Three buckets, one honest formula

Every activity carries a productivity score from −1 to 1. Instead of a single opaque percentage, time falls into three buckets you can see and re-tune yourself.

score ≥ 0.70

Productive

Focused, value-adding work — your IDE, design tool, deep research.

0.40 – 0.70

Neutral

Supporting or uncertain work. Counted at half weight, so a neutral-only day never looks fully productive.

score < 0.40

Distracting

Off-task time. AFK and idle are tracked separately, so they never silently pad the day.

Day scorescore = (productive + neutral × 0.5) ÷ active time

Scores are never summed event by event — they're weighted by real duration, so two overlapping windows can't double-count toward your day.

Categories you can audit

Classification with a paper trail

Every event is categorized by a transparent, ordered chain of rules — not a black box. The first matching rule wins, and you can always see which one fired.

  1. Domain overrides for canonical app ↔ site mappings.
  2. Your feedback overrides — per-app and per-domain scores you've corrected.
  3. Domain and category rules matching app, title, process or URL — highest priority first.
  4. Browser pinning and category defaults for anything still unmatched.
  5. Name-based fallbacks, and finally a neutral 0.40 default for the truly unknown.

It learns from your corrections

Fix a classification and it becomes a reusable per-app or per-domain override — or stays as one-off review evidence, your choice. Low-confidence segments are surfaced for review, ranked by how uncertain, long and recurring they are, and every prompt explains why it asked.

Sessions, segments & focus

The units that make a day legible

Beyond raw time, LifeCopilot works with meaningful units you can review, confirm and bill against.

Work sessionA merged run of activity in one app and project, with a duration-weighted score and a context-switch count.
Work segmentThe review-and-billing view of attributed work, carrying confidence and a billable flag inherited from its project.
Focus sessionA run of ≥ 20 minutes at a productive score with ≤ 10 context switches per hour — real deep work, not a timer.
Context switchesCounted between distinct app/title pairs, with 2.5 s flicker protection, and reported per active hour.
Projects & clients

Attribution with a confidence score

Work is attached to projects and clients by a ranked chain of signals — each with its own confidence, so you always know how sure the agent is.

Active context / focus sessionWork inside a session you started or confirmed yourself.0.58–1.0
IDE metadataProject path read from the editor or ActivityWatch metadata.0.95
Rule matchYour own app, title, domain or URL-path rules.0.75–0.80
Temporal carry-overAmbient apps — chat, browser, terminal — inherit the last project for up to 10 minutes; confidence decays with the gap.0.40–0.80

It reads context straight from window titles

GitHub org/repoGitLab MRJira keySlack #channelTelegram chatTeams chat
AI agents & IDE

The AI-coding blind spot, finally measured

Time spent with the AI coach and connected tools usually collapses into "a terminal window". LifeCopilot reads the agents' own local logs and turns that into real sessions, memory and context.

Real sessions, not "terminal.exe"

Local agent logs (JSONL / SQLite) become AI sessions with turns, tool and model — and the session's working directory attributes the work to the right project at ≈ 0.99 confidence.

Tokens, context and cost

Each turn's input, output and cache tokens are priced per model. Context usage shows as a share of the 200K window and is flagged when it runs above 70%.

Cost, not revenue

AI spend is treated as cost of work and shown separately from what you bill. Cursor's flat plan reports no per-call price, so only the time counts.

Detected agents

Claude CodeCodex CLICursor Agent / Composer
Privacy

Only aggregates are stored — tokens, cost, model and working directory. Prompt and message content never touch the database.

Objective output

What actually landed in the repo

A read-only scan of your local git repositories adds an output signal next to attention time — so "hours on a project" can be checked against real commits.

Commits & churn

Commits, insertions, deletions and files touched per project and day, scanned every 30 minutes from local .git only.

Attention vs output

When time-on-project and code output diverge, it's a hint of mislabeling or heavy context-switching to look into.

AI-assisted commits

A commit inside an AI session's window (±10 min, matching working directory) is tagged AI-assisted.

Stays on device

Only the first 80 chars of the message plus a hash are stored. No diffs, no file contents, nothing leaves your machine.

Billing, projects & clients

Money that follows the real day

Reviewed work segments roll up into projects, clients and tasks — and into invoices that can show why each block is billable.

Billable by project

Each segment inherits its project's billable flag and rate; work with no project stays non-billable until you assign it.

Projects, tasks, clients

Group work into projects and tasks, attach clients, and assign or split segments by day or custom range.

Reports & invoices

Period reports with top projects and top tasks, exportable, with billable totals broken down per client.

AI cost line

Per-segment AI spend rolls into project and report views as cost, kept clearly separate from gross revenue.

Planning & deadlines

Plan the day, then measure adherence

Planned sessions and calendar context connect intention to what actually happened.

  • Planned & recurring sessionsSchedule sessions, including recurring ones, and link the work that fills them back to the plan.
  • Calendar & meeting contextMeetings provide context and can be linked to specific work segments and projects.
  • Task deadlinesTasks carry deadlines, so planning and billing stay aligned with what's actually due.
  • AdherenceCompare planned vs. actual: segments linked to a planned session show how closely the day matched intent.
Insights & momentum

Your day, in plain numbers

Everything above surfaces as readable insight cards and gentle momentum — never a leaderboard.

Numbered insights

"How your day went, in numbers" — cards grouped as positive, warning and info, including AI-agent time and deep-work notes.

Honest by design

Deep-work cards appear only when there's a real focus session; zero-length segments are never shown as work.

Streaks & XP

Daily and focus streaks with XP and freeze tokens keep momentum without turning work into a competition.