

In our Rails app, it was fast/easy enough to search questions for the UI by rehydrating the YAML into plain old Ruby objects (n >'' = 'group' Our first table for PaperTrail recorded objects and changes as a YAML blob sitting in a text column. At first, it was for disaster recovery, but now it could give us time travel superpowers. In particular, we wanted to do this analysis at scale rather than as one-offs.įortunately, we track versions of our records using a fun little gem called PaperTrail.

This can change the results initially filled in (also, spelling).
VISUAL JSON MODELER PROFESSIONAL
For context, we quality control most interviews to ensure accurate scoring, professional conduct, and excellence. Over the past eight months though we started asking questions about how results and questions were changing over the course of some edits. Those YAML blobs worked really well for years.
VISUAL JSON MODELER UPDATE
Just update the UI components and the scoring classes to handle the new shape (types in the example), and voila. This allowed a lot of quick iteration without reshaping the tables every time we wanted a new question/result format. Tell me about a time you traversed a tricky array. # Notice this is all pretty human readable, hooray YAML. ALTER TABLE questions ADD COLUMN content RAW NOT NULL Īs long as the YAML conformed to a general shape and the UI and scoring engines could understand it, we were good.

How did they describe it? They used a text column with YAML stuffed inside. Since the dawn of Karat, some wise engineering folks made a great tradeoff and decided to punt on figuring out what exactly the shape of a question should be in a relational database. Notice all the caveats, qualifiers, and commas? You get the point. This also comes with some scoring of the correctness. Result: an ordered list of question answers during an interview with an attached snapshot of the questions as asked. May have multiple parts, diagrams, external resources, constraints, or follow ups. Question: a yes/no, multiple choice, or open ended response query for knowledge. Loosely defined and ignoring a bunch of complexity we have a few definitions: “But Kyle,” you say, “isn’t a question just some words and a punctuation mark?”

Life gets more complicated when we start talking about questions and results: the bread and butter of over 60,000 Karat conducted interviews. Rails hides a lot of the complexity for us, but it’s not all that complex and we do plenty of data analysis on those raw tables without Ruby to lend a hand. We also store some things in S3 like videos, but those locations are referenced with a pretty simple table. They’re often a row in a relational table with some foreign keys, non-nullable columns, default values, and not much else. The Karat engineering team uses a lot of simple data models: users, events, etc. So the powers that be decided we should just tell a story about the bike, which in this case is migrating a few old data models. I’ve shared some PR-approved quotes about the engineering culture at Karat, but they never really capture that thrill and terror. We’re always riding the bike as we try to build it. Any engineer at a startup will attest your data models are probably evolving faster than your code.
