Let color find the repeats
A record is thousands of rows that look the same. Every repeated number, date, and tower gets its own color, so a pattern shows before anyone reads a row.
Drag the handle to turn color off and on.

Research project · CDR Analyzer · 2025
Call records reach police investigators as a spreadsheet thousands of rows long. Nobody on the team had seen one, so I went to the police and designed a tool that shows the record first. It shipped inside Jarvis One, and when we went back after a week, the investigators had gone to the tabs first.

Quick look
Investigators were reading records by hand. The tool shows the record first, with a tab for each question they ask.

Three kinds of investigator I met in Lucknow and New Delhi.



A record is thousands of rows that look the same. Every repeated number, date, and tower gets its own color, so a pattern shows before anyone reads a row.
Drag the handle to turn color off and on.





Every investigator asked the same things: who he calls most, which phone, where he stays. Each question is now a tab, named in the words they already use.

Investigators left the record to look numbers up in other tools. Decode brings the owner back beside the row instead.

The graphical view turns rows into pictures: calls per day, the busiest hours, and who talks to whom.



Where we started
A call detail record, or CDR, is the log a phone company keeps for every phone. It is the kind of case where a phone number is the only lead the police have to start from. We did not know what a record looks like, which parts matter, what makes a lead, or how police get one.
| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | A party number | B party number | Call type | Date | Time | Duration | IMEI | IMSI |
| 2 | 9928292924 | 9922323232 | CALL-IN | 07/02/2024 | 18:48:12 | 390 | 357006162552730 | 404980191149918 |
| 3 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 23:10:00 | 180 | 357006162552730 | 404980191149918 |
| 4 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:50:00 | 171 | 357006162552730 | 404980191149918 |
| 5 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:30:00 | 151 | 357006162552730 | 404980191149918 |
| 6 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:10:00 | 140 | 357006162552730 | 404980191149918 |
| 7 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 21:50:00 | 120 | 357006162552730 | 404980191149918 |
| 8 | 9928292924 | 8222523232 | CALL-IN | 07/02/2024 | 21:30:00 | 120 | 357006162552730 | 404980191149918 |
| 9 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 21:10:00 | 20 | 357006162552730 | 404980191149918 |
| 10 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 20:50:00 | 28 | 357006162552730 | 404980191149918 |
| 11 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 20:30:00 | 12 | 357006162552730 | 404980191149918 |
| 12 | 9928292924 | 7722323232 | CALL-IN | 08/02/2024 | 20:10:00 | 11 | 357006162552730 | 404980191149918 |
| 13 | 9928292924 | 9922323232 | CALL-IN | 07/02/2024 | 18:48:12 | 390 | 357006162552730 | 404980191149918 |
| 14 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 23:10:00 | 180 | 357006162552730 | 404980191149918 |
| 15 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:50:00 | 171 | 357006162552730 | 404980191149918 |
| 16 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:30:00 | 151 | 357006162552730 | 404980191149918 |
| 17 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:10:00 | 140 | 357006162552730 | 404980191149918 |
| 18 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 21:50:00 | 120 | 357006162552730 | 404980191149918 |
| 19 | 9928292924 | 8222523232 | CALL-IN | 07/02/2024 | 21:30:00 | 120 | 357006162552730 | 404980191149918 |
| 20 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 21:10:00 | 20 | 357006162552730 | 404980191149918 |
| 21 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 20:50:00 | 28 | 357006162552730 | 404980191149918 |
| 22 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 20:30:00 | 12 | 357006162552730 | 404980191149918 |
| 23 | 9928292924 | 7722323232 | CALL-IN | 08/02/2024 | 20:10:00 | 11 | 357006162552730 | 404980191149918 |
| 24 | 9928292924 | 9922323232 | CALL-IN | 07/02/2024 | 18:48:12 | 390 | 357006162552730 | 404980191149918 |
| 25 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 23:10:00 | 180 | 357006162552730 | 404980191149918 |
| 26 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:50:00 | 171 | 357006162552730 | 404980191149918 |
| 27 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:30:00 | 151 | 357006162552730 | 404980191149918 |
| 28 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 22:10:00 | 140 | 357006162552730 | 404980191149918 |
| 29 | 9928292924 | 9922323232 | CALL-OUT | 07/02/2024 | 21:50:00 | 120 | 357006162552730 | 404980191149918 |
| 30 | 9928292924 | 8222523232 | CALL-IN | 07/02/2024 | 21:30:00 | 120 | 357006162552730 | 404980191149918 |
| 31 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 21:10:00 | 20 | 357006162552730 | 404980191149918 |
| 32 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 20:50:00 | 28 | 357006162552730 | 404980191149918 |
| 33 | 9928292924 | 8222523232 | CALL-IN | 08/02/2024 | 20:30:00 | 12 | 357006162552730 | 404980191149918 |
| 34 | 9928292924 | 7722323232 | CALL-IN | 08/02/2024 | 20:10:00 | 11 | 357006162552730 | 404980191149918 |
A call record as it arrives, one row per call. The first eleven rows are from the design, and the rest repeat them.
Going to the source
I went twice: to the Special Task Force in Lucknow, and to I4C, India's cybercrime centre in New Delhi. I watched investigators work through call records on real cases. Records come back as one file per number, and they are read by hand.
The Special Task Force office in Lucknow, and the Ministry of Home Affairs in New Delhi, which runs I4C.
Who I was designing for

"I go down the sheet. If a number comes back, I mark it."

"Who does he call most? Which phone? Where does he sleep?"

"A number is nothing until I know whose it is."
What already existed
Investigators were not short of software. The tools sold for this work are old, and most are a spreadsheet with a window around it. They ask for the right question before they show anything.

The tables stay empty until you already know what to search for.

The questions the investigators asked us, split across small panes and menus.

Rows all look the same, and nothing on screen says which one matters.
What I decided
The obvious version was a search screen like the tools already sold, a form first and rows after. I did not build it, because every investigator we watched started by reading, not by asking. So the case opens on every call, and each repeated value carries a color.
| Sno | A Party | B party | Date | Duration | Time | Type | First cell ID |
|---|---|---|---|---|---|---|---|
| 1 | 9928292924 | 9922323232 | 07/02/2024 | 390 | 18:48:12 | CALL-IN | 404-98-8702-230658673 |
| 2 | 9928292924 | 9922323232 | 07/02/2024 | 180 | 23:10:00 | CALL-OUT | 404-98-8702-230658673 |
| 3 | 9928292924 | 9922323232 | 07/02/2024 | 171 | 22:50:00 | CALL-OUT | 404-98-8702-230658673 |
| 4 | 9928292924 | 9922323232 | 07/02/2024 | 151 | 22:30:00 | CALL-OUT | 404-98-8702-230658673 |
| 5 | 9928292924 | 9922323232 | 07/02/2024 | 140 | 22:10:00 | CALL-OUT | 404-98-8702-230658673 |
| 6 | 9928292924 | 9922323232 | 07/02/2024 | 120 | 21:50:00 | CALL-OUT | 404-98-8702-230658673 |
| 7 | 9928292924 | 8222523232 | 07/02/2024 | 120 | 21:30:00 | CALL-IN | 404-98-8702-230658673 |
| 8 | 9928292924 | 8222523232 | 08/02/2024 | 20 | 21:10:00 | CALL-IN | 404-98-8702-230658673 |
| 9 | 9928292924 | 8222523232 | 08/02/2024 | 28 | 20:50:00 | CALL-IN | 403-98-8702-230658673 |
| 10 | 9928292924 | 8222523232 | 08/02/2024 | 12 | 20:30:00 | CALL-IN | 403-98-8702-230658673 |
| 11 | 9928292924 | 7722323232 | 08/02/2024 | 11 | 20:10:00 | CALL-IN | 403-98-8702-230658673 |
The groups appear on their own, with no sorting, no filters, and no form to fill in first.
A fair question
Every group can also be sorted, filtered, or isolated with Show only this number. A reader who cannot tell pink from blue loses the shortcut, not the answer. With hundreds of numbers, colors stop helping, so a ranked list takes over.
Version one
Version one put the whole record in one table and used color to do the scanning. It had no tabs and no charts yet.
Start, pick the files from the case, and the report builds. Then you ask a question with a filter, the part that turned out to be the problem.
What testing showed
Investigators are investigators first, not software users. Record after record, the same investigator opened the filter builder and rebuilt the same small rules. He did not notice he was doing it. I should have seen that coming.
Version two
We kept the table and added a tab across the top for each question from the field. We named every tab in the words investigators already use, like B party and day stay.

Each tab answers one question, in one tap.
Reading the shape
Some questions are about routine: when a phone is busy, and who sits at the center of its calls. Rows cannot show that, so we added a graphical view. It turns the record into pictures, so a pattern like late night calls to one number stands out at a glance.

The graphical view, one tab next to the table.


What they asked for next
In testing, we watched investigators leave the record to look a number up in other OSINT tools. Switching tools broke their flow, so we built the lookup into the CDR itself. Now the owner appears beside the row, and everything stays in one place.
One tap on a B party number brings back the name, phone company, and address. The owner card is the design's own sample.
What happened
A short test with us watching is not real work. So the investigators used the prototype on their own cases for a week. Here is what we found when we came back.
With a question in mind, the investigators we watched went to a tab before the filter builder.
They told us repeated numbers and towers were the first thing they noticed, before reading a row.
CDR Analyzer went live as one tool inside Jarvis One, so a record opens from the case it belongs to.
"I do not want to learn a tool. I want to know who this number talks to."
Investigator, Special Task Force, Lucknow, as I remember it
I would take a prototype to the field before version one, not after it. We spent a whole round learning that investigators are not software users. One afternoon in Lucknow with a paper mock of the tabs would have told us the same. Two months earlier nobody on our team knew what a call record was. By the end, the investigators were opening their records to the tabs before reading a row.
Next case study