Hi HN! I've been building Dayflow, a macOS app that automatically tracks what you're actually working on (not just which apps you have open).
Here's what it does:
- It creates a semantic timeline of your day;
- It does it by understanding the content on your screen (with local or cloud VLMs);
- This allows you to see exactly where your time went without any manual logging.
Traditional time trackers tell you "3 hours in Chrome" which is not very helpful. Dayflow actually understands if you're reading documentation, debugging code, or scrolling HN. Instead of "Chrome: 3 hours", you get "Reviewed PR comments: 45min", "Read HN thread about Rust: 20min", "Debugged auth flow: 1.5hr".
I was an early Rewind user but rarely used the retrieval feature. I built Dayflow because I saw other interesting uses for screen data. I find that it helps me stay on track while working - I check it every few hours and make sure I’m spending my time the way I intended - if I’m not, I try to course correct.
Here’s what you need to know about privacy:
- Run 100% locally using qwen2.5-vl-3b (~4GB model)
- No cloud uploads, no account
- Full source available under MIT license (https://github.com/JerryZLiu/Dayflow)
- Optional: BYO Gemini API key for better quality (stored in Keychain, with free-tier workaround to prevent training on your data)
The tech stack is pretty simple, SwiftUI with a local sqlite DB. Uses native macOS apis for efficient screen captures. Since most people who run LLMs locally already have their tool of choice (Ollama, LLMStudio, etc.), I decided to not embed an LLM into Dayflow.
By far the biggest challenge was adapting from SOTA vision models like Gemini 2.5 Pro to small, local models. My constraints were that it had to take up <4GB of ram and have vision capabilities. I had to do a lot of evals to figure out that Qwen2.5VL-3B was the best balance of size and quality, but there was still a sizable tradeoff in quality that I had to accept. I also got creative with sampling rates and prompt chunking to deal with the 100x smaller context window. Processing a 15 minute segment takes ~32 local LLM calls vs 2 Gemini calls!
Here’s what I’m working on next:
Distillation: Using Gemini's high-quality outputs as training data to teach a local model the patterns it needs, hopefully closing the quality gap.
Custom dashboards where you can track answers to any question like "How long did I spend on HN?" or "Hours until my first deep work session of the day
I'd love to hear your thoughts, especially if you've struggled with productivity tracking or have ideas for what you'd want from a tool like this.
Devil's advocate opinion - this would also show how little per hour lawyers spend working :)
One of my first ever bug reports, was a submission to a company that made legal software.
In particular, it was a document management system built as a plugin for MS Outlook. (ew)
Most users, had no issue. However for one user, a lawyer, in particular, she would open and close a bunch of documents (using the built in pdf viewer) and then the application would crash, taking outlook with it, often requiring a restart.
I went over to view the behavior, and she was some kind of robot. Unlike her peers, she had 12 documents open at once, and she could update and bill (in minimum 6 or 7 minute increments) 12 customers cases in 15 minutes. It was like meeting the Usain Bolt of law practitioners. My back of the napkin math is that she billed like 3-4 hours for every hour she was online.
Open Email
Load Attachment
Review Attachment
Reply to email
Assign Email thread to case number
Close attachment.
12 times in 15 minutes.
The bug was that, after loading ~6 pdfs, the application would back off and wait to deallocate the memory. It would then later, randomly decide to write to that memory when another pdf was loaded, and go kaput.
Just to replicate the issue, I had to close and reopen pdfs so quickly my hands hurt.
It took 3 revisions of the bug report to get the software company to accept it and resolve it. And even then I think the pdf limit just increased, before we submitted another report and had it resolved permanently.
On that note, the principal of another law firm I supported would require us to cleanse his personal laptop of porn themed golf games he had downloaded on a regular basis.
The impression I get is that, lawyers work but the work is just unevenly distributed.
Were they porn-themed golf games, or golf-themed porn games? This is an important distinction.
Digging deep in to my memory, I recall that the user had at least one instance of Strip Putt Putt. I cant conceive of how that answers your question but its the best I can do.
It’s never occurred to me that either existed but…rule 34, I guess.
Something like Strip-Golf? For every under par she (or he) takes off an item of clothing. For every over they put on one, ha.
Sounds like a game Epstein and Trump (and some "enigmas") could've played at Mar-A-Lago. With cheating, though.
I get the sentiment behind your comment but I have a few lawyers in the family and they work round the clock. They might be in meetings or pouring over documents all day that might not look like work to the average software engineer but trust me, they do work hard. And it's true for everyone - from junior interns to senior partners.
> They might be in meetings or pouring over documents all day
FWIW it’s “poring over” when reading carefully.
From Merriam-Webster
As a general rule I find lawyers are real honest about their hours, especially as you get to bigger firms.
Anybody have a different experience?
> Devil's advocate opinion
Not sure if the pun was intended, but I'm here for it
lawyers have minimum billable time, if they reply to an email in 1min they will still bill you 10-15min. Ask me how I know :(
Wouldn’t you? If I switch context and interrupt my flow to answer a question I’m losing at least 20 mins to regaining focus, why shouldn’t that be reflected in billing?
Knowledge work is knowledge work, no point belittling colleagues in a different profession.
Thats how MSPs operate too. At least the good ones. Billing increments are sometimes as low as 6 minutes, or as high as 30. 15 minutes is average in my experience.
I'm a litigation legal admin - I have been for 25-30 years. I instantly brought this up to an associate, telling them, "Maybe not now, but before you retire, this'll be the norm in the industry."
She had been complaining the day before about having to reconstruct a huge bunch of little 0.1 entries involving e-mails to various individuals in cases. If it could be done automatically, through a local LLM? chef's kiss
Trust me, law is definitely where you want to land this thing.
In all honesty, I have absolutely no negotiating power or decision-making authority for my firm, but it's a big one -- if that's a direction you want to go, can't guaranty I can swing enough weight, but I probably could find you the right people to talk to, give you an introduction.
I'll also have to add, though, that you'd have to figure out a way for it to be cross-platform or live outside just macOS. Unfortunately, that's a very uncommon choice in the legal world (or anywhere else).
I’m a software contractor and I’ve wanted this forever. I’m prototyping something on Linux now.
Let me know if this Linux app gets anywhere!
I've used https://github.com/ActivityWatch/activitywatch before on Linux, it's actually quite good but takes a fair bit of fiddling to get good results.
There's no plugin for screenshot or recording in 1fps.
Yeah, but it's written in a modular way and extending it is not as painful as one would expect. I actually went that way and wrote a couple of custom watchers for things like that.
+1! I was actually looking to fork ActivityWatch to support your exact flow.
Per hour? In the UK they bill by the 6-minute! If ever anything told you something about a profession...
They sell in blocks of 1/10th hours??Thats gotta be the jail call special
Every lawyer in the USA that I've ever worked with also bills in 6 minute increments. Which means every email is 6 minutes. Every phone call is at least 6 minutes. etc.
Isn't this better though? The alternative being that every email or phone call is an hour, or that they batch it up based on gut feel. If I get a phone call that could easily steal 6 minutes of focus time (note that I specify focus time, even if the call is only 30 seconds you'd have to mentally switch tasks back and forth).
I’m not sure that 6 minutes is a useful denomination of focus time. Maybe legal work is too different from IT and it makes sense there, but when I need to focus on something, 15 minutes is the smallest amount I would allocate for a task.