
I'm a freelance dev. A lot of my work is fixing apps someone else built. The client sends something like "search is broken??", the stack is new to me, nothing is commented, and they want it done yesterday. So I tested myself. I took a real ticket on an open-source admin dashboard I had never opened (shadcn-admin: React, TanStack Router and Table, Zod) and gave myself one hour, no AI. After 60 minutes I had changed 0 lines. I spent the whole hour just trying to understand where things were. That's the part I wanted help with. Most AI tools jump straight into editing, and then I can't review the change or explain it to the client. So I built TicketLens, a custom mode for IBM Bob that makes understanding come first. Every ticket goes through the same 7 steps: 1. Read: I drop in the client's email as a screenshot and Bob reads it. 2. Translate: Bob writes what the client actually means, the scope, and up to 3 questions. I approve before it moves on. 3. Map: 3 read-only subagents look at the data, the UI and the conventions at the same time. The map only includes things backed by a real file and line. 4. Plan: which files change and why, including tests or other pages that get affected. I approve again. Nothing gets edited before this. 5. Change: small edits that follow the project's existing patterns. 6. Verify: the project's own build and lint, repeated until both pass. 7. Handoff: a short note I can send to the client, plus notes for me. Everything is saved in .bob/tickets/, so the next developer doesn't start from zero. What happened on the same codebase: Ticket 1, from Maria: show who each task is assigned to, the due date, and highlight anything due in the next 30 days. By hand: 60 min, 0 lines. With TicketLens: about 22 min, 4 files, build and lint passed first try, 2.98 Bob coins. Bob found the data was already there but the schema was dropping it. At the plan step I noticed a test fixture that would have broken the build. Bob checked every place the type was used and added it as the 4th file. Ticket 2, from Jordan: "Users search is broken??" Bob's first explanation blamed an exact-match filter. I tested the app myself and typing "jil" already worked, so that was wrong. The real cause was that search only looked at usernames, never the full name or email. I also pointed out a second page that uses the same table, and Bob checked it before editing. About 14 min, 2 files, lint and build passed, 2.49 coins. Both tickets together used 5.47 of my 40 Bob coins. The point isn't "AI does everything." It's that I only have to learn the part of the codebase the ticket touches, and Bob shows its evidence so I can catch mistakes before code changes. Both runs had real moments where I corrected it. I also added rules for database tickets (extra approval for schema and migration changes, no destructive commands), but I haven't tested those yet since both demo tickets were frontend. Who it's for: freelancers and agency devs doing maintenance work, and anyone new on a team with old code.
27 Sep 2026