Working Backwards: Jerry - the Ozwell Agent Agent for Knowledge Workers
Introducing Jerry: The Ozwell Agent That Explains Your Work—So You Don’t Have To
“Show me the money.”
For knowledge workers, creators, and developers, the hardest part of the job often isn’t the work itself—it’s explaining the value of that work afterward.
Today, Ozwell announces Jerry, a new intelligent agent designed to articulate the real value of a day’s work—especially when that work doesn’t fit neatly into lines of code, tickets closed, or hours logged.
Inspired by the spirit of Jerry Maguire, Jerry exists to advocate for you.
Modern work is fragmented, contextual, and cognitively demanding. A developer may spend four days untangling a deeply rooted bug and produce a single character of code. A product builder may context-switch between architecture, customer calls, research, and experimentation—only to be asked at the end of the week:
“So… what did you actually do?”
This constant requirement to retrospectively justify time is not just tedious—it’s fundamentally flawed. It rewards visible output over meaningful progress and penalizes deep thinking, problem-solving, and creative work.
Jerry is an Ozwell agent who reads your activity watch data and translates it into organizational value.
Instead of forcing workers to manually reconstruct their day, Jerry analyzes signals across tools, contexts, and time to understand:
- What were you working on
- Why it mattered
- What obstacles did you navigate
- How your effort moved the organization forward
Jerry doesn’t just summarize activity—it interprets contribution.
Jerry is designed for people who:
- Context-switch between deep work, collaboration, and personal life
- Create value that isn’t immediately measurable
- Are tired of writing status updates that undersell their impact
- Want fairer, more accurate representations of their work
While Jerry functions as a developer agent and job agent, its audience is broader: anyone whose output is judged by simplistic metrics but whose value lies in thinking, problem-solving, and execution.
Internally, Jerry operates as a specialized Ozwell agent:
- An activity watch captures behavioral and contextual signals
- A structured internal function call feeds this data into Jerry
- Jerry analyzes the data with a single objective:
articulate the value you bring to the organization - The output is a clear, human-readable narrative suitable for managers, reviews, and leadership visibility
The result is a defensible, intelligible explanation of work that aligns effort with impact.
Measurement systems shape behavior. When organizations only measure what’s easy to see, they lose sight of what actually drives progress.
Jerry helps rebalance that equation—giving workers an advocate, managers better insight, and organizations a more honest understanding of how value is created.
Or, as Jerry himself might put it:
“Show me the money—by showing the work that earns it.”
![][image1]
TimeHarbor is already positioned as “privacy-first time tracking and reflection,” with clock-in/out, project/objective allocation, reflections/notes, user-controlled sharing, and reporting baked into the product framing. (GitHub) So TimeHarbor should be Jerry’s source of intent (what I meant to do) and self-reported outcomes/obstacles (what happened, why it mattered).
![][image2]
ActivityWatch provides local watchers like aw-watcher-window (active window/app/title/url) and aw-watcher-afk (active vs AFK) (ActivityWatch Documentation), exposed via a REST API organized around buckets and events (get/create buckets, events, heartbeats, etc.). (ActivityWatch Documentation) So ActivityWatch becomes Jerry’s context sensor: app/tool usage, switching, focus time, meeting clusters, etc. (without requiring the user to log everything).
![][image3]![][image4]
Pulse is explicitly built for secure short-form institutional knowledge video, with “local-first security” and “on-device until explicitly shared” language. (GitHub) PulseVault is the secure backend and web UI for storing/transcoding, and serving content (Fastify + FFmpeg + Redis + Nginx, HMAC-signed access, tus uploads, etc.). (GitHub) For Jerry: Pulse clips are optional but powerful evidence (quick “here’s what I learned/fixed/shipped” clips) and organizational value artifacts (trainings, demos, walkthroughs).
![][image5]
Ozwell’s public API spec highlights real-time streaming (SSE), tooling, and separation between frontend widget vs. custom backend patterns. (GitHub) Jerry should be implemented as a backend-driven agent (Option 2/3 style): your backend assembles the day’s signals and calls Ozwell to produce the narrative output. (Mieweb)
Jerry should produce three tiers of output from the same underlying data:
-
Daily narrative (manager-readable)
- What I worked on (themes, not raw logs)
- Why it mattered (impact framing)
- Obstacles navigated (invisible work made visible)
- Progress/outcomes (even if no “big ship”)
-
Evidence-backed appendix (defensible)
- “Focus blocks” inferred from ActivityWatch
- TimeHarbor sessions mapped to those blocks
- Links to artifacts: PRs, docs, Pulse clips, tickets (as available)
-
Weekly / review-ready rollups
- Trends: deep work %, collaboration %, context switching load
- Highlights: “most valuable breakthroughs,” “risk reduced,” “speed gained.”
- ActivityWatch runs locally and collects events into buckets (window/afk/etc). (ActivityWatch Documentation)
- TimeHarbor logs deliberate sessions + user reflections. (GitHub)
- Pulse optionally records short clips (demo, recap, walkthrough) that are local-first until shared. (GitHub)
A small service (could be a Node/Fastify app since Ozwell ecosystem is already Node-friendly) that:
- Pulls ActivityWatch events for a time window (ex, “today 00:00–23:59”)
- Pulls TimeHarbor sessions/notes for the same window
- Pulls shared PulseVault artifacts (or links) when present (GitHub)
- Normalizes everything into a Jerry Daily Context Document (JSON)
-
Receives the Daily Context Document as structured input
-
Uses a consistent rubric to produce:
- value narrative
- evidence appendix
- suggested manager-facing bullets
-
Streams output via SSE to UI (optional) (GitHub)
Design this as an explicit schema so you can:
- re-run narratives,
- Compare output quality,
- and ensure privacy controls are enforced.
Recommended top-level shape:
identity: userId, workspaceId, timezonePrivacy Policy: What categories are allowed to leave the devicetimeharbor:- sessions: start/end, project/objective tags, reflections, user-declared “outcome.”
activitywatch:- focusBlocks: merged window events excluding AFK, grouped by app/project heuristic
- contextSwitching: switches/hour, meeting clusters, “interrupt density.”
artifacts:- pulse: shared clips (id, title, tags, link, visibility)
- links: PRs, issues, docs (optional integrations later)
orgContext:- current goals / OKRs / project priorities (manual or pulled from your systems)
This is the core “function call” payload your press release references.
- Start with ActivityWatch: build a day timeline from bucket events (window + afk). (ActivityWatch Documentation)
- Segment into focus blocks (continuous work in the same app/domain) and collaboration blocks (Zoom/Meet/Slack heavy segments).
- For each TimeHarbor session, map to overlapping focus blocks.
- Use TimeHarbor as the “truth” for what the work was supposed to be and the user’s own summary/notes. (GitHub)
Create a lightweight classifier that maps window titles/apps/URLs into:
- project,
- work type (debugging, writing, planning, meeting, admin),
- “value category” (delivery, risk reduction, enablement, learning, support).
-
If the user recorded a 30–90s “end of block recap” clip in Pulse:
- treat it as the best available summary of what changed and why
- Attach it to the relevant theme. Pulse is designed for secure institutional knowledge video with local-first handling, which aligns well with “share only what you choose.” (GitHub)
Jerry should be constrained by a rubric so it doesn’t become a generic summarizer:
![][image6]
Inputs
- timeline + themes
- TimeHarbor reflections
- inferred obstacles (context switching spikes, repeated returns to the same repo/app, long “stuck” blocks)
- artifacts (Pulse clips, PR links, etc.)
Outputs
-
“Value narrative” in org language:
- impact framing, tradeoffs, risks retired, options explored
-
“Manager bullets” (copy/paste)
-
“Evidence appendix” (defensible mapping back to signals)
-
“Follow-ups,” Jerry suggests:
- things to document, people to update, risks to flag
Guardrails
- Never expose raw window titles/URLs unless the user explicitly opts in
- Default to aggregating to themes (“debugged auth flow”), not surveillance (“spent 47 min in file X”)
TimeHarbor explicitly emphasizes “private by default” and user-controlled sharing. (GitHub) Pulse similarly emphasizes “on-device until explicitly shared.” (GitHub)
So implement privacy as a policy engine inside Jerry Ingestion:
-
Local-only vs exportable fields
-
Redaction rules (URLs, window titles, filenames)
-
“Share modes”:
- Private journal (full fidelity, local)
- Manager summary (aggregated, redacted)
- Evidence pack (includes links/artifacts user-approved)
-
Ingestion service pulls:
- TimeHarbor sessions + notes
- ActivityWatch focus blocks + AFK (no fine-grained titles)
-
Jerry outputs daily narrative + bullets + 3 metrics:
- deep work time
- collaboration time
- context switches/hour
-
Evidence appendix: each narrative claim references:
- TimeHarbor session id(s)
- aggregated ActivityWatch block id(s)
-
Add “obstacle detection” heuristics:
- Repeated re-entry into the same block
- unusually high switching
- long blocks with no artifact
- Allow linking a Pulse clip to a TimeHarbor session
- If PulseVault is used, store clips with secure access patterns (it already describes secure uploads + serving architecture). (GitHub)
- Jerry includes “watch this 45s recap” links in the appendix for stakeholders
- GitHub/Jira/Linear/Docs ingestion to auto-link artifacts
- OKR alignment (tag themes to goals)
- Jerry Ingestion API (Node/Fastify)
-
Endpoints:
POST /jerry/daily/build(build context doc for date range)POST /jerry/daily/render(calls Ozwell and streams output)
-
Connectors:
- ActivityWatch REST: buckets/events (ActivityWatch Documentation)
- TimeHarbor DB/API (Meteor/Mongo-based per repo description) (GitHub)
- PulseVault API (later; start by storing links)
- Jerry UI (could be inside TimeHarbor)
- “Generate today’s narrative.”
- Toggle: private /manager/evidencee
- Editable output (user can correct before sharing)
activitywatch-clientusage or direct REST calls (ActivityWatch Documentation)- A shared
jerry-schemapackage (Zod) to validate context docs (fits Ozwell’s Zod-first spec culture) (GitHub)
-
Given a day with:
- 2 TimeHarbor sessions, 1 reflection each
- ActivityWatch shows 3 major focus blocks + 1 meeting block.
-
Jerry must output:
- a narrative that mentions both projects,
- at least one obstacle,
- at least one “why it mattered” statement tied to an org outcome,
- an appendix that maps claims → session/block ids,
- with redactions applied by default.
- TimeHarbor
- Pulse
- https://github.com/mieweb/pulse https://apps.apple.com/us/app/pulse-cam/id6748621024 https://play.google.com/store/apps/details?id=com.mieweb.pulse
- https://github.com/mieweb/PulseVault https://pulse-vault.opensource.mieweb.org/
- https://github.com/mieweb/pulseclip https://pulseclip.os.mieweb.org
- Check out: