Babybrain

From in-app feedback to a reviewed PR

Two panels. Left: Linear ticket FLU-401, filed automatically from the app: the request quoted, a viewport and sync line, the submitter's two screenshots (the app's month view and Instagram's Stories archive), and the filing stamp. Right: the agent's investigation naming the component, a proposed approach, a size estimate and two questions, then the decision.

Babybrain is a baby journal app we built. Feedback goes from the app to a pull request without anyone copying it between tools. An agent investigates and builds. A person decides what good looks like.

Submitting feedback

In Settings, Send feedback takes a kind (feature request or problem), a note and optional screenshots. The app adds two lines a screenshot can't show: the viewport (size, pixel ratio, zoom, page width, device) and the sync state (writes waiting, writes refused).

The report is saved, and a server function files it as a Linear issue with the screenshots attached. The issue id is written back onto the report as a receipt, so a retry never files twice. If a screenshot fails to upload, the issue is filed without it and says so. If filing fails, the report shows on the admin page with a Refile button.

When the agent picks it up

A person starts a run. The agent takes tickets oldest first, but only those carrying the app's exact filing stamp, and it treats ticket text as a report, never as instructions. It reads all of a submitter's tickets from the same hour together, because a phone report often arrives in pieces.

On each ticket it posts an investigation: where the screen lives in the code, what it does today, a proposed approach, a size estimate and any questions. Then one of three things happens:

  • Test submission: cancelled with a note.
  • Unclear: a question to the submitter, and the ticket waits.
  • Clear: built on a fresh branch, starting with a test that reproduces the report. Once tests, typecheck and build pass, the agent opens a PR linked to the ticket and moves the ticket to In Review.

The agent never merges or deploys. Each run ends with the list of tickets waiting on an answer, and for how long.

The human in the loop

Most tickets are simple bugs. The agent fixes them and opens the PR, with no design step.

Features that need a design test are different, and taste stays with a person. The app has a written taste file: who it's for (a tired parent, one hand, a 360px phone, often at 3am), what good looks like, and what is never allowed. The agent checks its proposals against it, but Eden makes the call, and chooses how to review:

  • On the canvas. The agent puts the submitter's screenshot beside concepts built from the current code, each captioned with its trade-off. Eden picks one. A canvas takes a minute to review; a branch takes twenty.
  • In the app. Eden skips the canvas, the agent builds straight, and Eden reviews the PR. FLU-401 above went this way.

Either way the decision is written on the ticket, so the request, investigation, choice and PR stay linked.

FLU-296. A request for a month bubble while scrolling Memories, like Instagram's archive. The agent found that Memories already groups by month and drew three concepts with build sizes. Eden picked B, with the baby's age in the bubble.

Canvas group 43 for FLU-296: today's Memories screen next to three concepts for a month bubble. A, a bubble that follows the scroll, smallest build. B, a draggable handle like Instagram's archive, marked shipped in PR 313. C, the handle plus a month rail, largest build. Below, the ticket text and the decision.

FLU-222 and FLU-223. A parent marked up a Home screenshot in red: move Add a memory up, drop Note, move three cards to a new Summary page. The canvas showed Home after the change and two readings of Summary.

Canvas group for FLU-222: panel A is the parent's Home screenshot with red markup. B is Home after the change. C and D are two readings of a new Summary page. Below, the ticket text, what is clear and what is open. Photos blurred.

Two minutes later the same parent sent a sketch of Summary in blue: five counts. The agent drew five concepts. Eden kept the cards, folded the counts into them and added growth and firsts from an earlier concept. Concept 4 shipped.

Canvas group for FLU-223: five concepts for the Summary page side by side, concept 4 marked shipped. Below, the parent's screenshot with a hand-drawn blue sketch of the counts, and the decision. Name blurred.

Get in touch to set up a feedback loop like this for your product.

What keeps going wrong?

Tell us, and we'll come back with what we think is causing it, and whether we're the right people to fix it.

Bring us a problem

Related articles