[{"data":1,"prerenderedAt":299},["ShallowReactive",2],{"cycle-doc-market-analyst-c8-code-readability-todo.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":18},{"id":5,"title":6},"c8","Agent Pivot",{"id":8,"label":9},"market-analyst","Market Analyst","code-readability-todo.md","TODO — Code Readability",[13,14,15,16,17],"Create a shared format utility","Add \"why\" comments to pipeline business logic","Break up large functions","Document magic values","Standardize error handling",{"type":19,"children":20},"root",[21,29,115,120,171,176,213,218,273,278],{"type":22,"tag":23,"props":24,"children":26},"element","h2",{"id":25},"create-a-shared-format-utility",[27],{"type":28,"value":13},"text",{"type":22,"tag":30,"props":31,"children":32},"ul",{},[33,76,89],{"type":22,"tag":34,"props":35,"children":36},"li",{},[37,44,46,52,54,60,62,68,70],{"type":22,"tag":38,"props":39,"children":41},"code",{"className":40},[],[42],{"type":28,"value":43},"formatLabel()",{"type":28,"value":45}," and ",{"type":22,"tag":38,"props":47,"children":49},{"className":48},[],[50],{"type":28,"value":51},"formatDate()",{"type":28,"value":53}," are duplicated across ",{"type":22,"tag":38,"props":55,"children":57},{"className":56},[],[58],{"type":28,"value":59},"index.vue",{"type":28,"value":61},", ",{"type":22,"tag":38,"props":63,"children":65},{"className":64},[],[66],{"type":28,"value":67},"[calls]\u002Findex.vue",{"type":28,"value":69},", and ",{"type":22,"tag":38,"props":71,"children":73},{"className":72},[],[74],{"type":28,"value":75},"[name].vue",{"type":22,"tag":34,"props":77,"children":78},{},[79,81,87],{"type":28,"value":80},"Extract to ",{"type":22,"tag":38,"props":82,"children":84},{"className":83},[],[85],{"type":28,"value":86},"site\u002Futils\u002Fformat.ts",{"type":28,"value":88}," (or a composable) and import from one place",{"type":22,"tag":34,"props":90,"children":91},{},[92,94,100,102,108,109],{"type":28,"value":93},"Same for ",{"type":22,"tag":38,"props":95,"children":97},{"className":96},[],[98],{"type":28,"value":99},"formatTime()",{"type":28,"value":101}," duplicated between ",{"type":22,"tag":38,"props":103,"children":105},{"className":104},[],[106],{"type":28,"value":107},"avoma.ts",{"type":28,"value":45},{"type":22,"tag":38,"props":110,"children":112},{"className":111},[],[113],{"type":28,"value":114},"avoma-notes.ts",{"type":22,"tag":23,"props":116,"children":118},{"id":117},"add-why-comments-to-pipeline-business-logic",[119],{"type":28,"value":14},{"type":22,"tag":30,"props":121,"children":122},{},[123,141,160],{"type":22,"tag":34,"props":124,"children":125},{},[126,131,133,139],{"type":22,"tag":38,"props":127,"children":129},{"className":128},[],[130],{"type":28,"value":107},{"type":28,"value":132}," filtering loops (",{"type":22,"tag":38,"props":134,"children":136},{"className":135},[],[137],{"type":28,"value":138},"isExternalProspectCall",{"type":28,"value":140},") — explain the business reason for each exclusion pattern",{"type":22,"tag":34,"props":142,"children":143},{},[144,150,152,158],{"type":22,"tag":38,"props":145,"children":147},{"className":146},[],[148],{"type":28,"value":149},"extract.ts",{"type":28,"value":151}," ",{"type":22,"tag":38,"props":153,"children":155},{"className":154},[],[156],{"type":28,"value":157},"extractCall()",{"type":28,"value":159}," — document data priority decisions and the JSON regex pattern",{"type":22,"tag":34,"props":161,"children":162},{},[163,169],{"type":22,"tag":38,"props":164,"children":166},{"className":165},[],[167],{"type":28,"value":168},"batch.ts",{"type":28,"value":170}," — document the skip\u002Fforce logic intent",{"type":22,"tag":23,"props":172,"children":174},{"id":173},"break-up-large-functions",[175],{"type":28,"value":15},{"type":22,"tag":30,"props":177,"children":178},{},[179,196],{"type":22,"tag":34,"props":180,"children":181},{},[182,187,189,194],{"type":22,"tag":38,"props":183,"children":185},{"className":184},[],[186],{"type":28,"value":149},{"type":28,"value":188},": ",{"type":22,"tag":38,"props":190,"children":192},{"className":191},[],[193],{"type":28,"value":157},{"type":28,"value":195}," is 162 lines covering load, fetch, parse, validate, and write — split into focused helpers",{"type":22,"tag":34,"props":197,"children":198},{},[199,204,205,211],{"type":22,"tag":38,"props":200,"children":202},{"className":201},[],[203],{"type":28,"value":107},{"type":28,"value":188},{"type":22,"tag":38,"props":206,"children":208},{"className":207},[],[209],{"type":28,"value":210},"fetchNewCalls()",{"type":28,"value":212}," is 145 lines — extract the filtering logic into named helper functions",{"type":22,"tag":23,"props":214,"children":216},{"id":215},"document-magic-values",[217],{"type":28,"value":16},{"type":22,"tag":30,"props":219,"children":220},{},[221,238,256],{"type":22,"tag":34,"props":222,"children":223},{},[224,229,230,236],{"type":22,"tag":38,"props":225,"children":227},{"className":226},[],[228],{"type":28,"value":107},{"type":28,"value":188},{"type":22,"tag":38,"props":231,"children":233},{"className":232},[],[234],{"type":28,"value":235},"meeting.duration \u003C 300",{"type":28,"value":237}," — comment that 300 = 5-minute minimum threshold",{"type":22,"tag":34,"props":239,"children":240},{},[241,247,248,254],{"type":22,"tag":38,"props":242,"children":244},{"className":243},[],[245],{"type":28,"value":246},"InterestDots.vue",{"type":28,"value":188},{"type":22,"tag":38,"props":249,"children":251},{"className":250},[],[252],{"type":28,"value":253},"levelColors",{"type":28,"value":255}," array — explain the color mapping strategy and why indices 0 and 1 are identical",{"type":22,"tag":34,"props":257,"children":258},{},[259,264,265,271],{"type":22,"tag":38,"props":260,"children":262},{"className":261},[],[263],{"type":28,"value":59},{"type":28,"value":188},{"type":22,"tag":38,"props":266,"children":268},{"className":267},[],[269],{"type":28,"value":270},".slice(0, 20)",{"type":28,"value":272}," — why 20?",{"type":22,"tag":23,"props":274,"children":276},{"id":275},"standardize-error-handling",[277],{"type":28,"value":17},{"type":22,"tag":30,"props":279,"children":280},{},[281,294],{"type":22,"tag":34,"props":282,"children":283},{},[284,286,292],{"type":28,"value":285},"Some catches log warnings, others are silent (",{"type":22,"tag":38,"props":287,"children":289},{"className":288},[],[290],{"type":28,"value":291},"} catch { \u002F* skip bad metadata *\u002F }",{"type":28,"value":293},")",{"type":22,"tag":34,"props":295,"children":296},{},[297],{"type":28,"value":298},"Use consistent logging so errors are surfaced during debugging",1794599410009]