Four or five months into the biggest project I had ever taken on alone, I put it down for an afternoon to fix a COO's Trello reports.
The big project was the kind of thing that, a year and a half earlier, would have taken three or four senior engineers a six-month engagement. I know the price, because I spent eight years quoting work exactly like it as the owner of a software agency. This time it was a software platform I had never touched and an API in a domain I had almost no background in. Thirty days just to scope the workflow and read the documentation before I wrote a line that counted. Daunting, and not the right first project to take on as a one-man fractional AI ops firm. But I had sold the agency and walked away from a model I could see AI was about to take apart, and this was the beast that came through the door first.
So when the COO asked me for something small, I was glad of the change. His Trello reporting was a mess, and not for the reason you'd guess. I wrote later about what was actually broken underneath. This is the afternoon I first put my hands on it.
The situation was ordinary. Multiple boards. A team cranking through tickets at a good pace. Management upstairs wanting better updates on what all that motion was actually producing. And one option for reporting: Blue Cat Reports running inside Trello, which handed him numbers he then had to go and check by hand anyway. So he asked for the humble version: a one-off Excel report I could build him from time to time when the board meeting came round.
How I connected to the board
No add-on. I went straight at Trello's REST API.
It took about ten minutes to get in. You create a Power-Up in the Trello admin, read the API key off it, click through the token authorisation once, and you have a key and a read token that can see every board the account can see. That is the whole login.
From there it is three calls. One to list the boards and find the id of the one you want. One to pull the lists on that board. One to pull every card, and this is the call that matters, because you ask it for the fields you actually need in a single request: the card name, the list it sits in, its labels, its due date, and whether that due date is marked done. Group the cards under their lists, read the labels off each one, and write the whole lot into an Excel workbook.
About a hundred lines of Python, standard library only, nothing to install. It runs the same on my laptop as it would on a server. The COO got his spreadsheet. I went back to the beast.
Why Trello reports are bad
I only understood this once I had the raw cards sitting in front of me in a spreadsheet.
Every reporting add-on for Trello does the same thing underneath. It reads the list a card is sitting in and calls that the status. Card in the Done list, report says done. Simple, and wrong often enough to matter, because nothing checks the list against the label on the card. A card can sit in Completed with a label that still reads In Progress. The add-on calls it done. The COO, reading by eye, would catch it. That is the exact by-hand checking he was trying to stop doing, and no add-on removed it, because none of them reconcile the two.
That is why his real report was still built by hand every quarter. Not because his boards were messy. Because the number the tools gave him was a number he could not stand behind in front of the board.
How to build Trello reporting that holds up
If you are doing this, the whole job, blunt:
Connect straight to the board. Skip the add-on. The API is free and it takes an afternoon.
Do not trust the list. A card's list is not its status. Treat it as a claim, not a fact.
Reconcile the list against the label on every card. When they disagree, that card is the one to look at.
Report the disagreements by name. Do not silently pick a side. The card that says two contradictory things is the one the COO needs to see.
Scope the read to the meeting, not the board. A board meeting needs this quarter's finished work, not every card since launch. My first proper version handed back three hundred and nineteen lines. Nobody reads three hundred and nineteen lines. Scoped right, it was twenty-six. Every one real.
Ship a file, not a dashboard. A COO does not want another login. He wants a PDF and the Excel behind it, in his inbox.
Then hand him the button. Pick the quarter, pick the boards, press run, get the two files back without asking you first. Build the hard part, the reconciliation, in tested code underneath. Let the front end collect three choices and nothing more.
The tool was never the problem. The check nobody wrote was, so fix it.
This was a few afternoons inside a five-month project, and it taught me more about how I want to work than the beast did. Find the thing quietly costing someone their Tuesday. Fix that, especially if it's a quick win. First impressions, remember? Do it out loud, and give the big project its five months.
Monthly Revenues $11,000 | Clients 2 | Prospects 1 outbound live, Meta and WhatsApp still down
Day 110 of 365.