Day 18: First Users, First Lessons
A demo call was booked for today. I prepared, opened the link, waited. Nobody showed up.
Honestly? Not a big deal. The call runs in the background while I'm coding. Five minutes of waiting, then back to work. Calendly filters for people who are genuinely interested. Sometimes the filter catches false positives. That's fine.
The Impatience Problem
Something I'm noticing more and more: I get impatient in meetings. Not all meetings, but the ones where the conversation drifts and doesn't get to the point.
It's a founder thing, I think. When you're building something and every hour feels precious, your brain keeps calculating: "I could be fixing that setup bug right now. I could be writing that test. I could be shipping."
That's not always fair to the person across the table. Some conversations need time to unfold. Some don't lead anywhere and that's okay too. But I'm learning to be more intentional about it. Set a timeframe. Be clear about what I want to get out of a conversation. Not rude, just focused.
The irony: the time I "save" by being impatient in meetings, I then spend on exactly the kind of work that makes the meetings necessary in the first place. You can't build a product in isolation. But you can build it more efficiently if you protect your deep work hours.
The Setup Problem
This one stings. I realized that anyone who cloned the repo and followed the README instructions hit a permissions error during initial setup. The setup wizard couldn't create the first admin user because of how file permissions were configured in the Docker container.
I never noticed because I always run the dev build, where permissions are set correctly. And the CI smoke test checks that the production build starts, but it didn't actually run through the setup flow.
Looking at the GitHub stats: 3,248 clones from 470 unique people in the last two weeks. 517 unique visitors on the repo page. 61 stars. These aren't vanity metrics to me right now. They're 470 people who ran git clone and tried to set up Pinchy. Many of them probably hit this permissions wall, silently gave up, and moved on. That's the worst kind of bug: the one that kills first impressions before you even know they existed.
We haven't officially released a version yet. From v1 onward, this first-run experience has to be solid. Fixed the permissions. Extended the smoke test to cover setup. Moving on.
User Management Gets Real
14 commits, 22 files, PR #26 merged. The invite system got a proper overhaul:
- Invited users now show up in the user list with status badges (pending, accepted, expired) and actions (resend, revoke)
- Desktop redirect fixed to go straight to the first agent's chat instead of an empty agent list
- Duplicate personal agents prevented when multiple users share a setup
- Agent settings scroll restored and save bar layout fixed
- Long names and emails truncate properly with tooltips
- Error handling for invite actions because network requests fail and UI should handle it gracefully
All of these are "nobody notices when they work" fixes. The kind that separates a side project from a product.
The Pattern
Day 18 was about closing gaps. The gap between "works on my machine" and "works for everyone." The gap between "I have meetings" and "I have productive meetings." Both need attention. The code gaps are easier to fix.