Data Classification at Coinbase
2023Coinbase manages a lot of data. Some of it is sensitive, like a name or a phone number, and the columns that hold it have to be marked. Without those marks it is hard to decide who can see the data and how long to keep it.
A system already guessed the tags. There was no good way to check a guess, or to fix one that was wrong. I designed and built the data classification feature: a table, a few filters, and a way to classify the data.
What I built
- A table of the data with filters on top. AG Grid Enterprise renders it, because there is a lot of data to show at once.
- A way to approve, reject or change a tag, and to say how the data is used.
- Every change goes to a manager or an admin for approval. You cannot approve your own request.
- A page for my requests, a page for approvals, and a page for audit history.
This code lived inside our Python monolith. In 2023 backend engineers there started writing frontend code with GPT, so I set the React app up with TypeScript, linting and formatting, and ran the checks from the repository's Python pre-commit hooks, since Husky was not an option there. It made it easier for everyone on the team to keep bad code out.
Where it shipped
It went live inside Coinbase in June 2023 as an internal tool. I built data ownership on top of it later.
Outcome
An engineer can check a tag, fix it if it is wrong, get the fix approved, and see the history of what changed. Before this there was no proper way to correct a tag.
The feature is still live, and a lot more has been built on top of it since.
What I learned
- An internal application that handles large amounts of data needs a virtualized grid, and a long list of table features nobody has the bandwidth to build in house. Row grouping, custom cells, multiple selection, range selection, tree data, Excel export, tool panels. We bought AG Grid Enterprise so we could spend our time on our own product. It is a good library, and I learned all its nuances.
- How to add TypeScript and ESLint to a React app that lives inside a Python project.
- A little about the data world, and how complex it can be.