[{"data":1,"prerenderedAt":1225},["ShallowReactive",2],{"work-\u002Fwork\u002Fvideo-transcript-analysis-automation":3},{"id":4,"title":5,"body":6,"date":1207,"description":1208,"extension":1209,"externalUrl":1210,"featured":1211,"kind":1212,"meta":1213,"navigation":399,"path":1215,"seo":1216,"stem":1217,"tags":1218,"__hash__":1224},"work\u002Fwork\u002Fvideo-transcript-analysis-automation.md","LLM-backed customer interview analysis",{"type":7,"value":8,"toc":1193},"minimark",[9,13,18,22,31,35,38,57,61,66,69,206,209,221,225,228,590,594,597,614,967,971,974,988,991,999,1003,1057,1061,1064,1114,1118,1168,1172,1175,1181,1184,1189],[10,11,5],"h1",{"id":12},"llm-backed-customer-interview-analysis",[14,15,17],"h2",{"id":16},"context","Context",[19,20,21],"p",{},"A critical customer interview was recorded using an AI-powered meeting platform. The conversation contained invaluable insights about our Ideal Customer Profile (ICP) and user motivations, but it was locked inside a video recording. The marketing team needed these insights in a format they could analyze and use, specifically focusing on a crucial segment from minute 52 onwards.",[23,24,25],"blockquote",{},[19,26,27],{},[28,29,30],"em",{},"Note: While specific platform and customer details are anonymized, this case study demonstrates how technical creativity can unlock marketing value from everyday customer interactions.",[14,32,34],{"id":33},"what-i-built","What I Built",[19,36,37],{},"I developed a pipeline that could:",[39,40,41,45,48,51,54],"ol",{},[42,43,44],"li",{},"Extract structured transcript data from the platform's network requests",[42,46,47],{},"Transform complex nested JSON into readable dialogue",[42,49,50],{},"Filter conversations by timestamp ranges",[42,52,53],{},"Format the output for both human reading and LLM processing",[42,55,56],{},"Generate marketing content while preserving customer privacy",[14,58,60],{"id":59},"technical-breakdown","Technical Breakdown",[62,63,65],"h3",{"id":64},"_1-network-request-analysis","1. Network Request Analysis",[19,67,68],{},"The platform's UI showed a nicely formatted transcript, suggesting the data was already structured somewhere. Using Chrome DevTools' Network tab, I found a large JSON payload containing the entire conversation structure.",[70,71,76],"pre",{"className":72,"code":73,"language":74,"meta":75,"style":75},"language-typescript shiki shiki-themes material-theme-lighter github-light github-dark","interface TranscriptCue {\n  id: number;\n  text: string;\n  speaker_name: string;\n  speaker_email: string;\n  is_host: boolean;\n  started_at: string;\n  start_time: number;\n  end_time: number;\n}\n","typescript","",[77,78,79,96,114,127,139,151,164,176,188,200],"code",{"__ignoreMap":75},[80,81,84,88,92],"span",{"class":82,"line":83},"line",1,[80,85,87],{"class":86},"sbsja","interface",[80,89,91],{"class":90},"sbgvK"," TranscriptCue",[80,93,95],{"class":94},"sP7_E"," {\n",[80,97,99,103,107,111],{"class":82,"line":98},2,[80,100,102],{"class":101},"sucvu","  id",[80,104,106],{"class":105},"smGrS",":",[80,108,110],{"class":109},"sZMiF"," number",[80,112,113],{"class":94},";\n",[80,115,117,120,122,125],{"class":82,"line":116},3,[80,118,119],{"class":101},"  text",[80,121,106],{"class":105},[80,123,124],{"class":109}," string",[80,126,113],{"class":94},[80,128,130,133,135,137],{"class":82,"line":129},4,[80,131,132],{"class":101},"  speaker_name",[80,134,106],{"class":105},[80,136,124],{"class":109},[80,138,113],{"class":94},[80,140,142,145,147,149],{"class":82,"line":141},5,[80,143,144],{"class":101},"  speaker_email",[80,146,106],{"class":105},[80,148,124],{"class":109},[80,150,113],{"class":94},[80,152,154,157,159,162],{"class":82,"line":153},6,[80,155,156],{"class":101},"  is_host",[80,158,106],{"class":105},[80,160,161],{"class":109}," boolean",[80,163,113],{"class":94},[80,165,167,170,172,174],{"class":82,"line":166},7,[80,168,169],{"class":101},"  started_at",[80,171,106],{"class":105},[80,173,124],{"class":109},[80,175,113],{"class":94},[80,177,179,182,184,186],{"class":82,"line":178},8,[80,180,181],{"class":101},"  start_time",[80,183,106],{"class":105},[80,185,110],{"class":109},[80,187,113],{"class":94},[80,189,191,194,196,198],{"class":82,"line":190},9,[80,192,193],{"class":101},"  end_time",[80,195,106],{"class":105},[80,197,110],{"class":109},[80,199,113],{"class":94},[80,201,203],{"class":82,"line":202},10,[80,204,205],{"class":94},"}\n",[19,207,208],{},"The challenge was that the data structure was deeply nested and non-intuitive:",[210,211,212,215,218],"ul",{},[42,213,214],{},"Each cue had numbered properties",[42,216,217],{},"Timestamps were in seconds with decimals",[42,219,220],{},"Speaker information was scattered across different objects",[62,222,224],{"id":223},"_2-timestamp-processing","2. Timestamp Processing",[19,226,227],{},"The marketing team wanted a specific segment (52:00 onwards). I built functions to handle timestamp conversion and filtering:",[70,229,231],{"className":72,"code":230,"language":74,"meta":75,"style":75},"function formatTimestamp(seconds: number): string {\n  const minutes = Math.floor(seconds \u002F 60);\n  const remainingSeconds = Math.floor(seconds % 60);\n  return `${minutes}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n}\n\nfunction parseTimestamp(line: string): number {\n  const match = line.match(\u002F\\[(\\d+):(\\d+)\\]\u002F);\n  if (match) {\n    const minutes = parseInt(match[1]);\n    const seconds = parseInt(match[2]);\n    return minutes * 60 + seconds;\n  }\n  return 0;\n}\n",[77,232,233,262,300,328,391,395,401,424,482,498,525,549,569,575,585],{"__ignoreMap":75},[80,234,235,238,242,245,249,251,253,256,258,260],{"class":82,"line":83},[80,236,237],{"class":86},"function",[80,239,241],{"class":240},"sGLFI"," formatTimestamp",[80,243,244],{"class":94},"(",[80,246,248],{"class":247},"s99_P","seconds",[80,250,106],{"class":105},[80,252,110],{"class":109},[80,254,255],{"class":94},")",[80,257,106],{"class":105},[80,259,124],{"class":109},[80,261,95],{"class":94},[80,263,264,267,271,274,278,281,284,287,289,292,296,298],{"class":82,"line":98},[80,265,266],{"class":86},"  const",[80,268,270],{"class":269},"s_hVV"," minutes",[80,272,273],{"class":105}," =",[80,275,277],{"class":276},"su5hD"," Math",[80,279,280],{"class":94},".",[80,282,283],{"class":240},"floor",[80,285,244],{"class":286},"skxfh",[80,288,248],{"class":276},[80,290,291],{"class":105}," \u002F",[80,293,295],{"class":294},"srdBf"," 60",[80,297,255],{"class":286},[80,299,113],{"class":94},[80,301,302,304,307,309,311,313,315,317,319,322,324,326],{"class":82,"line":116},[80,303,266],{"class":86},[80,305,306],{"class":269}," remainingSeconds",[80,308,273],{"class":105},[80,310,277],{"class":276},[80,312,280],{"class":94},[80,314,283],{"class":240},[80,316,244],{"class":286},[80,318,248],{"class":276},[80,320,321],{"class":105}," %",[80,323,295],{"class":294},[80,325,255],{"class":286},[80,327,113],{"class":94},[80,329,330,334,338,341,344,347,350,353,355,358,362,364,367,369,372,375,378,381,384,386,389],{"class":82,"line":129},[80,331,333],{"class":332},"sVHd0","  return",[80,335,337],{"class":336},"sjJ54"," `${",[80,339,340],{"class":276},"minutes",[80,342,343],{"class":336},"}",[80,345,106],{"class":346},"s_sjI",[80,348,349],{"class":336},"${",[80,351,352],{"class":276},"remainingSeconds",[80,354,280],{"class":336},[80,356,357],{"class":240},"toString",[80,359,361],{"class":360},"sfo-9","()",[80,363,280],{"class":336},[80,365,366],{"class":240},"padStart",[80,368,244],{"class":360},[80,370,371],{"class":294},"2",[80,373,374],{"class":336},",",[80,376,377],{"class":336}," \"",[80,379,380],{"class":346},"0",[80,382,383],{"class":336},"\"",[80,385,255],{"class":360},[80,387,388],{"class":336},"}`",[80,390,113],{"class":94},[80,392,393],{"class":82,"line":141},[80,394,205],{"class":94},[80,396,397],{"class":82,"line":153},[80,398,400],{"emptyLinePlaceholder":399},true,"\n",[80,402,403,405,408,410,412,414,416,418,420,422],{"class":82,"line":166},[80,404,237],{"class":86},[80,406,407],{"class":240}," parseTimestamp",[80,409,244],{"class":94},[80,411,82],{"class":247},[80,413,106],{"class":105},[80,415,124],{"class":109},[80,417,255],{"class":94},[80,419,106],{"class":105},[80,421,110],{"class":109},[80,423,95],{"class":94},[80,425,426,428,431,433,436,438,441,443,446,450,453,457,460,462,465,467,469,471,473,476,478,480],{"class":82,"line":178},[80,427,266],{"class":86},[80,429,430],{"class":269}," match",[80,432,273],{"class":105},[80,434,435],{"class":276}," line",[80,437,280],{"class":94},[80,439,440],{"class":240},"match",[80,442,244],{"class":286},[80,444,445],{"class":336},"\u002F",[80,447,449],{"class":448},"sjYin","\\[",[80,451,244],{"class":452},"s-KJb",[80,454,456],{"class":455},"stzsN","\\d",[80,458,459],{"class":105},"+",[80,461,255],{"class":452},[80,463,106],{"class":464},"sQRbd",[80,466,244],{"class":452},[80,468,456],{"class":455},[80,470,459],{"class":105},[80,472,255],{"class":452},[80,474,475],{"class":448},"\\]",[80,477,445],{"class":336},[80,479,255],{"class":286},[80,481,113],{"class":94},[80,483,484,487,490,492,495],{"class":82,"line":190},[80,485,486],{"class":332},"  if",[80,488,489],{"class":286}," (",[80,491,440],{"class":276},[80,493,494],{"class":286},") ",[80,496,497],{"class":94},"{\n",[80,499,500,503,505,507,510,512,514,517,520,523],{"class":82,"line":202},[80,501,502],{"class":86},"    const",[80,504,270],{"class":269},[80,506,273],{"class":105},[80,508,509],{"class":240}," parseInt",[80,511,244],{"class":286},[80,513,440],{"class":276},[80,515,516],{"class":286},"[",[80,518,519],{"class":294},"1",[80,521,522],{"class":286},"])",[80,524,113],{"class":94},[80,526,528,530,533,535,537,539,541,543,545,547],{"class":82,"line":527},11,[80,529,502],{"class":86},[80,531,532],{"class":269}," seconds",[80,534,273],{"class":105},[80,536,509],{"class":240},[80,538,244],{"class":286},[80,540,440],{"class":276},[80,542,516],{"class":286},[80,544,371],{"class":294},[80,546,522],{"class":286},[80,548,113],{"class":94},[80,550,552,555,557,560,562,565,567],{"class":82,"line":551},12,[80,553,554],{"class":332},"    return",[80,556,270],{"class":276},[80,558,559],{"class":105}," *",[80,561,295],{"class":294},[80,563,564],{"class":105}," +",[80,566,532],{"class":276},[80,568,113],{"class":94},[80,570,572],{"class":82,"line":571},13,[80,573,574],{"class":94},"  }\n",[80,576,578,580,583],{"class":82,"line":577},14,[80,579,333],{"class":332},[80,581,582],{"class":294}," 0",[80,584,113],{"class":94},[80,586,588],{"class":82,"line":587},15,[80,589,205],{"class":94},[62,591,593],{"id":592},"_3-data-transformation-pipeline","3. Data Transformation Pipeline",[19,595,596],{},"The extraction process needed to:",[39,598,599,602,605,608,611],{},[42,600,601],{},"Read the raw JSON transcript",[42,603,604],{},"Filter by timestamp range",[42,606,607],{},"Format each dialogue entry",[42,609,610],{},"Maintain chronological order",[42,612,613],{},"Output in a readable format",[70,615,617],{"className":72,"code":616,"language":74,"meta":75,"style":75},"const relevantDialogue: string[] = [];\n\ntranscriptCues.forEach((cue: any) => {\n  Object.values(cue).forEach((entry: any) => {\n    if (entry.start_time >= START_TIME && entry.end_time \u003C= END_TIME) {\n      relevantDialogue.push(\n        `[${formatTimestamp(entry.start_time)}] ${entry.speaker_name}:\\n${\n          entry.text\n        }\\n`,\n      );\n    }\n  });\n});\n\n\u002F\u002F Sort by start_time to ensure chronological order\nrelevantDialogue.sort((a, b) => {\n  const timeA = parseTimestamp(a);\n  const timeB = parseTimestamp(b);\n  return timeA - timeB;\n});\n",[77,618,619,642,646,675,712,753,766,812,822,835,842,847,856,864,868,874,903,923,944,958],{"__ignoreMap":75},[80,620,621,624,627,629,631,634,637,640],{"class":82,"line":83},[80,622,623],{"class":86},"const",[80,625,626],{"class":269}," relevantDialogue",[80,628,106],{"class":105},[80,630,124],{"class":109},[80,632,633],{"class":276},"[] ",[80,635,636],{"class":105},"=",[80,638,639],{"class":276}," []",[80,641,113],{"class":94},[80,643,644],{"class":82,"line":98},[80,645,400],{"emptyLinePlaceholder":399},[80,647,648,651,653,656,658,660,663,665,668,670,673],{"class":82,"line":116},[80,649,650],{"class":276},"transcriptCues",[80,652,280],{"class":94},[80,654,655],{"class":240},"forEach",[80,657,244],{"class":276},[80,659,244],{"class":94},[80,661,662],{"class":247},"cue",[80,664,106],{"class":105},[80,666,667],{"class":109}," any",[80,669,255],{"class":94},[80,671,672],{"class":86}," =>",[80,674,95],{"class":94},[80,676,677,680,682,685,687,689,691,693,695,697,699,702,704,706,708,710],{"class":82,"line":129},[80,678,679],{"class":276},"  Object",[80,681,280],{"class":94},[80,683,684],{"class":240},"values",[80,686,244],{"class":286},[80,688,662],{"class":276},[80,690,255],{"class":286},[80,692,280],{"class":94},[80,694,655],{"class":240},[80,696,244],{"class":286},[80,698,244],{"class":94},[80,700,701],{"class":247},"entry",[80,703,106],{"class":105},[80,705,667],{"class":109},[80,707,255],{"class":94},[80,709,672],{"class":86},[80,711,95],{"class":94},[80,713,714,717,719,721,723,726,729,732,735,738,740,743,746,749,751],{"class":82,"line":141},[80,715,716],{"class":332},"    if",[80,718,489],{"class":286},[80,720,701],{"class":276},[80,722,280],{"class":94},[80,724,725],{"class":276},"start_time",[80,727,728],{"class":105}," >=",[80,730,731],{"class":269}," START_TIME",[80,733,734],{"class":105}," &&",[80,736,737],{"class":276}," entry",[80,739,280],{"class":94},[80,741,742],{"class":276},"end_time",[80,744,745],{"class":105}," \u003C=",[80,747,748],{"class":269}," END_TIME",[80,750,494],{"class":286},[80,752,497],{"class":94},[80,754,755,758,760,763],{"class":82,"line":153},[80,756,757],{"class":276},"      relevantDialogue",[80,759,280],{"class":94},[80,761,762],{"class":240},"push",[80,764,765],{"class":286},"(\n",[80,767,768,771,773,775,778,780,782,784,786,788,790,793,795,797,799,802,804,806,809],{"class":82,"line":166},[80,769,770],{"class":336},"        `",[80,772,516],{"class":346},[80,774,349],{"class":336},[80,776,777],{"class":240},"formatTimestamp",[80,779,244],{"class":360},[80,781,701],{"class":276},[80,783,280],{"class":336},[80,785,725],{"class":276},[80,787,255],{"class":360},[80,789,343],{"class":336},[80,791,792],{"class":346},"] ",[80,794,349],{"class":336},[80,796,701],{"class":276},[80,798,280],{"class":336},[80,800,801],{"class":276},"speaker_name",[80,803,343],{"class":336},[80,805,106],{"class":346},[80,807,808],{"class":269},"\\n",[80,810,811],{"class":336},"${\n",[80,813,814,817,819],{"class":82,"line":178},[80,815,816],{"class":276},"          entry",[80,818,280],{"class":336},[80,820,821],{"class":276},"text\n",[80,823,824,827,829,832],{"class":82,"line":190},[80,825,826],{"class":336},"        }",[80,828,808],{"class":269},[80,830,831],{"class":336},"`",[80,833,834],{"class":94},",\n",[80,836,837,840],{"class":82,"line":202},[80,838,839],{"class":286},"      )",[80,841,113],{"class":94},[80,843,844],{"class":82,"line":527},[80,845,846],{"class":94},"    }\n",[80,848,849,852,854],{"class":82,"line":551},[80,850,851],{"class":94},"  }",[80,853,255],{"class":286},[80,855,113],{"class":94},[80,857,858,860,862],{"class":82,"line":571},[80,859,343],{"class":94},[80,861,255],{"class":276},[80,863,113],{"class":94},[80,865,866],{"class":82,"line":577},[80,867,400],{"emptyLinePlaceholder":399},[80,869,870],{"class":82,"line":587},[80,871,873],{"class":872},"sutJx","\u002F\u002F Sort by start_time to ensure chronological order\n",[80,875,877,880,882,885,887,889,892,894,897,899,901],{"class":82,"line":876},16,[80,878,879],{"class":276},"relevantDialogue",[80,881,280],{"class":94},[80,883,884],{"class":240},"sort",[80,886,244],{"class":276},[80,888,244],{"class":94},[80,890,891],{"class":247},"a",[80,893,374],{"class":94},[80,895,896],{"class":247}," b",[80,898,255],{"class":94},[80,900,672],{"class":86},[80,902,95],{"class":94},[80,904,906,908,911,913,915,917,919,921],{"class":82,"line":905},17,[80,907,266],{"class":86},[80,909,910],{"class":269}," timeA",[80,912,273],{"class":105},[80,914,407],{"class":240},[80,916,244],{"class":286},[80,918,891],{"class":276},[80,920,255],{"class":286},[80,922,113],{"class":94},[80,924,926,928,931,933,935,937,940,942],{"class":82,"line":925},18,[80,927,266],{"class":86},[80,929,930],{"class":269}," timeB",[80,932,273],{"class":105},[80,934,407],{"class":240},[80,936,244],{"class":286},[80,938,939],{"class":276},"b",[80,941,255],{"class":286},[80,943,113],{"class":94},[80,945,947,949,951,954,956],{"class":82,"line":946},19,[80,948,333],{"class":332},[80,950,910],{"class":276},[80,952,953],{"class":105}," -",[80,955,930],{"class":276},[80,957,113],{"class":94},[80,959,961,963,965],{"class":82,"line":960},20,[80,962,343],{"class":94},[80,964,255],{"class":276},[80,966,113],{"class":94},[62,968,970],{"id":969},"_4-marketing-ready-output","4. Marketing-Ready Output",[19,972,973],{},"The final output needed to serve multiple purposes:",[210,975,976,979,982,985],{},[42,977,978],{},"Human-readable Q&A format for direct analysis",[42,980,981],{},"Structured format for LLM processing",[42,983,984],{},"Clean text that could be used in marketing materials",[42,986,987],{},"Preserved context while maintaining privacy",[19,989,990],{},"Example of the extracted dialogue:",[70,992,997],{"className":993,"code":995,"language":996,"meta":75},[994],"language-text","[52:24] Interviewer:\nWhat is your motivation to want to learn how to use the platform? And I ask this because in my experience with dealing with our other customers, it's normally the users that have a background in engineering that really want to get into the platform and learn how to use it and enjoy using it.\n\n[52:55] Customer:\nWell, first, we don't have a lot of money in the company... I was a test coordinator... So I'm interested in it. I just, well, I'm, I like working in it.\n","text",[77,998,995],{"__ignoreMap":75},[14,1000,1002],{"id":1001},"what-i-learned","What I Learned",[39,1004,1005,1022,1041],{},[42,1006,1007,1011],{},[1008,1009,1010],"strong",{},"Network Analysis for Data Discovery",[210,1012,1013,1016,1019],{},[42,1014,1015],{},"Browser DevTools are invaluable for understanding data flow",[42,1017,1018],{},"Complex UIs often have structured data underneath",[42,1020,1021],{},"Look for patterns in request\u002Fresponse cycles",[42,1023,1024,1027],{},[1008,1025,1026],{},"Data Transformation Strategy",[210,1028,1029,1032,1035,1038],{},[42,1030,1031],{},"Start with the end format and work backwards",[42,1033,1034],{},"Build modular transformation functions",[42,1036,1037],{},"Handle edge cases (timestamp formats, sorting, etc.)",[42,1039,1040],{},"Maintain data fidelity while cleaning",[42,1042,1043,1046],{},[1008,1044,1045],{},"Privacy-First Processing",[210,1047,1048,1051,1054],{},[42,1049,1050],{},"Remove sensitive information early in the pipeline",[42,1052,1053],{},"Create reusable anonymization patterns",[42,1055,1056],{},"Preserve context while protecting privacy",[14,1058,1060],{"id":1059},"business-impact","Business Impact",[19,1062,1063],{},"The automation delivered several key benefits:",[39,1065,1066,1082,1098],{},[42,1067,1068,1071],{},[1008,1069,1070],{},"Marketing Insights",[210,1072,1073,1076,1079],{},[42,1074,1075],{},"Identified key user motivations and pain points",[42,1077,1078],{},"Captured authentic customer voice and terminology",[42,1080,1081],{},"Discovered unexpected use cases and value propositions",[42,1083,1084,1087],{},[1008,1085,1086],{},"ICP Development",[210,1088,1089,1092,1095],{},[42,1090,1091],{},"Refined ideal customer characteristics",[42,1093,1094],{},"Validated existing personas",[42,1096,1097],{},"Uncovered new customer segments",[42,1099,1100,1103],{},[1008,1101,1102],{},"Content Creation",[210,1104,1105,1108,1111],{},[42,1106,1107],{},"Generated authentic marketing narratives",[42,1109,1110],{},"Created customer success stories",[42,1112,1113],{},"Developed more targeted messaging",[14,1115,1117],{"id":1116},"whats-next","What's Next?",[39,1119,1120,1136,1152],{},[42,1121,1122,1125],{},[1008,1123,1124],{},"Automation Expansion",[210,1126,1127,1130,1133],{},[42,1128,1129],{},"Process multiple interview transcripts in batch",[42,1131,1132],{},"Add more output formats for different uses",[42,1134,1135],{},"Create templates for common marketing outputs",[42,1137,1138,1141],{},[1008,1139,1140],{},"Analysis Enhancement",[210,1142,1143,1146,1149],{},[42,1144,1145],{},"Add sentiment analysis",[42,1147,1148],{},"Track topic frequencies",[42,1150,1151],{},"Generate word clouds and key phrase extraction",[42,1153,1154,1157],{},[1008,1155,1156],{},"Integration Opportunities",[210,1158,1159,1162,1165],{},[42,1160,1161],{},"Connect with CRM for customer insight tracking",[42,1163,1164],{},"Integrate with content management systems",[42,1166,1167],{},"Build a library of customer insights",[14,1169,1171],{"id":1170},"key-takeaways","Key Takeaways",[19,1173,1174],{},"Dang, this project showed me how sometimes technical skills can create value in unexpected places. What started as a simple transcript extraction turned into a tool for marketing insight generation. It showed methat sometimes the most valuable data is already in our possession - we just need creative ways to access and transform it. 🙌",[19,1176,1177,1178],{},"The combination of network analysis, data transformation, and LLM processing created a repeatable process for turning customer conversations into actionable marketing insights. ",[28,1179,1180],{},"Ofcourse, while respecting privacy and maintaining data quality.",[1182,1183],"hr",{},[19,1185,1186],{},[28,1187,1188],{},"Note: This case study focuses on the technical implementation while respecting confidentiality around specific customer conversations and platform details.",[1190,1191,1192],"style",{},"html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sucvu, html code.shiki .sucvu{--shiki-light:#E53935;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sfo-9, html code.shiki .sfo-9{--shiki-light:#90A4AE;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sjYin, html code.shiki .sjYin{--shiki-light:#90A4AE;--shiki-light-font-weight:inherit;--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}html pre.shiki code .s-KJb, html code.shiki .s-KJb{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sQRbd, html code.shiki .sQRbd{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}",{"title":75,"searchDepth":98,"depth":98,"links":1194},[1195,1196,1197,1203,1204,1205,1206],{"id":16,"depth":98,"text":17},{"id":33,"depth":98,"text":34},{"id":59,"depth":98,"text":60,"children":1198},[1199,1200,1201,1202],{"id":64,"depth":116,"text":65},{"id":223,"depth":116,"text":224},{"id":592,"depth":116,"text":593},{"id":969,"depth":116,"text":970},{"id":1001,"depth":98,"text":1002},{"id":1059,"depth":98,"text":1060},{"id":1116,"depth":98,"text":1117},{"id":1170,"depth":98,"text":1171},"2024-07-14","Built a transcript extraction pipeline that turns customer conversations into actionable marketing insights by combining network request analysis, data transformation, and LLM processing.","md",null,false,"case-study",{"slug":1214},"video-transcript-analysis-automation","\u002Fwork\u002Fvideo-transcript-analysis-automation",{"title":5,"description":1208},"work\u002Fvideo-transcript-analysis-automation",[1219,1220,1221,1222,1223],"TypeScript","Network Analysis","Data Extraction","LLM","Marketing","h2NqeR8kXmlnMGokqUTZec85FRN8Lxgl99hDqsSMJEY",1780955296664]