Misc

February 15, 2022

My Experience at Developer Week 2022

A summary on the hackathon experience and project.

On January 24th, my good friend Yannis Panagis and I entered the Developer Week 2022 Hackathon. Since last August, Yannis and I have been hacking together and always find hackathons a great way to challenge ourselves. In our day jobs, it's impossible to reach our full creative potential all of the time. As engineers, we can be slowed down by politics, design constraints, legal requirements, 100% test code coverage, logic that won't work, other teams, and the list goes on.

For me, hackathons provide a way to get out of those situations and flex those creative muscles. Remind yourself that when there's nothing in the way, you can be a creative machine and Developer Week 2022 seemed like an excellent opportunity to do just that. More specifically, the Symbl.ai + Agora challenge piqued our interest as we had never experimented with WebRTC before. The exact brief:

Combine Agora's rich interactive experience APIs with Symbl.ai's conversation intelligence (AI that understands natural human conversations) to build a more enhanced and smarter conversation experience for any use case of your choice.

The Idea

With every hack, Yannis and I try to keep it personal. We feel that if we are invested in the problem statement, the project will be more interesting to work on. So we asked ourselves - "Where in tech can we make conversations smarter?". One thing almost immediately came to mind - interviews.

As web developers, we've been through many tech interviews, and they can be frustrating - especially when those interviews don't even have someone else on the other side! We've all paid our dues with Hackerrank and Leetcode for the technical part of the process, but with little feedback and no practice alternatives, there was never a safe space to prepare for those recorded interviews once you make it past the tech tests.

Even once you finally feel ready to interview, you often don't receive any feedback at all to help you improve for the next one! The problem extends both ways - the harsh truth is that interviewing well is hard.

Our Solution

We built interview toast! A trifecta of three internal tools to help you prepare, get feedback and assess.

  • Interview Preparation Tool: There are a lot of great tools out there to help you prepare for the coding part of the application process. Interviews aren't just about code, and there aren't a lot of tools out there specifically designed to help you with the conversational part of the process. By leveraging Symbl's conversation intelligence AI in our video application, InterviewToast goes beyond simple speech-to-text and provides real-time insights and extracts keywords, sentiment and conversation analytics such as talk-to-listen ratios.
  • Interview Feedback Tool: By sourcing questions directly from the candidate they want to practice, InterviewToast extracts quantitative and qualitative feedback on practice interview sessions to help candidates get ready to find their next dream job.
  • Interview Assessment Tool: Our interview tool goes beyond the practice rooms straight into the interview battlefield. InterviewToast uses Agora to provide real-time transcriptions, keyword and profanity detection, and analysis on live interviews.

But the best way to explain it is by showing it! You can try it out at InterviewToast.com.

Fun fact!

The name "InterviewToast" has a double meaning! Toast can be undercooked or burned, just like an interview! But toast can also refer to the small alerts you get while using software applications.

How it was Built

elements={[ { id: "2", data: { label: (

<div>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" focusable="false" className="w-9 h-9 mx-auto" >

<path className="fill-current text-accent-1" d="M14,0C6.268,0,0,6.268,0,14s6.268,14,14,14s14-6.268,14-14S21.732,0,14,0z M6.2,21.8 C4.1,19.7,3,16.9,3,14.2L13.9,25C11.1,24.9,8.3,23.9,6.2,21.8z M16.4,24.7L3.3,11.6C4.4,6.7,8.8,3,14,3c3.7,0,6.9,1.8,8.9,4.5 l-1.5,1.3C19.7,6.5,17,5,14,5c-3.9,0-7.2,2.5-8.5,6L17,22.5c2.9-1,5.1-3.5,5.8-6.5H18v-2h7C25,19.2,21.3,23.6,16.4,24.7z" ></path>

<g id="innards" fill="white">

<path d="M6.2,21.8C4.1,19.7,3,16.9,3,14.2L13.9,25C11.1,24.9,8.3,23.9,6.2,21.8z"></path>

<path d="M16.4,24.7L3.3,11.6C4.4,6.7,8.8,3,14,3c3.7,0,6.9,1.8,8.9,4.5l-1.5,1.3C19.7,6.5,17,5,14,5 c-3.9,0-7.2,2.5-8.5,6L17,22.5c2.9-1,5.1-3.5,5.8-6.5H18v-2h7C25,19.2,21.3,23.6,16.4,24.7z"></path>

</g>

</svg> Gatsby Functions

), }, position: { x: 350, y: 125 }, }, { type: "output", id: "2.1", data: { label: (

<div>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 223 52" fill="none" >

<path d="M30.576 29.3617L30.5593 29.3451L30.5704 29.3728L30.576 29.3617Z" className="fill-current" />

<path d="M30.5716 29.3721L30.549 29.4061L30.5773 29.3948L30.5716 29.3721Z" className="fill-current" />

<path d="M84.0288 15.7175C83.717 15.9325 83.4805 16.2335 83.3407 16.583L77.9653 28.9465C77.7718 29.4356 77.5944 29.914 77.4278 30.3871C77.2611 30.8601 77.1805 31.145 77.0407 31.6503C76.7773 30.7365 76.4656 29.8442 76.1054 28.9626L70.3913 16.583C70.2462 16.2604 70.0312 15.9755 69.7624 15.7444C69.4184 15.481 68.9937 15.352 68.5637 15.3789H63.4893L74.2401 37.4181L68.7464 49.4054H73.5521C74.0412 49.443 74.5304 49.3194 74.9443 49.0506C75.2776 48.7764 75.5356 48.4217 75.6915 48.0185L90.2804 15.3789H85.1146C84.7276 15.3735 84.346 15.4917 84.0288 15.7175Z" className="fill-current" />

<path d="M181.26 34.3537C180.927 34.0258 180.534 33.7624 180.099 33.5797C179.658 33.3862 179.185 33.284 178.701 33.2786C178.201 33.2733 177.707 33.3754 177.244 33.5689C176.798 33.7517 176.395 34.0205 176.046 34.3537C175.707 34.6816 175.444 35.0794 175.272 35.5148C174.901 36.434 174.901 37.4607 175.272 38.3799C175.449 38.8153 175.712 39.2078 176.046 39.5303C176.384 39.8474 176.782 40.1001 177.217 40.2667C177.68 40.4549 178.174 40.5516 178.674 40.5462C179.163 40.5462 179.647 40.4549 180.099 40.2667C180.534 40.0947 180.927 39.8313 181.26 39.5034C181.588 39.1701 181.851 38.7831 182.034 38.3531C182.421 37.4392 182.421 36.4018 182.034 35.4879C181.851 35.0633 181.588 34.6816 181.26 34.3537Z" className="fill-current" />

<path d="M168.337 4.24622H162.36V40.2133H168.337V4.24622Z" className="fill-current" />

<path d="M222.705 6.64409C222.506 6.19255 222.221 5.77864 221.866 5.43461C221.506 5.09059 221.087 4.81644 220.63 4.62292C220.157 4.42403 219.646 4.3219 219.13 4.3219C218.625 4.3219 218.13 4.42403 217.668 4.62292C217.222 4.81644 216.813 5.09059 216.469 5.43461C216.125 5.78402 215.846 6.19255 215.657 6.64409C215.453 7.11713 215.351 7.62779 215.356 8.14383C215.351 8.64375 215.453 9.13829 215.657 9.5952C216.05 10.4929 216.77 11.2078 217.668 11.5949C218.13 11.7938 218.625 11.8959 219.13 11.8959C219.646 11.8959 220.157 11.7938 220.63 11.5949C221.543 11.2078 222.275 10.4929 222.688 9.5952C222.898 9.13829 223.006 8.64375 223 8.14383C223.011 7.62779 222.909 7.11713 222.705 6.64409Z" className="fill-current" />

<path d="M222.124 15.3795H216.146V40.2087H222.124V15.3795Z" className="fill-current" />

<path d="M210.588 25.2975C210.561 23.8677 210.292 21.1853 209.841 19.992C209.416 18.8524 208.76 17.8096 207.911 16.9387C207.045 16.084 206.013 15.4282 204.874 15.0036C203.32 14.5305 201.702 14.3155 200.079 14.3693C198.047 14.4499 196.047 14.8853 194.166 15.654C191 16.9925 189.758 18.2557 189.758 18.2557L192.268 22.4109C194.564 20.6424 197.289 19.5297 200.165 19.1857C201.546 19.0513 203.438 19.4759 204.218 20.2608C205.594 21.6369 205.341 23.1904 205.438 24.0881C205.438 24.2171 205.476 24.7923 205.508 25.6254C205.331 25.5932 204.008 25.3567 203.546 25.3137C201.573 25.0556 199.579 25.018 197.601 25.2169C189.903 26.2167 187.839 31.9685 189.521 35.9678C190.398 38.0911 192.263 39.6822 194.988 40.4778C198.396 41.4776 203.761 40.0477 205.83 37.0482C205.83 37.0482 206.115 38.6017 206.196 39.0049C206.277 39.4511 206.562 39.8381 206.97 40.037C207.405 40.2198 207.879 40.3004 208.352 40.2681L211.308 40.2144C210.889 37.1343 210.695 34.0326 210.722 30.9256C210.717 29.6248 210.588 25.2975 210.588 25.2975ZM204.621 33.1672C204.325 33.4736 204.008 33.7585 203.68 34.0326C198.423 38.2362 194.504 36.2419 194.128 33.6725C193.822 31.6191 195.843 29.3721 199.649 28.9582C201.648 28.7862 203.659 28.9045 205.621 29.313C205.648 30.2322 205.675 31.1836 205.701 32.0921L204.621 33.1672Z" className="fill-current" />

<path d="M155.227 19.1037C154.485 17.9802 153.517 17.0234 152.388 16.2923C151.27 15.5881 150.007 15.1366 148.695 14.97C147.228 14.7334 145.723 14.8517 144.309 15.3194C142.992 15.7978 141.75 16.4805 140.638 17.3298V4.25134H134.838V40.213H138.6C138.939 40.2291 139.278 40.1378 139.557 39.9442C139.821 39.7131 139.998 39.396 140.052 39.0519L140.32 37.3802L140.444 36.7244C140.713 37.0576 140.982 37.3802 141.267 37.6812C141.697 38.1273 142.17 38.5305 142.686 38.8745C143.218 39.2239 143.793 39.5088 144.39 39.7292C146.491 40.4818 148.781 40.5248 150.91 39.8421C152.227 39.3798 153.41 38.6004 154.356 37.5791C155.361 36.4717 156.13 35.1762 156.613 33.7625C157.178 32.1445 157.484 30.4458 157.511 28.7311C157.586 26.8981 157.414 25.0597 157 23.2696C156.656 21.786 156.054 20.3777 155.227 19.1037ZM142.326 34.6924C141.568 34.3 141.197 33.7034 140.648 32.9078V21.3506C141.347 20.6626 142.159 20.0981 143.046 19.6842C155.264 15.3194 154.377 40.8903 142.315 34.6924H142.326Z" className="fill-current" />

<path d="M61.2965 29.9036C60.8664 29.2371 60.3128 28.6619 59.657 28.2104C59.528 28.119 59.3936 28.0384 59.2592 27.9524C58.6679 27.5546 58.0282 27.2213 57.3617 26.9687C55.6146 26.3236 53.83 25.7861 52.0185 25.356C51.2014 25.1518 50.4005 24.8991 49.621 24.5873C48.976 24.3401 48.3793 23.9907 47.8525 23.5445C47.4117 23.1682 47.1483 22.6253 47.1107 22.0501C47.2182 21.2814 47.6859 20.6041 48.3739 20.2386C49.664 19.3355 52.642 19.2442 54.2869 19.6419C54.9105 19.7763 55.5286 19.9591 56.1307 20.1795C56.6682 20.373 57.1251 20.545 57.5283 20.717C58.039 20.9482 58.6141 20.975 59.1409 20.7923C59.3344 20.6794 59.5011 20.5289 59.6247 20.3407L61.0492 17.653C59.8666 16.7284 58.5281 16.0135 57.1036 15.5405C53.7816 14.5084 50.2338 14.4654 46.8903 15.4168C45.6755 15.7877 44.5359 16.3737 43.5307 17.1531C42.6921 17.8089 42.0148 18.6529 41.5579 19.6151C41.1278 20.5396 40.9236 21.5502 40.9558 22.5715C40.9558 22.6038 40.9558 22.6361 40.9558 22.6683C40.9558 22.7006 40.9558 22.8564 40.9558 22.9478C40.9612 23.867 41.187 24.7647 41.6278 25.571C42.0417 26.286 42.6007 26.9095 43.2726 27.3987C43.5522 27.5922 43.8424 27.775 44.1435 27.9362C44.6004 28.2158 45.0842 28.4577 45.5841 28.6565C46.4657 29.0113 47.358 29.3177 48.2718 29.5757C49.1856 29.8338 50.0941 30.0757 50.9595 30.2907C51.782 30.4896 52.5883 30.7476 53.3731 31.0594C54.0235 31.312 54.6202 31.6775 55.147 32.1344C55.6039 32.5484 55.8727 33.1289 55.8888 33.7471C55.8565 34.0535 55.7759 34.3491 55.6415 34.6287C55.4319 35.0587 55.1147 35.4296 54.7169 35.7037C53.5559 36.4079 52.212 36.7573 50.8574 36.6982C49.9221 36.7304 48.9814 36.6337 48.0729 36.4079C46.9279 36.0854 45.8152 35.6392 44.7563 35.0909C44.4122 34.9189 44.036 34.8275 43.6489 34.8329C43.3264 34.8222 43.0092 34.8813 42.7136 35.0157C42.4663 35.1447 42.2459 35.3275 42.0793 35.5532L40.6656 38.2786C41.2354 38.6871 41.8428 39.0473 42.4771 39.3537C43.2726 39.7407 44.1005 40.0686 44.9498 40.3266C45.8582 40.6061 46.7882 40.8158 47.7289 40.9609C48.7072 41.1061 49.6909 41.1759 50.68 41.1652C52.3571 41.1706 54.0289 40.9394 55.6415 40.4771C56.9263 40.1062 58.1304 39.4988 59.1947 38.6817C60.1031 37.9668 60.8342 37.0422 61.318 35.994C61.791 34.9351 62.0168 33.774 61.9684 32.6129C61.9684 32.6129 61.9684 32.5699 61.9684 32.543C61.9684 32.5161 61.9684 32.3763 61.9684 32.2903C61.9577 31.4518 61.7265 30.624 61.2965 29.9036Z" className="fill-current" />

<path d="M125.603 16.1162C124.189 15.2508 122.56 14.7938 120.899 14.81C119.281 14.8207 117.701 15.2991 116.346 16.1861C116.346 16.1861 115.76 16.5839 115.524 16.772C114.594 17.5568 113.766 18.4653 113.062 19.4597C111.32 14.181 104.757 13.4231 100.698 16.772C100.193 17.1859 99.72 17.6375 99.2793 18.1159L98.8815 16.256C98.6718 15.5679 98.016 15.1217 97.3011 15.1809H93.5114V40.2143H99.6824V21.8625C100.295 21.1584 101.021 20.5563 101.833 20.0887C103.477 19.1103 106.574 19.2178 107.746 20.5886C108.439 21.3573 108.96 22.5936 108.96 24.4589V40.2143H114.336V21.8625C114.949 21.1584 115.674 20.5563 116.486 20.0887C118.126 19.1103 121.227 19.2178 122.399 20.5886C123.092 21.3573 123.614 22.5936 123.614 24.4589V40.2143H129.833V26.2919C129.833 22.5775 129.409 20.6369 128.554 19.2232C127.844 17.96 126.828 16.8903 125.603 16.1162Z" className="fill-current" />

<path opacity="0.65" d="M30.5596 29.3445L11.6919 14.6803L1.98383 7.13318L7.72479 24.77L12.1703 38.4397L16.4276 51.5074L30.5489 29.4036L30.5704 29.3714L30.5596 29.3445Z" className="fill-current" />

<path opacity="0.8" d="M30.5594 29.3445L17.4648 0L11.6916 14.6803L7.7245 24.77L0 44.4226L12.17 38.4398L30.5486 29.4036L30.5701 29.3714L30.5594 29.3445Z" className="fill-current" />

</svg> Real-time API

), }, position: { x: 0, y: 125 }, }, { type: "output", id: "2.2", data: { label: (

<div>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 175 61" className="w-24 h-auto mx-auto" >

<g>

<path d="M98,28.19a9.85,9.85,0,1,1,9.84-9.85A9.86,9.86,0,0,1,98,28.19M98,.48a17.86,17.86,0,1,0,17.86,17.86A17.89,17.89,0,0,0,98,.48" className="fill-current text-primary" />

<path d="M127.67,5.08l-.22.22-.24.23-.16-.29L126.91,5a8.53,8.53,0,0,0-6.34-4.4L119.9.47V36.21l.67-.09a8.3,8.3,0,0,0,7.35-8.41V18.34a9.93,9.93,0,0,1,8.83-9.79l.53-.06v-8l-.64.07a15.21,15.21,0,0,0-9,4.54" className="fill-current text-primary" />

<path d="M17.86,28.2a9.85,9.85,0,1,1,9.85-9.85,9.86,9.86,0,0,1-9.85,9.85M29.33,4l-.15.2-.15.2-.2-.15-.19-.15A17.86,17.86,0,1,0,17.86,36.21a17.67,17.67,0,0,0,10.78-3.63l.19-.14.2-.16.15.21.15.2a8.52,8.52,0,0,0,5.73,3.44l.66.09V.48l-.66.09A8.53,8.53,0,0,0,29.33,4" className="fill-current text-primary" />

<path d="M157.14,28.2A9.85,9.85,0,1,1,167,18.35a9.86,9.86,0,0,1-9.85,9.85M174.34.57A8.57,8.57,0,0,0,168.6,4l-.14.19-.15.21-.2-.15-.19-.15a17.86,17.86,0,1,0-10.78,32.09,17.67,17.67,0,0,0,10.78-3.63l.19-.14.2-.16.15.21.14.2a8.56,8.56,0,0,0,5.74,3.44l.66.09V.48Z" className="fill-current text-primary" />

<path d="M58.18,8.49h0a9.85,9.85,0,1,1-9.86,9.85A9.86,9.86,0,0,1,58.2,8.49M69.35,32.27A17.82,17.82,0,0,0,73,8.33c-.25-.38-.53-.75-.82-1.11A8.66,8.66,0,0,0,76,1.15l.1-.67H58.11A17.85,17.85,0,0,0,47,32.27a17.81,17.81,0,0,0-2.14,2l5.44,6a9.85,9.85,0,1,1,13,14.3l5.45,6a17.84,17.84,0,0,0,.51-28.26" className="fill-current text-primary" />

</g>

</svg> WebRTC Client

), }, position: { x: 175, y: 125 }, }, { id: "1.1", type: "input", // input node data: { label: (

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" focusable="false" className="w-12 h-12 mx-auto" >

<path className="fill-current text-accent-1" d="M14,0C6.268,0,0,6.268,0,14s6.268,14,14,14s14-6.268,14-14S21.732,0,14,0z M6.2,21.8 C4.1,19.7,3,16.9,3,14.2L13.9,25C11.1,24.9,8.3,23.9,6.2,21.8z M16.4,24.7L3.3,11.6C4.4,6.7,8.8,3,14,3c3.7,0,6.9,1.8,8.9,4.5 l-1.5,1.3C19.7,6.5,17,5,14,5c-3.9,0-7.2,2.5-8.5,6L17,22.5c2.9-1,5.1-3.5,5.8-6.5H18v-2h7C25,19.2,21.3,23.6,16.4,24.7z" ></path>

<g id="innards" fill="white">

<path d="M6.2,21.8C4.1,19.7,3,16.9,3,14.2L13.9,25C11.1,24.9,8.3,23.9,6.2,21.8z"></path>

<path d="M16.4,24.7L3.3,11.6C4.4,6.7,8.8,3,14,3c3.7,0,6.9,1.8,8.9,4.5l-1.5,1.3C19.7,6.5,17,5,14,5 c-3.9,0-7.2,2.5-8.5,6L17,22.5c2.9-1,5.1-3.5,5.8-6.5H18v-2h7C25,19.2,21.3,23.6,16.4,24.7z"></path>

</g>

</svg> Gatsby.js

), }, position: { x: 150, y: 0 }, }, { id: "1.2", type: "input", // input node data: { label: (

<svg xmlns="http://www.w3.org/2000/svg" className="w-12 h-12 mx-auto" viewBox="0 0 64 64" fillRule="evenodd" >

<path d="M27.733 34.453l8.64-5.013 8.533 5.013-8.533 4.907-8.64-4.8zM1.813 19.627L36.373 0 62.08 14.613 53.547 29.44l-17.173-9.813-25.92 14.72z" className="fill-current text-primary-light" fillRule="nonzero" />

<path d="M27.733 54.08v-9.813l8.533-4.907 8.64-4.907v9.813l-8.533 4.907v9.813L27.733 64zm0-19.627l-8.64-4.907-8.64 4.8v-9.813l25.92-14.72V29.44zm25.707-9.92v-4.907l8.64-5.013.107 9.813-8.64 5.013z" className="fill-current text-primary" fillRule="nonzero" />

<path d="M19.093 58.773V29.547l8.533-4.8.107 9.707 8.64 4.8v9.92l-8.64-4.587V64zM6.08 31.787l-4.267-2.56v-9.6l8.64 4.907v9.813l-4.373-2.56zm30.293-12.16V9.813l17.067 9.813.107 9.813-17.173-9.813z" className="fill-current text-primary-dark" fillRule="nonzero" />

</svg> TensorFlowJS

), }, position: { x: 350, y: 0 }, }, { id: "3", type: "output", // output node data: { label: (

<div>

<svg xmlns="http://www.w3.org/2000/svg" className="w-24 h-12 mx-auto" viewBox="0 0 120 60" >

<path d="M40.973 34.43l2.3-1.81c.644 1.134 1.686 1.778 2.882 1.778 1.288 0 1.993-.828 1.993-1.748 0-1.104-1.318-1.44-2.76-1.87-1.778-.552-3.77-1.226-3.77-3.802 0-2.146 1.87-3.832 4.415-3.832 2.177 0 3.403.828 4.476 1.932l-2.085 1.594c-.552-.828-1.318-1.257-2.36-1.257-1.196 0-1.81.644-1.81 1.472 0 1.012 1.288 1.38 2.698 1.84 1.81.583 3.832 1.38 3.832 3.924 0 2.116-1.686 4.14-4.6 4.14-2.39.03-4.016-.98-5.212-2.36zm20.39-6.898h2.483v1.012c.583-.736 1.472-1.196 2.514-1.196 2.146 0 3.434 1.38 3.434 3.74v5.55h-2.545v-5.212c0-1.226-.552-1.932-1.686-1.932-.95 0-1.717.644-1.717 2.177v4.967H61.36zm9.014 4.568c0-3.22 2.36-4.752 4.415-4.752 1.196 0 2.116.43 2.73 1.073v-5.09h2.483v13.306H77.52v-1.012c-.613.705-1.564 1.196-2.76 1.196-1.932 0-4.384-1.533-4.384-4.722zm7.205-.03c0-1.35-.98-2.453-2.33-2.453a2.4 2.4 0 0 0-2.453 2.453 2.38 2.38 0 0 0 2.453 2.453c1.35 0 2.33-1.104 2.33-2.453zm3.005-2.085c0-3.802 2.85-6.837 6.806-6.837 1.962 0 3.618.705 4.814 1.84.49.46.89.98 1.226 1.564l-2.207 1.35c-.828-1.502-2.085-2.3-3.802-2.3-2.422 0-4.292 1.993-4.292 4.384 0 2.453 1.84 4.384 4.384 4.384 1.932 0 3.31-1.104 3.77-2.8h-4.17v-2.422h6.898v1.012c0 3.556-2.545 6.653-6.5 6.653-4.17 0-6.93-3.158-6.93-6.837zm14.042-2.453H97.1v1.502c.46-.95 1.288-1.502 2.514-1.502h1.012l-.92 2.422h-.675c-1.318 0-1.9.705-1.9 2.39v4.292h-2.514zm6.653 0h2.483v9.106h-2.483v-6.684h-.92zm1.257-1.38c.828 0 1.502-.675 1.502-1.502s-.675-1.502-1.502-1.502-1.502.675-1.502 1.502.675 1.502 1.502 1.502zm1.84 5.948c0-3.22 2.36-4.752 4.415-4.752 1.196 0 2.115.43 2.73 1.073v-5.09h2.483v13.306h-2.483v-1.012c-.613.705-1.564 1.196-2.76 1.196-1.932 0-4.384-1.533-4.384-4.722zm7.205-.03c0-1.35-.98-2.453-2.33-2.453a2.4 2.4 0 0 0-2.453 2.453 2.38 2.38 0 0 0 2.453 2.453c1.35 0 2.33-1.104 2.33-2.453zm-50.803 0c0-2.637-1.9-4.722-4.69-4.722-2.637 0-4.752 2.116-4.752 4.752s1.962 4.752 4.814 4.752c1.962 0 3.373-.95 4.17-2.3l-1.993-1.196c-.43.797-1.226 1.318-2.177 1.318-1.318 0-2.146-.644-2.422-1.656h7.02v-.95zm-6.93-1.104c.368-.858 1.196-1.44 2.238-1.44s1.84.49 2.177 1.44z" className="fill-current text-site-text" />

<path d="M5.996 24.96h10.02v10.02H5.996z" fill="#fff" />

<path d="M5.996 24.96h10.02v10.02H5.996z" className="fill-current text-secondary-light" enable-background="new " />

<path d="M16.016 34.98h9.963v9.963h-9.963z" fill="#fff" />

<path d="M16.016 34.98h9.963v9.963h-9.963z" className="fill-current text-secondary-light" enable-background="new " />

<path d="M5.996 44.944h10.02v.058H5.996zm0-9.964h10.02v9.963H5.996z" className="fill-current text-secondary" />

<path d="M16.016 14.998h9.963v9.963h-9.963zM25.98 25.02H36v9.963H25.98z" className="fill-current text-secondary-dark" />

<path d="M25.98 34.98V24.96h-9.963v10.02z" className="fill-current text-secondary" />

<g className="fill-current text-secondary">

<path d="M25.98 14.998H36v9.963H25.98z" />

<path d="M25.98 24.96H36v.058H25.98z" />

</g>

</svg> SendGrid Email

), }, position: { x: 250, y: 250 }, }, { id: "4", type: "output", // output node data: { label: (

<svg xmlns="http://www.w3.org/2000/svg" className="w-12 h-12 mx-auto" viewBox="0 0 32 32" >

<path d="M19.62 11.558l-3.203 2.98-2.972-5.995 1.538-3.448c.4-.7 1.024-.692 1.414 0z" fill="#ffa000" />

<path d="M13.445 8.543l2.972 5.995-11.97 11.135z" fill="#f57f17" />

<path d="M23.123 7.003c.572-.55 1.164-.362 1.315.417l3.116 18.105-10.328 6.2c-.36.2-1.32.286-1.32.286s-.874-.104-1.207-.3L4.447 25.673z" fill="#ffca28" />

<path d="M13.445 8.543l-8.997 17.13L8.455.638c.148-.78.592-.855.988-.167z" fill="#ffa000" />

</svg> Firebase

), }, position: { x: 450, y: 250 }, }, { id: "5", type: "output", // output node data: { label: (

<div>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 223 52" fill="none" >

<path d="M30.576 29.3617L30.5593 29.3451L30.5704 29.3728L30.576 29.3617Z" className="fill-current" />

<path d="M30.5716 29.3721L30.549 29.4061L30.5773 29.3948L30.5716 29.3721Z" className="fill-current" />

<path d="M84.0288 15.7175C83.717 15.9325 83.4805 16.2335 83.3407 16.583L77.9653 28.9465C77.7718 29.4356 77.5944 29.914 77.4278 30.3871C77.2611 30.8601 77.1805 31.145 77.0407 31.6503C76.7773 30.7365 76.4656 29.8442 76.1054 28.9626L70.3913 16.583C70.2462 16.2604 70.0312 15.9755 69.7624 15.7444C69.4184 15.481 68.9937 15.352 68.5637 15.3789H63.4893L74.2401 37.4181L68.7464 49.4054H73.5521C74.0412 49.443 74.5304 49.3194 74.9443 49.0506C75.2776 48.7764 75.5356 48.4217 75.6915 48.0185L90.2804 15.3789H85.1146C84.7276 15.3735 84.346 15.4917 84.0288 15.7175Z" className="fill-current" />

<path d="M181.26 34.3537C180.927 34.0258 180.534 33.7624 180.099 33.5797C179.658 33.3862 179.185 33.284 178.701 33.2786C178.201 33.2733 177.707 33.3754 177.244 33.5689C176.798 33.7517 176.395 34.0205 176.046 34.3537C175.707 34.6816 175.444 35.0794 175.272 35.5148C174.901 36.434 174.901 37.4607 175.272 38.3799C175.449 38.8153 175.712 39.2078 176.046 39.5303C176.384 39.8474 176.782 40.1001 177.217 40.2667C177.68 40.4549 178.174 40.5516 178.674 40.5462C179.163 40.5462 179.647 40.4549 180.099 40.2667C180.534 40.0947 180.927 39.8313 181.26 39.5034C181.588 39.1701 181.851 38.7831 182.034 38.3531C182.421 37.4392 182.421 36.4018 182.034 35.4879C181.851 35.0633 181.588 34.6816 181.26 34.3537Z" className="fill-current" />

<path d="M168.337 4.24622H162.36V40.2133H168.337V4.24622Z" className="fill-current" />

<path d="M222.705 6.64409C222.506 6.19255 222.221 5.77864 221.866 5.43461C221.506 5.09059 221.087 4.81644 220.63 4.62292C220.157 4.42403 219.646 4.3219 219.13 4.3219C218.625 4.3219 218.13 4.42403 217.668 4.62292C217.222 4.81644 216.813 5.09059 216.469 5.43461C216.125 5.78402 215.846 6.19255 215.657 6.64409C215.453 7.11713 215.351 7.62779 215.356 8.14383C215.351 8.64375 215.453 9.13829 215.657 9.5952C216.05 10.4929 216.77 11.2078 217.668 11.5949C218.13 11.7938 218.625 11.8959 219.13 11.8959C219.646 11.8959 220.157 11.7938 220.63 11.5949C221.543 11.2078 222.275 10.4929 222.688 9.5952C222.898 9.13829 223.006 8.64375 223 8.14383C223.011 7.62779 222.909 7.11713 222.705 6.64409Z" className="fill-current" />

<path d="M222.124 15.3795H216.146V40.2087H222.124V15.3795Z" className="fill-current" />

<path d="M210.588 25.2975C210.561 23.8677 210.292 21.1853 209.841 19.992C209.416 18.8524 208.76 17.8096 207.911 16.9387C207.045 16.084 206.013 15.4282 204.874 15.0036C203.32 14.5305 201.702 14.3155 200.079 14.3693C198.047 14.4499 196.047 14.8853 194.166 15.654C191 16.9925 189.758 18.2557 189.758 18.2557L192.268 22.4109C194.564 20.6424 197.289 19.5297 200.165 19.1857C201.546 19.0513 203.438 19.4759 204.218 20.2608C205.594 21.6369 205.341 23.1904 205.438 24.0881C205.438 24.2171 205.476 24.7923 205.508 25.6254C205.331 25.5932 204.008 25.3567 203.546 25.3137C201.573 25.0556 199.579 25.018 197.601 25.2169C189.903 26.2167 187.839 31.9685 189.521 35.9678C190.398 38.0911 192.263 39.6822 194.988 40.4778C198.396 41.4776 203.761 40.0477 205.83 37.0482C205.83 37.0482 206.115 38.6017 206.196 39.0049C206.277 39.4511 206.562 39.8381 206.97 40.037C207.405 40.2198 207.879 40.3004 208.352 40.2681L211.308 40.2144C210.889 37.1343 210.695 34.0326 210.722 30.9256C210.717 29.6248 210.588 25.2975 210.588 25.2975ZM204.621 33.1672C204.325 33.4736 204.008 33.7585 203.68 34.0326C198.423 38.2362 194.504 36.2419 194.128 33.6725C193.822 31.6191 195.843 29.3721 199.649 28.9582C201.648 28.7862 203.659 28.9045 205.621 29.313C205.648 30.2322 205.675 31.1836 205.701 32.0921L204.621 33.1672Z" className="fill-current" />

<path d="M155.227 19.1037C154.485 17.9802 153.517 17.0234 152.388 16.2923C151.27 15.5881 150.007 15.1366 148.695 14.97C147.228 14.7334 145.723 14.8517 144.309 15.3194C142.992 15.7978 141.75 16.4805 140.638 17.3298V4.25134H134.838V40.213H138.6C138.939 40.2291 139.278 40.1378 139.557 39.9442C139.821 39.7131 139.998 39.396 140.052 39.0519L140.32 37.3802L140.444 36.7244C140.713 37.0576 140.982 37.3802 141.267 37.6812C141.697 38.1273 142.17 38.5305 142.686 38.8745C143.218 39.2239 143.793 39.5088 144.39 39.7292C146.491 40.4818 148.781 40.5248 150.91 39.8421C152.227 39.3798 153.41 38.6004 154.356 37.5791C155.361 36.4717 156.13 35.1762 156.613 33.7625C157.178 32.1445 157.484 30.4458 157.511 28.7311C157.586 26.8981 157.414 25.0597 157 23.2696C156.656 21.786 156.054 20.3777 155.227 19.1037ZM142.326 34.6924C141.568 34.3 141.197 33.7034 140.648 32.9078V21.3506C141.347 20.6626 142.159 20.0981 143.046 19.6842C155.264 15.3194 154.377 40.8903 142.315 34.6924H142.326Z" className="fill-current" />

<path d="M61.2965 29.9036C60.8664 29.2371 60.3128 28.6619 59.657 28.2104C59.528 28.119 59.3936 28.0384 59.2592 27.9524C58.6679 27.5546 58.0282 27.2213 57.3617 26.9687C55.6146 26.3236 53.83 25.7861 52.0185 25.356C51.2014 25.1518 50.4005 24.8991 49.621 24.5873C48.976 24.3401 48.3793 23.9907 47.8525 23.5445C47.4117 23.1682 47.1483 22.6253 47.1107 22.0501C47.2182 21.2814 47.6859 20.6041 48.3739 20.2386C49.664 19.3355 52.642 19.2442 54.2869 19.6419C54.9105 19.7763 55.5286 19.9591 56.1307 20.1795C56.6682 20.373 57.1251 20.545 57.5283 20.717C58.039 20.9482 58.6141 20.975 59.1409 20.7923C59.3344 20.6794 59.5011 20.5289 59.6247 20.3407L61.0492 17.653C59.8666 16.7284 58.5281 16.0135 57.1036 15.5405C53.7816 14.5084 50.2338 14.4654 46.8903 15.4168C45.6755 15.7877 44.5359 16.3737 43.5307 17.1531C42.6921 17.8089 42.0148 18.6529 41.5579 19.6151C41.1278 20.5396 40.9236 21.5502 40.9558 22.5715C40.9558 22.6038 40.9558 22.6361 40.9558 22.6683C40.9558 22.7006 40.9558 22.8564 40.9558 22.9478C40.9612 23.867 41.187 24.7647 41.6278 25.571C42.0417 26.286 42.6007 26.9095 43.2726 27.3987C43.5522 27.5922 43.8424 27.775 44.1435 27.9362C44.6004 28.2158 45.0842 28.4577 45.5841 28.6565C46.4657 29.0113 47.358 29.3177 48.2718 29.5757C49.1856 29.8338 50.0941 30.0757 50.9595 30.2907C51.782 30.4896 52.5883 30.7476 53.3731 31.0594C54.0235 31.312 54.6202 31.6775 55.147 32.1344C55.6039 32.5484 55.8727 33.1289 55.8888 33.7471C55.8565 34.0535 55.7759 34.3491 55.6415 34.6287C55.4319 35.0587 55.1147 35.4296 54.7169 35.7037C53.5559 36.4079 52.212 36.7573 50.8574 36.6982C49.9221 36.7304 48.9814 36.6337 48.0729 36.4079C46.9279 36.0854 45.8152 35.6392 44.7563 35.0909C44.4122 34.9189 44.036 34.8275 43.6489 34.8329C43.3264 34.8222 43.0092 34.8813 42.7136 35.0157C42.4663 35.1447 42.2459 35.3275 42.0793 35.5532L40.6656 38.2786C41.2354 38.6871 41.8428 39.0473 42.4771 39.3537C43.2726 39.7407 44.1005 40.0686 44.9498 40.3266C45.8582 40.6061 46.7882 40.8158 47.7289 40.9609C48.7072 41.1061 49.6909 41.1759 50.68 41.1652C52.3571 41.1706 54.0289 40.9394 55.6415 40.4771C56.9263 40.1062 58.1304 39.4988 59.1947 38.6817C60.1031 37.9668 60.8342 37.0422 61.318 35.994C61.791 34.9351 62.0168 33.774 61.9684 32.6129C61.9684 32.6129 61.9684 32.5699 61.9684 32.543C61.9684 32.5161 61.9684 32.3763 61.9684 32.2903C61.9577 31.4518 61.7265 30.624 61.2965 29.9036Z" className="fill-current" />

<path d="M125.603 16.1162C124.189 15.2508 122.56 14.7938 120.899 14.81C119.281 14.8207 117.701 15.2991 116.346 16.1861C116.346 16.1861 115.76 16.5839 115.524 16.772C114.594 17.5568 113.766 18.4653 113.062 19.4597C111.32 14.181 104.757 13.4231 100.698 16.772C100.193 17.1859 99.72 17.6375 99.2793 18.1159L98.8815 16.256C98.6718 15.5679 98.016 15.1217 97.3011 15.1809H93.5114V40.2143H99.6824V21.8625C100.295 21.1584 101.021 20.5563 101.833 20.0887C103.477 19.1103 106.574 19.2178 107.746 20.5886C108.439 21.3573 108.96 22.5936 108.96 24.4589V40.2143H114.336V21.8625C114.949 21.1584 115.674 20.5563 116.486 20.0887C118.126 19.1103 121.227 19.2178 122.399 20.5886C123.092 21.3573 123.614 22.5936 123.614 24.4589V40.2143H129.833V26.2919C129.833 22.5775 129.409 20.6369 128.554 19.2232C127.844 17.96 126.828 16.8903 125.603 16.1162Z" className="fill-current" />

<path opacity="0.65" d="M30.5596 29.3445L11.6919 14.6803L1.98383 7.13318L7.72479 24.77L12.1703 38.4397L16.4276 51.5074L30.5489 29.4036L30.5704 29.3714L30.5596 29.3445Z" className="fill-current" />

<path opacity="0.8" d="M30.5594 29.3445L17.4648 0L11.6916 14.6803L7.7245 24.77L0 44.4226L12.17 38.4398L30.5486 29.4036L30.5701 29.3714L30.5594 29.3445Z" className="fill-current" />

</svg> Async API

), }, position: { x: 50, y: 250 }, }, // animated edge { id: "e1-2", source: "1.1", target: "2", animated: true }, { id: "e1-2", source: "1.1", target: "2.1", animated: true }, { id: "e1-2", source: "1.1", target: "2.2", animated: true }, { id: "e1-2", source: "1.2", target: "2", animated: true }, { id: "e2-3", source: "2", target: "3", animated: true }, { id: "e2-3", source: "2", target: "4", animated: true }, { id: "e2-3", source: "2", target: "5", animated: true }, ]} />

InterviewToast was built with:

  • Symbl.ai's for sentiment analysis, topic extraction, conversation analytics, entity and intent recognition, and real-time insights APIs.
  • Agora.io to enable vivid voice and video calling directly in the browser for real-time interviewer-candidate engagement
  • GatsbyJS as our blazing-fast React framework for performance, scalability, security and accessibility
  • Gatsby Cloud Functions to bring an entire backend to InterviewToast - without managing a backend
  • Firebase to enable user accounts and SSO.
  • TensorFlowJS MoveNet model for body keypoint detection to evaluate candidates posture and slouching in real-time for practice sessions

Challenges

WebRTC is something that scared me; I have been avoiding it until now. This hackathon gave me a chance to face that fear. While I am sure that our WebRTC integration is not perfect, I have learnt how to implement it and, now feeling a little more confident, I can't wait to work with it again.

Next Steps

Although this hackathon took place over two weeks, there were still a lot of features that we would have loved to implement that we did not have time for. The following is a list of some of the extensions we would like to implement next:

  • Stripe Integration: We can't monetise the site without integrating a payment API!
  • Pre-call Tests for Audio and Video: Verify whether the internet quality is good enough for the interview.
  • Better Stats: We love data visualisation! We would love to include interactive charts that drill down into the data (with D3!).

For more information on the product, read the Devpost here.

SL
Sam Larsen-Disney
Software Engineer

Sam is a Software Engineer who cares most about accessibility and making a performant web.