{"id":2986,"date":"2026-08-27T17:05:35","date_gmt":"2026-08-27T17:05:35","guid":{"rendered":"https:\/\/blog.samarthya.me\/wps\/?p=2986"},"modified":"2026-08-27T17:12:11","modified_gmt":"2026-08-27T17:12:11","slug":"from-4000-findings-to-a-sprint-backlog-a-practical-vulnerability-triage-playbook","status":"publish","type":"post","link":"https:\/\/blog.samarthya.me\/wps\/2026\/08\/27\/from-4000-findings-to-a-sprint-backlog-a-practical-vulnerability-triage-playbook\/","title":{"rendered":"From 4,000 Findings to a Sprint Backlog: A Practical Vulnerability Triage Playbook"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/cve-3-1024x559.jpeg\" alt=\"\" class=\"wp-image-2987\" srcset=\"https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/cve-3-1024x559.jpeg 1024w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/cve-3-300x164.jpeg 300w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/cve-3.jpeg 1408w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/cve-3-300x164@2x.jpeg 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the <a href=\"https:\/\/blog.samarthya.me\/wps\/2026\/08\/24\/cve-cwe-and-the-art-of-not-fixing-everything-a-cisms-guide-to-prioritization-in-the-age-of-ai\/\" data-type=\"link\" data-id=\"https:\/\/blog.samarthya.me\/wps\/2026\/08\/24\/cve-cwe-and-the-art-of-not-fixing-everything-a-cisms-guide-to-prioritization-in-the-age-of-ai\/\">last post<\/a> I argued that prioritization &#8211; not patching speed &#8211; is the discipline that keeps security teams afloat. That&#8217;s easy to say and hard to operationalize. <\/p>\n\n\n\n<figure class=\"wp-block-pullquote has-background\" style=\"border-width:3px;border-top-left-radius:17px;border-top-right-radius:17px;border-bottom-left-radius:17px;border-bottom-right-radius:17px;background-image:var(--wp--preset--gradient--pale-ocean);\"><blockquote><p>&#8220;Fix what&#8217;s exploitable&#8221; is a slogan; it isn&#8217;t a workflow.<\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This post is the workflow; it&#8217;s the triage flow I&#8217;d actually run, the decisions at each gate, the traps that ambush teams, and the practical tips that separate a program that scales from one that drowns.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Mental Model: Triage Is a Funnel, Not a List<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The single biggest mistake is treating a vulnerability scan as a to-do list to be worked top to bottom by CVSS score. It isn&#8217;t a list. It&#8217;s a funnel, and each stage exists to <em>remove<\/em> items from human attention so that the handful reaching the bottom genuinely deserve an engineer&#8217;s time.<\/p>\n\n\n\n<div class=\"wp-block-snow-monkey-blocks-container smb-container c-container smb-container--no-gutters\"><div class=\"smb-container__body u-slim-width is-layout-constrained wp-block-snow-monkey-blocks-container-is-layout-constrained\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"517\" height=\"1024\" src=\"https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-517x1024.png\" alt=\"\" class=\"wp-image-2988\" srcset=\"https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-517x1024.png 517w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-152x300.png 152w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-776x1536.png 776w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-1035x2048.png 1035w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-scaled.png 1293w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-517x1024@2x.png 1034w, https:\/\/blog.samarthya.me\/wps\/wp-content\/uploads\/2026\/08\/triage-flow-152x300@2x.png 304w\" sizes=\"(max-width: 517px) 100vw, 517px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Every stage should be as automated as possible until the very bottom, where judgment lives. If a human is manually reading CVSS scores off a scanner export, the funnel is broken.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 0: Normalize and De-duplicate (Before Triage Even Starts)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You cannot prioritize what you can&#8217;t trust. Most teams underestimate how much noise sits <em>above<\/em> the triage layer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What happens here:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Consolidate sources.<\/strong> SCA, SAST, DAST, container scanning, cloud posture, and pentest findings all speak different dialects. Normalize them into one schema (asset, location, CVE\/CWE, severity, source, first-seen).<\/li>\n\n\n\n<li><strong>De-duplicate ruthlessly.<\/strong> The same CVE in a base image layer can appear in 200 containers. That&#8217;s <em>one<\/em> remediation decision, not 200 tickets.<\/li>\n\n\n\n<li><strong>Validate reachability early.<\/strong> Reachability analysis (does your code actually call the vulnerable function?) can eliminate 60\u201380% of dependency findings before a human ever looks. A vulnerable package you import but never invoke on a vulnerable path is often not a real risk.<\/li>\n\n\n\n<li><strong>Suppress with an expiry, never permanently.<\/strong> False positives get suppressed \u2014 but with a review date, so a suppression doesn&#8217;t quietly become a blind spot forever.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practical tip:<\/strong> Track your <em>noise ratio<\/em> &#8211; findings suppressed or de-duplicated vs. findings actioned. If 95% of raw findings never become work, that&#8217;s not a failure; that&#8217;s the funnel doing its job. But measure it, because a sudden shift signals either a new tool misconfigured or a real change in your exposure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 1: The Emergency Gate &#8211; &#8220;Is it burning right now?&#8221;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before any scoring, ask one binary question: <strong>is this being actively exploited?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The signals that trigger the emergency track:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CISA KEV listing.<\/strong> If the CVE is on the `Known Exploited Vulnerabilities` catalog, exploitation is confirmed in the wild. This overrides CVSS entirely. A KEV-listed 6.5 beats a non-KEV 9.8.<\/li>\n\n\n\n<li><strong>Vendor emergency advisory<\/strong> or an out-of-band patch. Vendors don&#8217;t break their patch cadence for fun.<\/li>\n\n\n\n<li><strong>Credible threat intel<\/strong> naming the CVE in active campaigns, especially targeting your sector.<\/li>\n\n\n\n<li><strong>Public weaponized exploit<\/strong> (not just a PoC) for an internet-facing asset you run.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What &#8220;emergency&#8221; actually means operationally:<\/strong> a defined SLA (e.g., 24-72 hours), authority to bypass the normal change queue, and a pre-agreed mitigation path if a patch isn&#8217;t ready \u2014 WAF virtual patch, feature disablement, or network isolation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practical tip:<\/strong> Pre-negotiate the emergency path <em>before<\/em> you need it. The middle of a Log4Shell-scale event is the worst time to discover you don&#8217;t have change-management authority to patch production over a weekend. Get that agreement in writing, tabletop it once a year.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 2: Exploitability Scoring \u2014 &#8220;Can it realistically be used against us?&#8221;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Everything that survives the emergency gate now gets scored &#8211; but not on CVSS alone. Layer exploitability signals on top of severity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Build a composite that blends:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Signal<\/th><th>What it tells you<\/th><th>Source<\/th><\/tr><\/thead><tbody><tr><td>CVSS base<\/td><td>Theoretical worst-case severity<\/td><td>NVD \/ vendor<\/td><\/tr><tr><td>EPSS<\/td><td>Probability of exploitation in next 30 days<\/td><td>FIRST.org<\/td><\/tr><tr><td>KEV<\/td><td>Confirmed active exploitation (binary)<\/td><td>CISA<\/td><\/tr><tr><td>Exploit maturity<\/td><td>PoC vs. functional vs. weaponized<\/td><td>Threat intel, CVSS temporal<\/td><\/tr><tr><td>Reachability<\/td><td>Is the vulnerable code path actually invoked?<\/td><td>SCA \/ code analysis<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How to read EPSS in practice:<\/strong> EPSS gives a probability, and the distribution is heavily skewed &#8211; the vast majority of CVEs sit below 10% and will likely never be exploited. A CVE at EPSS 0.85 is in rare, dangerous company. Use a threshold (many teams start around EPSS \u2265 0.1 combined with high CVSS) and tune it against what your team can absorb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practical tip:<\/strong> Don&#8217;t invent your own exploitability math from scratch. The Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree from CISA\/CMU is a free, defensible framework that walks you from <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;exploitation status&#8221; \u2192 &#8220;exposure&#8221; \u2192 &#8220;mission impact&#8221; to a clear <em>Act \/ Attend \/ Track \/ Track<\/em> outcome. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auditors love it because it&#8217;s a documented, repeatable decision &#8211; not a gut call.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you run  enterprise tools like <strong><code>Blackduck<\/code><\/strong>, the first three stages of the generic funnel &#8211; consolidate, enrich, score \u2014 are already handled <em>inside the platform<\/em>. This is the whole point of paying for the tool: you don&#8217;t build a consolidation pipeline, you configure a policy. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Blackduck&#8217;s BDSAs deliver, out of the box:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reachability analysis<\/strong> \u2014 whether your code actually invokes the vulnerable function, which is what kills most dependency noise.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Consolidated, de-duplicated findings<\/strong> across your dependency tree (direct and transitive) \u2014 no multi-scanner reconciliation to run.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Custom CVSS scores with temporal metrics<\/strong> \u2014 a sharper severity snapshot than raw NVD base scores.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CISA KEV tagging<\/strong> \u2014 actively-exploited CVEs are already flagged on the finding.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>EPSS scores<\/strong> \u2014 30-day exploitation probability attached to each CVE.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 3: Business Context &#8211; &#8220;Does it matter to <em>us<\/em>?&#8221;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is where a security <em>engineer&#8217;s<\/em> view and a CISM&#8217;s view diverge, and where most tools stop being helpful. A scanner knows the CVE; it does not know your business.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The multipliers that turn severity into risk:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Asset criticality.<\/strong> A vulnerability on the payment authorization service and the same vulnerability on a marketing microsite are not the same risk. You need an asset inventory with a criticality tier, or this whole stage is guesswork.<\/li>\n\n\n\n<li><strong>Data sensitivity.<\/strong> What does the asset touch &#8211; PII, PHI, cardholder data, crown-jewel IP? Regulatory exposure changes the calculus.<\/li>\n\n\n\n<li><strong>Exposure.<\/strong> Internet-facing and unauthenticated is a different universe from internal-only behind MFA and segmentation.<\/li>\n\n\n\n<li><strong>Existing compensating controls.<\/strong> A vulnerable service already fronted by a WAF, an IPS signature, or strict egress filtering carries lower <em>residual<\/em> risk.<\/li>\n\n\n\n<li><strong>Blast radius.<\/strong> Lateral-movement potential \u2014 a foothold on a flat network is worse than one in a well-segmented enclave.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The working formula (a decision aid, not a science):<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Residual Risk = Severity \u00d7 Exploitability \u00d7 Asset Criticality \u00d7 Exposure \u00f7 Compensating Controls<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Don&#8217;t over-engineer this into false precision. Its value is forcing the conversation about the last three factors that scanners ignore, and producing a <em>defensible, consistent<\/em> ordering.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practical tip:<\/strong> If you have no asset inventory with criticality tiers, that&#8217;s your real project &#8211; not vulnerability management. You cannot do risk-based prioritization on assets you can&#8217;t rank. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even a crude three-tier classification (crown jewel \/ important \/ commodity) transforms triage quality overnight.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 4: Remediation Decision \u2014 &#8220;What do we actually do?&#8221;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prioritization isn&#8217;t only about <em>what&#8217;s riskiest<\/em> &#8211; it&#8217;s about <em>risk reduced per unit of effort<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A moderate-risk finding with a one-line dependency bump may deserve to jump ahead of a high-risk finding that needs a six-week refactor and a downtime window.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For each item reaching this stage, pick a disposition:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Patch<\/strong> \u2014 the default when a fix exists and effort is reasonable.<\/li>\n\n\n\n<li><strong>Mitigate<\/strong> \u2014 compensating control when patching is disruptive or unavailable (virtual patch, config change, feature disablement, isolation).<\/li>\n\n\n\n<li><strong>Fix the class, not the instance<\/strong> \u2014 if the same CWE recurs (SQLi, hardcoded secrets, unsafe deserialization), invest in a systemic fix: a secure library, a lint\/SAST gate in CI, a developer guardrail. One well-placed control kills the next fifty instances.<\/li>\n\n\n\n<li><strong>Accept the risk<\/strong> \u2014 formally, with an owner, a rationale, and an expiry date. Risk acceptance is a legitimate, mature outcome \u2014 <em>silent<\/em> risk acceptance (a finding that just ages out ignored) is negligence. The difference is documentation and accountability.<\/li>\n\n\n\n<li><strong>Transfer<\/strong> \u2014 occasionally the right answer is contractual or insurance-based, especially for third-party components.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practical tip on effort estimation:<\/strong> Weight remediation by <em>disruption<\/em>, not just developer hours. A trivial patch that forces a regulated-system revalidation can cost more than a gnarly one in a low-stakes service. Ask &#8220;what breaks if we do this?&#8221; before &#8220;how hard is the code change?&#8221;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stage 5: Close the Loop \u2014 Verify, Measure, Improve<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Triage that doesn&#8217;t verify remediation is theater.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Confirm the fix.<\/strong> Re-scan or re-test. &#8220;Ticket closed&#8221; is not &#8220;vulnerability gone&#8221; \u2014 teams routinely close tickets against patches that didn&#8217;t fully deploy.<\/li>\n\n\n\n<li><strong>Track the metrics that matter:<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>Time-to-remediate by severity tier<\/strong> (are you hitting your SLAs where it counts?)<\/li>\n\n\n\n<li><strong>Mean time from KEV listing to remediation<\/strong> (your emergency-response health)<\/li>\n\n\n\n<li><strong>Backlog age distribution<\/strong> (is old risk quietly accumulating?)<\/li>\n\n\n\n<li><strong>Recurrence rate by CWE<\/strong> (are the same weakness classes coming back? If so, Stage 4 option 3 is failing)<\/li>\n\n\n\n<li><strong>Noise ratio<\/strong> (funnel efficiency, from Stage 0)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Feed findings back into prevention.<\/strong> Recurring CWEs should become CI gates, secure-by-default libraries, and developer training topics. The best vulnerability is the one that never gets written.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practical tip:<\/strong> Report <em>risk burndown<\/em>, not <em>vulnerability count<\/em>, to leadership. &#8220;We reduced critical, internet-facing, actively-exploited exposure by 70% this quarter&#8221; is a board-ready sentence. &#8220;We closed 3,000 findings&#8221; invites the question &#8220;how many are left?&#8221; and makes you look like you&#8217;re losing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The AI-Era Amplifiers (and How the Flow Absorbs Them)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each stage of this funnel earns its keep specifically because of the current pace:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stage 0 matters more<\/strong> because AI-driven scanners and coding assistants generate more findings and more false positives than ever. Automated de-dup and reachability are now survival tools, not nice-to-haves.<\/li>\n\n\n\n<li><strong>Stage 2 matters more<\/strong> because attacker time-to-weaponize is compressing. EPSS and KEV as near-real-time signals keep you ahead of the shrinking disclosure-to-exploit window.<\/li>\n\n\n\n<li><strong>Stage 4 option 3 matters more<\/strong> because AI-generated code reproduces classic CWEs at scale. Fixing patterns via CI gates beats chasing individual instances forever.<\/li>\n\n\n\n<li><strong>Automate the funnel, reserve humans for the bottom.<\/strong> Use automation (and increasingly, AI-assisted triage) to compress Stages 0\u20132. Reserve scarce human judgment for Stage 3 business context and Stage 4 disposition \u2014 the parts that require knowing your organization.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A caution on AI-assisted triage:<\/strong> it&#8217;s genuinely useful for summarizing, clustering, and drafting risk rationales \u2014 but treat its output as a <em>recommendation requiring validation<\/em>, not a verdict. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An AI that confidently mis-ranks a crown-jewel asset because it lacks your business context is a new failure mode. Keep the human at the disposition gate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The One-Page Version<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you remember nothing else, run every finding through these questions in order:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Being exploited now?<\/strong> (KEV \/ threat intel) \u2192 Emergency track.<\/li>\n\n\n\n<li><strong>Realistically exploitable against us?<\/strong> (EPSS + reachability + exposure) \u2192 If no, deprioritize hard.<\/li>\n\n\n\n<li><strong>On something that matters?<\/strong> (asset criticality + data sensitivity) \u2192 Scale urgency to value.<\/li>\n\n\n\n<li><strong>What&#8217;s the cheapest effective fix?<\/strong> (patch \/ mitigate \/ fix-the-class \/ accept) \u2192 Maximize risk reduced per unit effort.<\/li>\n\n\n\n<li><strong>Did it actually get fixed, and is the class coming back?<\/strong> (verify + measure) \u2192 Close the loop and feed prevention.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Everything else is detail. The discipline is refusing to let a 10,000-row scanner export dictate your priorities \u2014 and replacing it with a repeatable, defensible funnel that ends in decisions your leadership, your engineers, and your auditors can all stand behind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>That&#8217;s not fixing faster. That&#8217;s deciding smarter \u2014 at scale, at pace.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post I argued that prioritization &#8211; not patching speed &#8211; is the discipline that keeps security teams afloat. That&#8217;s easy to say and hard to operationalize. &#8220;Fix what&#8217;s exploitable&#8221; is a slogan; it isn&#8217;t a workflow. This post is the workflow; it&#8217;s the triage flow I&#8217;d actually run, the decisions at each [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2989,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"_exactmetrics_skip_tracking":false,"footnotes":""},"categories":[34,239],"tags":[185,366,16],"class_list":["post-2986","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-technical","category-technical-2","tag-cism","tag-kev","tag-security","post_format-post-format-image"],"_links":{"self":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts\/2986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/comments?post=2986"}],"version-history":[{"count":2,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts\/2986\/revisions"}],"predecessor-version":[{"id":2992,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/posts\/2986\/revisions\/2992"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/media\/2989"}],"wp:attachment":[{"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/media?parent=2986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/categories?post=2986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.samarthya.me\/wps\/wp-json\/wp\/v2\/tags?post=2986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}