[{"data":1,"prerenderedAt":1558},["ShallowReactive",2],{"$fjC--aOd0oX1dNpH8-DaTdrykcXLfEbIScrMRtI7l3Zg":3},{"newThing":4,"project":5,"cycle":8,"sections":19,"threads":1552,"otherDocs":1553,"documents":1554,"images":1555,"archiveItems":1556,"links":1557},null,{"id":6,"label":7,"liveBase":4},"market-analyst","Market Analyst",{"id":9,"num":10,"dir":11,"name":12,"title":12,"focus":13,"status":14,"statusNote":4,"created":15,"completed":4,"mode":4,"report":4,"recordless":16,"thumbnail":4,"imageCount":17,"artifactCount":17,"lastActivity":18,"hasPickup":16,"hasInitialPrompt":16},"c6",6,"c6.sagetap-integration","sagetap-integration","Integrate Sagetap call transcripts into the extraction pipeline alongside Avoma.","archived","2026-02-25",false,0,"2026-03-23",[20,89,770,888,986,1229,1357,1523],{"key":21,"title":22,"empty":16,"ast":23},"why","Why",{"type":24,"children":25},"root",[26,43,48],{"type":27,"tag":28,"props":29,"children":30},"element","p",{},[31,34,41],{"type":32,"value":33},"text","Sagetap is a second source of prospect evaluation calls. These are structured buyer-vendor sessions facilitated through the Sagetap platform — a distinct channel from Avoma's recorded meetings. Two sample transcripts are already in ",{"type":27,"tag":35,"props":36,"children":38},"code",{"className":37},[],[39],{"type":32,"value":40},"data\u002Fraw-sagetap\u002F",{"type":32,"value":42}," and contain real prospect signals (game dev company evaluating discovery tooling, cybersecurity architect at global logistics enterprise looking for Linux visibility\u002FSIEM integration).",{"type":27,"tag":28,"props":44,"children":45},{},[46],{"type":32,"value":47},"However, these transcripts are much rawer than Avoma:",{"type":27,"tag":49,"props":50,"children":51},"ul",{},[52,74,79,84],{"type":27,"tag":53,"props":54,"children":55},"li",{},[56,58,64,66,72],{"type":32,"value":57},"CSV format with generic speaker labels (",{"type":27,"tag":35,"props":59,"children":61},{"className":60},[],[62],{"type":32,"value":63},"Speaker 1",{"type":32,"value":65},", ",{"type":27,"tag":35,"props":67,"children":69},{"className":68},[],[70],{"type":32,"value":71},"Speaker 2",{"type":32,"value":73},") — no names",{"type":27,"tag":53,"props":75,"children":76},{},[77],{"type":32,"value":78},"Zero metadata (no date, company, attendees, subject)",{"type":27,"tag":53,"props":80,"children":81},{},[82],{"type":32,"value":83},"Poor transcription quality (\"Centimeters\" for SIEM, \"Keypoint\" for QPoint)",{"type":27,"tag":53,"props":85,"children":86},{},[87],{"type":32,"value":88},"Speaker numbering inconsistent across files",{"key":90,"title":91,"empty":16,"ast":92},"objective","Objectives",{"type":24,"children":93},[94,101,337,343,421,427,493,499,667,673],{"type":27,"tag":95,"props":96,"children":98},"h3",{"id":97},"phase-1-multi-source-pipeline-make-pipeline-source-aware-done",[99],{"type":32,"value":100},"Phase 1: Multi-source pipeline (make pipeline source-aware) — DONE",{"type":27,"tag":49,"props":102,"children":105},{"className":103},[104],"contains-task-list",[106,135,171,202,227,252,269,294,321],{"type":27,"tag":53,"props":107,"children":110},{"className":108},[109],"task-list-item",[111,117,119,125,127,133],{"type":27,"tag":112,"props":113,"children":116},"input",{"checked":114,"disabled":114,"type":115},true,"checkbox",[],{"type":32,"value":118}," Add ",{"type":27,"tag":35,"props":120,"children":122},{"className":121},[],[123],{"type":32,"value":124},"MeetingSource",{"type":32,"value":126}," type to schema (",{"type":27,"tag":35,"props":128,"children":130},{"className":129},[],[131],{"type":32,"value":132},"'avoma' | 'sagetap'",{"type":32,"value":134},")",{"type":27,"tag":53,"props":136,"children":138},{"className":137},[109],[139,142,143,149,151,157,158,164,165],{"type":27,"tag":112,"props":140,"children":141},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":118},{"type":27,"tag":35,"props":144,"children":146},{"className":145},[],[147],{"type":32,"value":148},"source?",{"type":32,"value":150}," to ",{"type":27,"tag":35,"props":152,"children":154},{"className":153},[],[155],{"type":32,"value":156},"CallMetadata",{"type":32,"value":65},{"type":27,"tag":35,"props":159,"children":161},{"className":160},[],[162],{"type":32,"value":163},"source",{"type":32,"value":150},{"type":27,"tag":35,"props":166,"children":168},{"className":167},[],[169],{"type":32,"value":170},"CallIndexEntry",{"type":27,"tag":53,"props":172,"children":174},{"className":173},[109],[175,178,180,186,188,194,196],{"type":27,"tag":112,"props":176,"children":177},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":179}," Detect Sagetap uploads in ",{"type":27,"tag":35,"props":181,"children":183},{"className":182},[],[184],{"type":32,"value":185},"avoma.ts",{"type":32,"value":187}," via ",{"type":27,"tag":35,"props":189,"children":191},{"className":190},[],[192],{"type":32,"value":193},"purpose.label",{"type":32,"value":195}," \u002F ",{"type":27,"tag":35,"props":197,"children":199},{"className":198},[],[200],{"type":32,"value":201},"type.label",{"type":27,"tag":53,"props":203,"children":205},{"className":204},[109],[206,209,211,217,219,225],{"type":27,"tag":112,"props":207,"children":208},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":210}," Remove ",{"type":27,"tag":35,"props":212,"children":214},{"className":213},[],[215],{"type":32,"value":216},"sagetap",{"type":32,"value":218}," from ",{"type":27,"tag":35,"props":220,"children":222},{"className":221},[],[223],{"type":32,"value":224},"VENDOR_PATTERNS",{"type":32,"value":226},", add early return in filter",{"type":27,"tag":53,"props":228,"children":230},{"className":229},[109],[231,234,236,242,244,250],{"type":27,"tag":112,"props":232,"children":233},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":235}," Build sidecar attendees from ",{"type":27,"tag":35,"props":237,"children":239},{"className":238},[],[240],{"type":32,"value":241},"transcription.speakers",{"type":32,"value":243}," (not ",{"type":27,"tag":35,"props":245,"children":247},{"className":246},[],[248],{"type":32,"value":249},"meeting.attendees",{"type":32,"value":251},") for uploads",{"type":27,"tag":53,"props":253,"children":255},{"className":254},[109],[256,259,261,267],{"type":27,"tag":112,"props":257,"children":258},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":260}," Parse structured subject into ",{"type":27,"tag":35,"props":262,"children":264},{"className":263},[],[265],{"type":32,"value":266},"SagetapSubjectHints",{"type":32,"value":268}," (contactName, role, industry, companySize, location)",{"type":27,"tag":53,"props":270,"children":272},{"className":271},[109],[273,276,278,284,286,292],{"type":27,"tag":112,"props":274,"children":275},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":277}," Source-aware metadata injection in ",{"type":27,"tag":35,"props":279,"children":281},{"className":280},[],[282],{"type":32,"value":283},"extract.ts",{"type":32,"value":285}," and ",{"type":27,"tag":35,"props":287,"children":289},{"className":288},[],[290],{"type":32,"value":291},"batch.ts",{"type":32,"value":293}," (date shows \"Unknown\" for uploads)",{"type":27,"tag":53,"props":295,"children":297},{"className":296},[109],[298,301,303,308,309,314,315],{"type":27,"tag":112,"props":299,"children":300},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":302}," Skip date backfill for sagetap in ",{"type":27,"tag":35,"props":304,"children":306},{"className":305},[],[307],{"type":32,"value":283},{"type":32,"value":65},{"type":27,"tag":35,"props":310,"children":312},{"className":311},[],[313],{"type":32,"value":291},{"type":32,"value":65},{"type":27,"tag":35,"props":316,"children":318},{"className":317},[],[319],{"type":32,"value":320},"build-index.ts",{"type":27,"tag":53,"props":322,"children":324},{"className":323},[109],[325,328,330,335],{"type":27,"tag":112,"props":326,"children":327},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":329}," Propagate ",{"type":27,"tag":35,"props":331,"children":333},{"className":332},[],[334],{"type":32,"value":163},{"type":32,"value":336}," through all pipeline stages to index",{"type":27,"tag":95,"props":338,"children":340},{"id":339},"phase-2-test-end-to-end-done",[341],{"type":32,"value":342},"Phase 2: Test end-to-end — DONE",{"type":27,"tag":49,"props":344,"children":346},{"className":345},[104],[347,362,379,388,405],{"type":27,"tag":53,"props":348,"children":350},{"className":349},[109],[351,354,356],{"type":27,"tag":112,"props":352,"children":353},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":355}," Fetch RobertK call via ",{"type":27,"tag":35,"props":357,"children":359},{"className":358},[],[360],{"type":32,"value":361},"npm run fetch -- --external",{"type":27,"tag":53,"props":363,"children":365},{"className":364},[109],[366,369,371,377],{"type":27,"tag":112,"props":367,"children":368},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":370}," Verify sidecar: ",{"type":27,"tag":35,"props":372,"children":374},{"className":373},[],[375],{"type":32,"value":376},"source: \"sagetap\"",{"type":32,"value":378},", correct attendees, parsed hints",{"type":27,"tag":53,"props":380,"children":382},{"className":381},[109],[383,386],{"type":27,"tag":112,"props":384,"children":385},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":387}," Extract: metadata context shows Sagetap hints, date left as null",{"type":27,"tag":53,"props":389,"children":391},{"className":390},[109],[392,395,397,403],{"type":27,"tag":112,"props":393,"children":394},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":396}," Processed JSON: ",{"type":27,"tag":35,"props":398,"children":400},{"className":399},[],[401],{"type":32,"value":402},"metadata.source: \"sagetap\"",{"type":32,"value":404},", attendees from transcript",{"type":27,"tag":53,"props":406,"children":408},{"className":407},[109],[409,412,414,419],{"type":27,"tag":112,"props":410,"children":411},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":413}," Index: call appears with ",{"type":27,"tag":35,"props":415,"children":417},{"className":416},[],[418],{"type":32,"value":376},{"type":32,"value":420}," (19 calls total)",{"type":27,"tag":95,"props":422,"children":424},{"id":423},"phase-3-dashboard-source-indicators-done",[425],{"type":32,"value":426},"Phase 3: Dashboard source indicators — DONE",{"type":27,"tag":49,"props":428,"children":430},{"className":429},[104],[431,440,449,478],{"type":27,"tag":53,"props":432,"children":434},{"className":433},[109],[435,438],{"type":27,"tag":112,"props":436,"children":437},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":439}," Add source column to calls list (AV grey \u002F ST sky blue pills)",{"type":27,"tag":53,"props":441,"children":443},{"className":442},[109],[444,447],{"type":27,"tag":112,"props":445,"children":446},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":448}," Add source badge to call detail header",{"type":27,"tag":53,"props":450,"children":452},{"className":451},[109],[453,456,457,462,463,469,471,476],{"type":27,"tag":112,"props":454,"children":455},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":118},{"type":27,"tag":35,"props":458,"children":460},{"className":459},[],[461],{"type":32,"value":163},{"type":32,"value":150},{"type":27,"tag":35,"props":464,"children":466},{"className":465},[],[467],{"type":32,"value":468},"useCallData.ts",{"type":32,"value":470}," ",{"type":27,"tag":35,"props":472,"children":474},{"className":473},[],[475],{"type":32,"value":156},{"type":32,"value":477}," interface",{"type":27,"tag":53,"props":479,"children":481},{"className":480},[109],[482,485,487],{"type":27,"tag":112,"props":483,"children":484},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":486}," Backfill all 22 existing processed calls with ",{"type":27,"tag":35,"props":488,"children":490},{"className":489},[],[491],{"type":32,"value":492},"source: \"avoma\"",{"type":27,"tag":95,"props":494,"children":496},{"id":495},"phase-4-automated-upload-script-done",[497],{"type":32,"value":498},"Phase 4: Automated upload script — DONE",{"type":27,"tag":49,"props":500,"children":502},{"className":501},[104],[503,533,550,559,576,598,620,651],{"type":27,"tag":53,"props":504,"children":506},{"className":505},[109],[507,510,511,517,519,525,527],{"type":27,"tag":112,"props":508,"children":509},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":470},{"type":27,"tag":35,"props":512,"children":514},{"className":513},[],[515],{"type":32,"value":516},"pipeline\u002Fupload-sagetap.ts",{"type":32,"value":518}," — ",{"type":27,"tag":35,"props":520,"children":522},{"className":521},[],[523],{"type":32,"value":524},"npm run upload:sagetap",{"type":32,"value":526}," automates video upload to Avoma via ",{"type":27,"tag":35,"props":528,"children":530},{"className":529},[],[531],{"type":32,"value":532},"POST \u002Fv1\u002Fcalls\u002F",{"type":27,"tag":53,"props":534,"children":536},{"className":535},[109],[537,540,542,548],{"type":27,"tag":112,"props":538,"children":539},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":541}," Parses structured filename for metadata (reuses ",{"type":27,"tag":35,"props":543,"children":545},{"className":544},[],[546],{"type":32,"value":547},"parseSagetapSubject()",{"type":32,"value":549}," logic)",{"type":27,"tag":53,"props":551,"children":553},{"className":552},[109],[554,557],{"type":27,"tag":112,"props":555,"children":556},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":558}," Local HTTP server + localtunnel for file access (zero config, no account)",{"type":27,"tag":53,"props":560,"children":562},{"className":561},[109],[563,566,568,574],{"type":27,"tag":112,"props":564,"children":565},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":567}," Subject prefixed with ",{"type":27,"tag":35,"props":569,"children":571},{"className":570},[],[572],{"type":32,"value":573},"Sagetap: ",{"type":32,"value":575}," for pipeline detection",{"type":27,"tag":53,"props":577,"children":579},{"className":578},[109],[580,583,584,590,592],{"type":27,"tag":112,"props":581,"children":582},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":470},{"type":27,"tag":35,"props":585,"children":587},{"className":586},[],[588],{"type":32,"value":589},"isSagetapUpload()",{"type":32,"value":591}," updated to also match ",{"type":27,"tag":35,"props":593,"children":595},{"className":594},[],[596],{"type":32,"value":597},"subject.startsWith('Sagetap: ')",{"type":27,"tag":53,"props":599,"children":601},{"className":600},[109],[602,605,606,611,613,618],{"type":27,"tag":112,"props":603,"children":604},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":470},{"type":27,"tag":35,"props":607,"children":609},{"className":608},[],[610],{"type":32,"value":547},{"type":32,"value":612}," strips ",{"type":27,"tag":35,"props":614,"children":616},{"className":615},[],[617],{"type":32,"value":573},{"type":32,"value":619}," prefix before parsing",{"type":27,"tag":53,"props":621,"children":623},{"className":622},[109],[624,627,628,634,636,642,643,649],{"type":27,"tag":112,"props":625,"children":626},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":470},{"type":27,"tag":35,"props":629,"children":631},{"className":630},[],[632],{"type":32,"value":633},"--dry-run",{"type":32,"value":635}," mode for testing, ",{"type":27,"tag":35,"props":637,"children":639},{"className":638},[],[640],{"type":32,"value":641},"--rep",{"type":32,"value":195},{"type":27,"tag":35,"props":644,"children":646},{"className":645},[],[647],{"type":32,"value":648},"--date",{"type":32,"value":650}," flags, directory batch support",{"type":27,"tag":53,"props":652,"children":654},{"className":653},[109],[655,658,659,665],{"type":27,"tag":112,"props":656,"children":657},{"checked":114,"disabled":114,"type":115},[],{"type":32,"value":470},{"type":27,"tag":35,"props":660,"children":662},{"className":661},[],[663],{"type":32,"value":664},"SAGETAP_REP_EMAIL",{"type":32,"value":666}," env var for default rep email",{"type":27,"tag":95,"props":668,"children":670},{"id":669},"phase-5-remaining-work",[671],{"type":32,"value":672},"Phase 5: Remaining work",{"type":27,"tag":49,"props":674,"children":676},{"className":675},[104],[677,686,718,735,744,753],{"type":27,"tag":53,"props":678,"children":680},{"className":679},[109],[681,684],{"type":27,"tag":112,"props":682,"children":683},{"disabled":114,"type":115},[],{"type":32,"value":685}," Process second Sagetap call (Cliff — cybersecurity architect, logistics enterprise)",{"type":27,"tag":53,"props":687,"children":689},{"className":688},[109],[690,693,695,701,703,709,711,717],{"type":27,"tag":112,"props":691,"children":692},{"disabled":114,"type":115},[],{"type":32,"value":694}," Fix ",{"type":27,"tag":35,"props":696,"children":698},{"className":697},[],[699],{"type":32,"value":700},"location",{"type":32,"value":702}," double-space from subject parsing (",{"type":27,"tag":35,"props":704,"children":706},{"className":705},[],[707],{"type":32,"value":708},"\"Location  Poland\"",{"type":32,"value":710}," → ",{"type":27,"tag":35,"props":712,"children":714},{"className":713},[],[715],{"type":32,"value":716},"\"Poland\"",{"type":32,"value":134},{"type":27,"tag":53,"props":719,"children":721},{"className":720},[109],[722,725,727,733],{"type":27,"tag":112,"props":723,"children":724},{"disabled":114,"type":115},[],{"type":32,"value":726}," Handle ",{"type":27,"tag":35,"props":728,"children":730},{"className":729},[],[731],{"type":32,"value":732},"company.name: null",{"type":32,"value":734}," gracefully in dashboard (Sagetap anonymity)",{"type":27,"tag":53,"props":736,"children":738},{"className":737},[109],[739,742],{"type":27,"tag":112,"props":740,"children":741},{"disabled":114,"type":115},[],{"type":32,"value":743}," Consider: backfill actual call dates from Sagetap platform manually",{"type":27,"tag":53,"props":745,"children":747},{"className":746},[109],[748,751],{"type":27,"tag":112,"props":749,"children":750},{"disabled":114,"type":115},[],{"type":32,"value":752}," Consider: transcription correction dictionary for known errors in extraction prompt",{"type":27,"tag":53,"props":754,"children":756},{"className":755},[109],[757,760,762,768],{"type":27,"tag":112,"props":758,"children":759},{"disabled":114,"type":115},[],{"type":32,"value":761}," Consider: replace localtunnel with S3 presigned URLs (",{"type":27,"tag":35,"props":763,"children":765},{"className":764},[],[766],{"type":32,"value":767},"--s3",{"type":32,"value":769}," flag)",{"key":771,"title":772,"empty":16,"ast":773},"extra","Current State Assessment",{"type":24,"children":774},[775,786,878],{"type":27,"tag":28,"props":776,"children":777},{},[778,784],{"type":27,"tag":779,"props":780,"children":781},"strong",{},[782],{"type":32,"value":783},"Pipeline is Avoma-centric.",{"type":32,"value":785}," Key coupling points:",{"type":27,"tag":49,"props":787,"children":788},{},[789,811,836,860,865],{"type":27,"tag":53,"props":790,"children":791},{},[792,797,798,803,805],{"type":27,"tag":35,"props":793,"children":795},{"className":794},[],[796],{"type":32,"value":283},{"type":32,"value":195},{"type":27,"tag":35,"props":799,"children":801},{"className":800},[],[802],{"type":32,"value":291},{"type":32,"value":804}," inject metadata header as ",{"type":27,"tag":35,"props":806,"children":808},{"className":807},[],[809],{"type":32,"value":810},"\"from Avoma\"",{"type":27,"tag":53,"props":812,"children":813},{},[814,820,822,828,829,835],{"type":27,"tag":35,"props":815,"children":817},{"className":816},[],[818],{"type":32,"value":819},".meta.json",{"type":32,"value":821}," sidecar assumes Avoma-shaped fields (",{"type":27,"tag":35,"props":823,"children":825},{"className":824},[],[826],{"type":32,"value":827},"avomaId",{"type":32,"value":65},{"type":27,"tag":35,"props":830,"children":832},{"className":831},[],[833],{"type":32,"value":834},"fetchedAt",{"type":32,"value":134},{"type":27,"tag":53,"props":837,"children":838},{},[839,844,846,851,853,858],{"type":27,"tag":35,"props":840,"children":842},{"className":841},[],[843],{"type":32,"value":156},{"type":32,"value":845}," schema has ",{"type":27,"tag":35,"props":847,"children":849},{"className":848},[],[850],{"type":32,"value":827},{"type":32,"value":852}," but no generic ",{"type":27,"tag":35,"props":854,"children":856},{"className":855},[],[857],{"type":32,"value":163},{"type":32,"value":859}," field",{"type":27,"tag":53,"props":861,"children":862},{},[863],{"type":32,"value":864},"No source attribution in aggregated index or dashboard",{"type":27,"tag":53,"props":866,"children":867},{},[868,870,876],{"type":32,"value":869},"Extraction prompt itself (",{"type":27,"tag":35,"props":871,"children":873},{"className":872},[],[874],{"type":32,"value":875},"extract-call.md",{"type":32,"value":877},") is source-agnostic — good news",{"type":27,"tag":28,"props":879,"children":880},{},[881,886],{"type":27,"tag":779,"props":882,"children":883},{},[884],{"type":32,"value":885},"Sagetap has no public API.",{"type":32,"value":887}," Help center and vendor portal docs show no API, export, webhook, or developer integration features. Metadata visible on the Sagetap platform page (dates, participant info) is only accessible through the UI. Options: manual metadata entry, or ask Sagetap support about programmatic access.",{"key":771,"title":889,"empty":16,"ast":890},"Approach Decision: Avoma-as-middleware (not CSV preprocessing)",{"type":24,"children":891},[892,897,905,948,956],{"type":27,"tag":28,"props":893,"children":894},{},[895],{"type":32,"value":896},"Rather than building a separate CSV preprocessor, Sagetap calls are uploaded as video recordings to Avoma, which handles transcription and speaker assignment. The pipeline then fetches them via the existing Avoma API with source-aware routing.",{"type":27,"tag":28,"props":898,"children":899},{},[900],{"type":27,"tag":779,"props":901,"children":902},{},[903],{"type":32,"value":904},"Why this approach won:",{"type":27,"tag":49,"props":906,"children":907},{},[908,913,918,923,943],{"type":27,"tag":53,"props":909,"children":910},{},[911],{"type":32,"value":912},"Avoma transcription + speaker assignment is already a solved problem",{"type":27,"tag":53,"props":914,"children":915},{},[916],{"type":32,"value":917},"No need for CSV parsing, speaker heuristics, or correction dictionaries",{"type":27,"tag":53,"props":919,"children":920},{},[921],{"type":32,"value":922},"Metadata encoded in structured subject line, parsed automatically",{"type":27,"tag":53,"props":924,"children":925},{},[926,928,934,936,941],{"type":32,"value":927},"Unified raw directory (",{"type":27,"tag":35,"props":929,"children":931},{"className":930},[],[932],{"type":32,"value":933},"data\u002Fraw\u002F",{"type":32,"value":935},") — no separate ",{"type":27,"tag":35,"props":937,"children":939},{"className":938},[],[940],{"type":32,"value":40},{"type":32,"value":942}," needed for pipeline",{"type":27,"tag":53,"props":944,"children":945},{},[946],{"type":32,"value":947},"Keeps the pipeline simple: one fetch path, source-aware branching",{"type":27,"tag":28,"props":949,"children":950},{},[951],{"type":27,"tag":779,"props":952,"children":953},{},[954],{"type":32,"value":955},"Manual steps required per Sagetap call:",{"type":27,"tag":957,"props":958,"children":959},"ol",{},[960,965,970,981],{"type":27,"tag":53,"props":961,"children":962},{},[963],{"type":32,"value":964},"Download video from Sagetap platform",{"type":27,"tag":53,"props":966,"children":967},{},[968],{"type":32,"value":969},"Upload to Avoma → set purpose\u002Ftype to \"sagetap\"",{"type":27,"tag":53,"props":971,"children":972},{},[973,975],{"type":32,"value":974},"Set structured subject: ",{"type":27,"tag":35,"props":976,"children":978},{"className":977},[],[979],{"type":32,"value":980},"{Name} - {Role}, Industry: {X}, Company Size: {X}, HQ: {Location}",{"type":27,"tag":53,"props":982,"children":983},{},[984],{"type":32,"value":985},"Manually assign speakers in Avoma (names + is_rep flags)",{"key":771,"title":987,"empty":16,"ast":988},"Key Decisions & Learnings",{"type":24,"children":989},[990,996,1050,1056,1116,1122,1154,1160,1192,1198],{"type":27,"tag":95,"props":991,"children":993},{"id":992},"filter-routing",[994],{"type":32,"value":995},"Filter routing",{"type":27,"tag":49,"props":997,"children":998},{},[999,1031],{"type":27,"tag":53,"props":1000,"children":1001},{},[1002,1007,1009,1015,1016,1022,1024,1029],{"type":27,"tag":35,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":32,"value":589},{"type":32,"value":1008}," checks ",{"type":27,"tag":35,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":32,"value":1014},"meeting.purpose?.label",{"type":32,"value":65},{"type":27,"tag":35,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":32,"value":1021},"meeting.type?.label",{"type":32,"value":1023}," for \"sagetap\", and ",{"type":27,"tag":35,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":32,"value":597},{"type":32,"value":1030}," (added in Phase 4)",{"type":27,"tag":53,"props":1032,"children":1033},{},[1034,1036,1042,1044,1049],{"type":32,"value":1035},"Early return in ",{"type":27,"tag":35,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":32,"value":1041},"isExternalProspectCall()",{"type":32,"value":1043}," bypasses attendee count check (uploads only have uploader in ",{"type":27,"tag":35,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":32,"value":249},{"type":32,"value":134},{"type":27,"tag":95,"props":1051,"children":1053},{"id":1052},"sidecar-attendees",[1054],{"type":32,"value":1055},"Sidecar attendees",{"type":27,"tag":49,"props":1057,"children":1058},{},[1059,1071,1103],{"type":27,"tag":53,"props":1060,"children":1061},{},[1062,1064,1069],{"type":32,"value":1063},"Avoma uploads only populate ",{"type":27,"tag":35,"props":1065,"children":1067},{"className":1066},[],[1068],{"type":32,"value":249},{"type":32,"value":1070}," with the uploader",{"type":27,"tag":53,"props":1072,"children":1073},{},[1074,1076,1081,1083,1089,1090,1096,1097],{"type":32,"value":1075},"After manual speaker assignment, ",{"type":27,"tag":35,"props":1077,"children":1079},{"className":1078},[],[1080],{"type":32,"value":241},{"type":32,"value":1082}," has the correct participants with ",{"type":27,"tag":35,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":32,"value":1088},"name",{"type":32,"value":65},{"type":27,"tag":35,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":32,"value":1095},"email",{"type":32,"value":65},{"type":27,"tag":35,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":32,"value":1102},"is_rep",{"type":27,"tag":53,"props":1104,"children":1105},{},[1106,1108,1114],{"type":32,"value":1107},"The ",{"type":27,"tag":35,"props":1109,"children":1111},{"className":1110},[],[1112],{"type":32,"value":1113},"transcription",{"type":32,"value":1115}," object is already fetched before sidecar construction, so speakers are available",{"type":27,"tag":95,"props":1117,"children":1119},{"id":1118},"date-handling",[1120],{"type":32,"value":1121},"Date handling",{"type":27,"tag":49,"props":1123,"children":1124},{},[1125,1130,1141],{"type":27,"tag":53,"props":1126,"children":1127},{},[1128],{"type":32,"value":1129},"Upload timestamp ≠ actual call date; pipeline marks date as \"Unknown\" in Claude prompt context",{"type":27,"tag":53,"props":1131,"children":1132},{},[1133,1135],{"type":32,"value":1134},"Date backfill skipped in all three paths (extract, batch, build-index) when ",{"type":27,"tag":35,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":32,"value":1140},"source === 'sagetap'",{"type":27,"tag":53,"props":1142,"children":1143},{},[1144,1146,1152],{"type":32,"value":1145},"Claude extracted ",{"type":27,"tag":35,"props":1147,"children":1149},{"className":1148},[],[1150],{"type":32,"value":1151},"date: null",{"type":32,"value":1153}," as expected — validation warns but doesn't fail",{"type":27,"tag":95,"props":1155,"children":1157},{"id":1156},"subject-parsing",[1158],{"type":32,"value":1159},"Subject parsing",{"type":27,"tag":49,"props":1161,"children":1162},{},[1163,1174,1187],{"type":27,"tag":53,"props":1164,"children":1165},{},[1166,1168],{"type":32,"value":1167},"Format: ",{"type":27,"tag":35,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":32,"value":1173},"\"Name - Role, Industry: X, Company Size: Y, HQ: Location Z\"",{"type":27,"tag":53,"props":1175,"children":1176},{},[1177,1179,1185],{"type":32,"value":1178},"Regex parser splits on ",{"type":27,"tag":35,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":32,"value":1184},"-",{"type":32,"value":1186}," then comma-separated key-value pairs",{"type":27,"tag":53,"props":1188,"children":1189},{},[1190],{"type":32,"value":1191},"Double-space in \"HQ: Location  Poland\" is a data entry issue, not a parser bug",{"type":27,"tag":95,"props":1193,"children":1195},{"id":1194},"extraction-quality",[1196],{"type":32,"value":1197},"Extraction quality",{"type":27,"tag":49,"props":1199,"children":1200},{},[1201,1206,1211,1224],{"type":27,"tag":53,"props":1202,"children":1203},{},[1204],{"type":32,"value":1205},"Claude correctly identified RobertK as cybersecurity persona, used industry hint",{"type":27,"tag":53,"props":1207,"children":1208},{},[1209],{"type":32,"value":1210},"Interest 3\u002F5 seems right for an early evaluation call",{"type":27,"tag":53,"props":1212,"children":1213},{},[1214,1216,1222],{"type":32,"value":1215},"Company name extracted as ",{"type":27,"tag":35,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":32,"value":1221},"null",{"type":32,"value":1223}," (anonymous) — correct behavior for Sagetap",{"type":27,"tag":53,"props":1225,"children":1226},{},[1227],{"type":32,"value":1228},"Avoma transcription quality is good enough without preprocessing corrections",{"key":771,"title":1230,"empty":16,"ast":1231},"Open Questions",{"type":24,"children":1232},[1233,1307,1313],{"type":27,"tag":957,"props":1234,"children":1235},{},[1236,1250,1263,1284,1297],{"type":27,"tag":53,"props":1237,"children":1238},{},[1239,1248],{"type":27,"tag":1240,"props":1241,"children":1242},"del",{},[1243],{"type":27,"tag":779,"props":1244,"children":1245},{},[1246],{"type":32,"value":1247},"Sagetap metadata access",{"type":32,"value":1249}," — Resolved: manual upload to Avoma is the workflow",{"type":27,"tag":53,"props":1251,"children":1252},{},[1253,1261],{"type":27,"tag":1240,"props":1254,"children":1255},{},[1256],{"type":27,"tag":779,"props":1257,"children":1258},{},[1259],{"type":32,"value":1260},"Transcript quality floor",{"type":32,"value":1262}," — Resolved: Avoma transcription is good enough",{"type":27,"tag":53,"props":1264,"children":1265},{},[1266,1274,1276,1282],{"type":27,"tag":1240,"props":1267,"children":1268},{},[1269],{"type":27,"tag":779,"props":1270,"children":1271},{},[1272],{"type":32,"value":1273},"Volume",{"type":32,"value":1275}," — Resolved: ",{"type":27,"tag":35,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":32,"value":1281},"upload-sagetap.ts",{"type":32,"value":1283}," automates upload (supports directory batch). Manual step reduced to speaker assignment only.",{"type":27,"tag":53,"props":1285,"children":1286},{},[1287,1295],{"type":27,"tag":1240,"props":1288,"children":1289},{},[1290],{"type":27,"tag":779,"props":1291,"children":1292},{},[1293],{"type":32,"value":1294},"Speaker mapping confidence",{"type":32,"value":1296}," — Resolved: manual assignment in Avoma solves this",{"type":27,"tag":53,"props":1298,"children":1299},{},[1300,1305],{"type":27,"tag":779,"props":1301,"children":1302},{},[1303],{"type":32,"value":1304},"Actual call dates",{"type":32,"value":1306}," — Can we get the real dates from the Sagetap platform for backfill?",{"type":27,"tag":95,"props":1308,"children":1310},{"id":1309},"dashboard-ssr-gotcha",[1311],{"type":32,"value":1312},"Dashboard SSR gotcha",{"type":27,"tag":49,"props":1314,"children":1315},{},[1316,1327,1347],{"type":27,"tag":53,"props":1317,"children":1318},{},[1319,1325],{"type":27,"tag":35,"props":1320,"children":1322},{"className":1321},[],[1323],{"type":32,"value":1324},"v-if",{"type":32,"value":1326}," conditions that depend on data not present in the server-rendered HTML can silently fail — the span never appears after hydration",{"type":27,"tag":53,"props":1328,"children":1329},{},[1330,1332,1338,1340,1345],{"type":32,"value":1331},"Fix: use unconditional rendering with ",{"type":27,"tag":35,"props":1333,"children":1335},{"className":1334},[],[1336],{"type":32,"value":1337},":class",{"type":32,"value":1339}," binding instead of ",{"type":27,"tag":35,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":32,"value":1324},{"type":32,"value":1346}," for source pills",{"type":27,"tag":53,"props":1348,"children":1349},{},[1350,1355],{"type":27,"tag":35,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":32,"value":468},{"type":32,"value":1356}," has its own interface copies — new schema fields must be added there too",{"key":771,"title":1358,"empty":16,"ast":1359},"Files Changed",{"type":24,"children":1360},[1361],{"type":27,"tag":49,"props":1362,"children":1363},{},[1364,1400,1429,1445,1456,1467,1478,1501,1512],{"type":27,"tag":53,"props":1365,"children":1366},{},[1367,1373,1374,1379,1381,1386,1388,1393,1395],{"type":27,"tag":35,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":32,"value":1372},"schemas\u002Fcall.ts",{"type":32,"value":518},{"type":27,"tag":35,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":32,"value":124},{"type":32,"value":1380}," type, ",{"type":27,"tag":35,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":32,"value":163},{"type":32,"value":1387}," on ",{"type":27,"tag":35,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":32,"value":156},{"type":32,"value":1394}," + ",{"type":27,"tag":35,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":32,"value":170},{"type":27,"tag":53,"props":1401,"children":1402},{},[1403,1409,1410,1415,1416,1421,1422,1427],{"type":27,"tag":35,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":32,"value":1408},"pipeline\u002Favoma.ts",{"type":32,"value":518},{"type":27,"tag":35,"props":1411,"children":1413},{"className":1412},[],[1414],{"type":32,"value":266},{"type":32,"value":65},{"type":27,"tag":35,"props":1417,"children":1419},{"className":1418},[],[1420],{"type":32,"value":589},{"type":32,"value":65},{"type":27,"tag":35,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":32,"value":547},{"type":32,"value":1428},", filter bypass, speaker-based sidecar, subject prefix detection (Phase 4)",{"type":27,"tag":53,"props":1430,"children":1431},{},[1432,1437,1438,1443],{"type":27,"tag":35,"props":1433,"children":1435},{"className":1434},[],[1436],{"type":32,"value":516},{"type":32,"value":518},{"type":27,"tag":779,"props":1439,"children":1440},{},[1441],{"type":32,"value":1442},"New",{"type":32,"value":1444}," (Phase 4) — automated Sagetap video upload to Avoma via API",{"type":27,"tag":53,"props":1446,"children":1447},{},[1448,1454],{"type":27,"tag":35,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":32,"value":1453},"pipeline\u002Fextract.ts",{"type":32,"value":1455}," — expanded sidecar type, source-aware metadata context, source propagation, date backfill guard",{"type":27,"tag":53,"props":1457,"children":1458},{},[1459,1465],{"type":27,"tag":35,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":32,"value":1464},"pipeline\u002Fbatch.ts",{"type":32,"value":1466}," — same source-aware metadata context and backfill guards",{"type":27,"tag":53,"props":1468,"children":1469},{},[1470,1476],{"type":27,"tag":35,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":32,"value":1475},"pipeline\u002Fbuild-index.ts",{"type":32,"value":1477}," — date backfill guard, source in index entry",{"type":27,"tag":53,"props":1479,"children":1480},{},[1481,1487,1489,1494,1495,1500],{"type":27,"tag":35,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":32,"value":1486},"site\u002Fcomposables\u002FuseCallData.ts",{"type":32,"value":1488}," — added ",{"type":27,"tag":35,"props":1490,"children":1492},{"className":1491},[],[1493],{"type":32,"value":163},{"type":32,"value":150},{"type":27,"tag":35,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":32,"value":156},{"type":32,"value":477},{"type":27,"tag":53,"props":1502,"children":1503},{},[1504,1510],{"type":27,"tag":35,"props":1505,"children":1507},{"className":1506},[],[1508],{"type":32,"value":1509},"site\u002Fpages\u002Fcalls\u002Findex.vue",{"type":32,"value":1511}," — source column (AV\u002FST pills)",{"type":27,"tag":53,"props":1513,"children":1514},{},[1515,1521],{"type":27,"tag":35,"props":1516,"children":1518},{"className":1517},[],[1519],{"type":32,"value":1520},"site\u002Fpages\u002Fcalls\u002F[id].vue",{"type":32,"value":1522}," — source badge in header",{"key":771,"title":1524,"empty":16,"ast":1525},"Notes",{"type":24,"children":1526},[1527],{"type":27,"tag":49,"props":1528,"children":1529},{},[1530,1535,1547],{"type":27,"tag":53,"props":1531,"children":1532},{},[1533],{"type":32,"value":1534},"Sagetap sessions are anonymized buyer evaluations — the prospect came specifically to evaluate Qpoint. This is a higher-intent signal than cold outbound calls.",{"type":27,"tag":53,"props":1536,"children":1537},{},[1538,1540,1545],{"type":32,"value":1539},"The two sample CSV transcripts in ",{"type":27,"tag":35,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":32,"value":40},{"type":32,"value":1546}," are kept for reference only — the actual pipeline path is through Avoma uploads.",{"type":27,"tag":53,"props":1548,"children":1549},{},[1550],{"type":32,"value":1551},"Sagetap's own vendor page mentions \"structured buyer feedback on relevance, clarity, timing, and trust\" — worth checking if that structured feedback is available alongside transcripts.",[],[],[],[],[],[],1794599366255]