← PROJECTS/2026/pulsio§ PROJECTS / CASE STUDY
LIVE2 Months

Pulsio

Catch burnout before it's too late. 30-second anonymous check-ins.

FIG. 01Pulsio
FIG. 01Pulsio

§ 01Problem

This one started with something I kept noticing at work. We'd finish a knowledge transfer session and nobody would ask anything. Meetings would end without anyone bringing up the thing half the room had been complaining about an hour earlier. It's not that there was nothing wrong, it's that saying it out loud in front of everyone costs you something.

The usual ways of handling this don't really help. One on ones, retros, engagement surveys that go through HR. They all ask you to put your name on a complaint, which is fine if people already feel comfortable and useless if they don't.

So I wanted to see if you could get a decent read on how a team was doing without anyone having to identify themselves.

§ 02Approach

The idea was a check in that takes about thirty seconds. You pick an emoji for how the week felt, and there's one optional field for a blocker if something was actually in your way. That's it. No text box asking you to explain yourself.

I wasn't trying to collect detailed feedback. I wanted the trend. One person having a bad week doesn't tell you much. A team drifting downward over a month does, and you can act on that without knowing who is who.

For the stack, I wanted the frontend on Cloudflare and I didn't want to run a server behind it. That's most of the reason I went with Convex. Its actions handle the scheduled check in reminders and the outbound email, so all of that sits in Convex instead of needing a cron host or a queue running somewhere.

The real time subscriptions ended up mattering for a different reason than I expected. The dashboard updates as submissions come in, and watching your teammates fill theirs in turns out to be a better prompt than a reminder email. Getting people to actually submit was always going to be the hard part, so anything that helped there was worth having.

Stripe went in for subscriptions.

§ 03Tradeoffs

Collecting less information was on purpose. A free text field would have given me much better data, but anonymity isn't only about names. People can be identified by how they write and everyone knows it, so a box asking you to explain yourself brings back the same hesitation the whole thing was meant to get around. An emoji and an optional blocker keep it low stakes enough that answering honestly is easier than overthinking it. The cost is that Pulsio can tell you something is wrong without being able to tell you what.

Going with Convex meant giving up portability. I got scheduled actions and real time updates without maintaining any infrastructure, but the data layer isn't something I could move elsewhere without rewriting a lot of it. For a solo project where the alternative was running a server I didn't want to run, that was a fine trade. If it had customers depending on it I'd think about it differently.

I also built the Stripe integration before I knew whether anyone wanted the product, which was the wrong order to do things in.

§ 04Outcome

A few trials, no paying customers.

Looking back, the problem was that Pulsio was one more thing to log into. My team doesn't speak up because doing it means stepping out of the normal flow of work. What Pulsio asked people to do was step out of the normal flow of work and go somewhere else, after their manager had already convinced everyone to sign up for it. The check in itself took thirty seconds. Everything around the check in didn't. I moved the friction instead of removing it.

If I built it again I'd do it as an extension or a plugin inside the tools teams already use, rather than as its own product. The check in needs to show up where people already are, at the end of the meeting or in the channel they're already in, instead of being a separate place to go. Same data, same thirty seconds, without asking anyone to onboard onto anything new.

// OUTCOME

A few trails, no paying customers.