{
  "count": 55,
  "generated": "2026-08-19T16:50:06.057Z",
  "bots": [
    {
      "slug": "speed-to-lead-watchdog",
      "name": "Speed-to-Lead Watchdog",
      "summary": "Watches new leads and escalates the moment one sits unworked past your contact-speed threshold.",
      "category": "intake",
      "integrations": [
        "Lead Docket",
        "Filevine",
        "Slack",
        "CallRail"
      ],
      "prompt": "Set up a new bot for me that watches new leads in real time. Walk me through connecting my case management system and Slack, then configure it: every time a new lead lands, start a clock, and if nobody has logged a call or text attempt within my threshold, escalate it by name to the intake manager with the lead's source, tort or case type, and how long it has been sitting. Track first-touch time by intake specialist and by lead source, and send me a weekly summary showing median and 90th-percentile speed-to-lead broken out both ways. Ask me what my contact-speed threshold is, who to escalate to during business hours versus nights and weekends, which lead sources are excluded, and what counts as a real contact attempt. Run it in observe-only mode for three days so I can compare its numbers to what my team reports, then save it.",
      "never": [
        "Contact a lead who declined, asked not to be contacted, or is represented by other counsel",
        "Decide that a lead is unqualified — it escalates, a person judges",
        "Send anything to a lead directly; it pages your intake specialist"
      ],
      "caution": "Escalation messages name specific leads. Keep the channel private and restricted to staff already inside your confidentiality perimeter.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/speed-to-lead-watchdog"
    },
    {
      "slug": "unsigned-lead-revival",
      "name": "Unsigned Lead Revival",
      "summary": "Works the pile of leads that were never signed and never formally declined.",
      "category": "intake",
      "integrations": [
        "Filevine",
        "Litify",
        "Gmail",
        "Outlook"
      ],
      "prompt": "Set up a new bot for me I can trigger monthly to work my unsigned lead backlog. Walk me through connecting my case management system and my email, then configure it: pull every lead from the last eighteen months that was never signed and never formally declined, group them by why they stalled — never reached, wanted to think, potential statute problem, sent to another firm — and for each group draft a short re-contact message appropriate to that reason. Never re-contact anyone who declined, asked not to be contacted, or is represented by other counsel, and check for that explicitly before drafting. Ask me which case types are worth reviving, what my statute cutoffs are by jurisdiction, what tone to use, and who reviews before anything sends. Show me the full segmented list and every draft for approval, run the first batch with me watching, then save it.",
      "never": [],
      "caution": "Contacting a represented person is a bar violation. The represented-party and do-not-contact checks are not optional steps to skip for speed.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/unsigned-lead-revival"
    },
    {
      "slug": "intake-call-scorer",
      "name": "Intake Call Scorer",
      "summary": "Scores recorded intake calls against your own qualification script and coaches the specialist.",
      "category": "intake",
      "integrations": [
        "CallRail",
        "RingCentral",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs after each recorded intake call. Walk me through connecting my call recording platform and Slack, then configure it: score every call against my qualification script — did the specialist confirm the injury, the date, the product or defendant, treatment, prior representation, and the statute window — leave timestamped notes where a required question was skipped or the caller gave a disqualifying answer that went unheard, and end with the two highest-value things for that specialist to change on the next call. Roll it up weekly by specialist and by tort campaign so I can see which criteria get missed most. Ask me for my script, my disqualifiers by case type, and how blunt the coaching should be, score ten past calls so I can check it against my own read, then save it.",
      "never": [],
      "caution": "Call recordings contain protected information. Confirm your recording consent posture in every state you take calls from before connecting anything.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/intake-call-scorer"
    },
    {
      "slug": "statute-window-sentinel",
      "name": "Statute Window Sentinel",
      "summary": "Flags open matters approaching a limitations or repose deadline before it becomes a claim.",
      "category": "case-ops",
      "integrations": [
        "Filevine",
        "CasePeer",
        "SmartAdvocate",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs every morning. Walk me through connecting my case management system and Slack, then configure it: review every open matter and every unsigned lead with a known incident date, compute the applicable limitations window from the jurisdiction and case type I define, and surface anything inside my warning horizon — sorted by days remaining, with the responsible attorney named. Flag separately any matter where the incident date, jurisdiction, or case type is missing or contradictory, because a blank field is the real risk. This is a tickler, not a legal determination: it reports what the data says and never concludes that a claim is or is not time-barred. Ask me for my jurisdiction and case-type rules, my warning horizon, and who receives each tier, run it read-only against last quarter so I can check it caught what I already knew, then save it.",
      "never": [
        "Conclude that a claim is or is not time-barred",
        "Calculate tolling, discovery-rule, or repose exceptions",
        "Close, dismiss, or alter a matter — it reports and flags only"
      ],
      "caution": "A calendaring aid only. It does not compute tolling, discovery-rule, or repose exceptions, and it is not a substitute for docketing by a supervised professional.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/statute-window-sentinel"
    },
    {
      "slug": "per-tort-cpl-monitor",
      "name": "Per-Tort CPL Monitor",
      "summary": "Reports cost per lead and cost per signed case by tort campaign, never blended.",
      "category": "mass-tort",
      "integrations": [
        "Meta Ads Manager",
        "Google Ads",
        "Filevine",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs every weekday at 8am. Walk me through connecting Meta Ads Manager, Google Ads, and my case management system, then configure it: for each active tort campaign, report spend, leads, retainers out, retainers signed, cost per lead, and cost per signed case, each with the as-of date and the lookback window stated on its face. Never blend campaigns into a single average — every figure is reported per tort. Compare each number to its own trailing four-week median and flag any campaign where cost per signed case moved more than my threshold, with the most likely driver: volume, lead quality, or signing rate. Ask me which campaigns are live, how you match a signed case back to its source, and my alert thresholds, reconcile one past week against my own numbers, then save it.",
      "never": [
        "Blend campaigns into a single average — every figure is per tort",
        "Report a cost figure without the as-of date and lookback window on its face",
        "Change a bid, a budget, or a campaign setting"
      ],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/per-tort-cpl-monitor"
    },
    {
      "slug": "tort-qualification-drift",
      "name": "Tort Qualification Drift Detector",
      "summary": "Catches when the leads coming in stop matching the criteria the campaign was built for.",
      "category": "mass-tort",
      "integrations": [
        "Filevine",
        "Lead Docket",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs weekly per tort campaign. Walk me through connecting my case management system and Slack, then configure it: compare the qualification answers on this week's leads against the criteria the campaign targets — injury type, product or exposure, date range, treatment, venue — and tell me where the incoming mix has drifted from what actually signs. Show the shift as before-and-after percentages on each criterion, name the criterion doing the most damage to the signing rate, and say plainly whether the problem looks like targeting, creative, or the screening questions themselves. Ask me the criteria for each campaign, what a healthy mix looks like, and how much drift is worth waking me up for, backtest it on a campaign that went sideways so I can see it catch a known failure, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/tort-qualification-drift"
    },
    {
      "slug": "creative-fatigue-forecaster",
      "name": "Creative Fatigue Forecaster",
      "summary": "Predicts which mass tort ad creative is about to die and what to queue behind it.",
      "category": "mass-tort",
      "integrations": [
        "Meta Ads Manager",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs daily. Walk me through connecting Meta Ads Manager, then configure it: for every active ad in my tort campaigns, track frequency, cost per lead trend, and the ratio of recent to lifetime performance, and forecast which creatives will cross my cost-per-lead ceiling within the next seven days. For each one, describe what the winning creatives currently in market have in common — hook, format, qualifier framing, visual treatment — and propose the next variant to test, as a brief rather than a finished asset. Rank the whole set by urgency. Ask me for my cost-per-lead ceiling by tort, my minimum spend before a verdict on a creative, and which creatives are protected, run one forecast against last month so I can check what it would have called, then save it.",
      "never": [],
      "caution": "Ad copy for legal services is governed by bar advertising rules in every state you run in. Nothing here goes live without your own compliance review.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/creative-fatigue-forecaster"
    },
    {
      "slug": "gbp-category-auditor",
      "name": "GBP Category Auditor",
      "summary": "Audits your Google Business Profile primary category against the firms actually winning your map pack.",
      "category": "local-seo",
      "integrations": [
        "Google Business Profile",
        "Google Search"
      ],
      "prompt": "Set up a new bot for me I can trigger per office location. Walk me through connecting Google Business Profile and Google Search, then configure it: for the practice-area searches I care about in this city, pull the firms currently holding the three-pack, record each one's primary and secondary categories, and compare them to mine. Tell me plainly whether my primary category matches what wins for this query set, and if it does not, what the switch would be and what I would risk losing. Then audit the rest of the profile against the same winners: services listed, photo count and recency, hours completeness, and whether the profile links to a real location-specific landing page or the homepage. Ask me which locations and queries matter, run the first audit with me watching, then save it for a monthly run.",
      "never": [
        "Switch your primary category, or change anything on the profile",
        "Recommend a category without showing what the firms holding your map pack actually use",
        "Post, reply to, or edit any profile content"
      ],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "PlatinumProfile.ai",
        "url": "https://platinumprofile.ai"
      },
      "url": "https://plaintiffbots.com/bots/gbp-category-auditor"
    },
    {
      "slug": "landing-page-architecture-check",
      "name": "Landing Page Architecture Check",
      "summary": "Checks whether each location and practice area has its own real page, or is pointing at the homepage.",
      "category": "local-seo",
      "integrations": [
        "Google Search Console",
        "DataForSEO"
      ],
      "prompt": "Set up a new bot for me I can trigger against my site. Walk me through connecting Google Search Console and my site, then configure it: map every office location and every practice area I name to the page that currently serves it, and flag the ones pointing at the homepage, a shared page, or a thin page with no local substance. For each gap, tell me what the page would need to be a genuine location page — address and map, local attorney names, jurisdiction-specific content, real matter examples, distinct title and heading — and rank the gaps by the search volume sitting behind them. Cross-check what each page is already ranking for so I do not rebuild something that works. Ask me for my locations, practice areas, and which pages are off limits, run it once against my current site, then save it for a quarterly review.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "PlatinumProfile.ai",
        "url": "https://platinumprofile.ai"
      },
      "url": "https://plaintiffbots.com/bots/landing-page-architecture-check"
    },
    {
      "slug": "map-pack-position-tracker",
      "name": "Map Pack Position Tracker",
      "summary": "Tracks your three-pack position across a real grid of your service area, not just from the office.",
      "category": "local-seo",
      "integrations": [
        "Google Business Profile",
        "DataForSEO",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs weekly. Walk me through connecting Google Business Profile and a search data source, then configure it: check my map pack position for each of my priority queries from a grid of points across my actual service area rather than from a single location, since ranking at the office address tells me nothing about the suburbs where the cases are. Report the grid as a coverage percentage per query, name the competitors holding positions where I do not appear, and flag any week-over-week movement past my threshold with what changed on the winning profiles. Ask me for my locations, grid radius, priority queries, and alert threshold, run one full grid so I can compare it to what I see on my own phone, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "PlatinumProfile.ai",
        "url": "https://platinumprofile.ai"
      },
      "url": "https://plaintiffbots.com/bots/map-pack-position-tracker"
    },
    {
      "slug": "ai-answer-visibility-audit",
      "name": "AI Answer Visibility Audit",
      "summary": "Finds out whether ChatGPT, Claude, Gemini, and AI Overviews name your firm — and who they name instead.",
      "category": "ai-visibility",
      "integrations": [
        "Web Search",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs monthly. Walk me through connecting web search and a spreadsheet, then configure it: run the questions a real injured person would ask an AI assistant in my markets — who to call, what a case is worth, whether they have a claim, which firm handles this tort — and record for each assistant whether my firm is named, in what position, what it is credited with, and which firms are named instead. Capture the sources each answer cites, because those citations are the actual target. Produce a ranked list of the specific pages and third-party sources I would need to appear on to enter these answers, and track my share of mentions over time. Ask me for my markets, practice areas, competitor set, and question list, run the first audit with me watching, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/ai-answer-visibility-audit"
    },
    {
      "slug": "citation-source-gap-finder",
      "name": "Citation Source Gap Finder",
      "summary": "Identifies the third-party pages AI assistants cite about your practice area, and whether you are on them.",
      "category": "ai-visibility",
      "integrations": [
        "Web Search",
        "Ahrefs"
      ],
      "prompt": "Set up a new bot for me I can trigger per practice area. Walk me through connecting web search, then configure it: collect the sources that AI assistants and AI Overviews actually cite when answering questions in my practice area and market — directories, legal publishers, local news, association listings, review platforms, injury guides — and check whether my firm appears on each, how it is described, and whether the listing is current and accurate. Sort the gaps by how often each source is cited rather than by domain authority. For each one, tell me exactly what it would take to be included and whether that is a form, an editorial pitch, a paid listing, or a relationship. Ask me for my practice areas and markets, run the first pass with me watching, then save it for a quarterly run.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/citation-source-gap-finder"
    },
    {
      "slug": "entity-consistency-sweep",
      "name": "Entity Consistency Sweep",
      "summary": "Finds every place your firm name, address, and attorney bios disagree with each other online.",
      "category": "ai-visibility",
      "integrations": [
        "Web Search",
        "Google Business Profile"
      ],
      "prompt": "Set up a new bot for me that runs monthly. Walk me through connecting web search and my site, then configure it: collect every listing, directory entry, bar profile, review platform, and press mention of my firm and my attorneys, and compare the firm name, address, phone, practice areas, bar admissions, and attorney titles across all of them against the canonical version I give it. Report every disagreement in one table with the source, the wrong value, the correct value, and how to fix it, ordered by how visible the source is. Flag anything that is not merely stale but affirmatively wrong about credentials or admissions, since that carries a different kind of risk than an old suite number. Ask me for the canonical record and which sources I control, run it once, then save it.",
      "never": [],
      "caution": "Inaccurate public statements about credentials or admissions can be a bar advertising problem, not just an SEO problem. Correct those first.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/entity-consistency-sweep"
    },
    {
      "slug": "medical-records-chase",
      "name": "Medical Records Chase",
      "summary": "Tracks every outstanding records request and chases the providers that have gone quiet.",
      "category": "records",
      "integrations": [
        "Filevine",
        "CasePeer",
        "Gmail"
      ],
      "prompt": "Set up a new bot for me that runs every weekday. Walk me through connecting my case management system and my email, then configure it: track every outstanding medical records and billing request by provider, matter, date requested, and date last chased, and surface anything past my follow-up interval with a drafted follow-up letter referencing the original request date, the authorization on file, and the specific records still missing. Escalate the providers that have ignored two or more follow-ups, and tell me which are chronically slow across all my matters so I can change how we request from them. Ask me for my follow-up intervals, my letter templates, who signs them, and which providers need a phone call instead. Show me every draft before it sends, run it read-only for a week, then save it.",
      "never": [],
      "caution": "Protected health information. Confirm your HIPAA posture and any business associate obligations before connecting a records system to anything.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/medical-records-chase"
    },
    {
      "slug": "medical-chronology-builder",
      "name": "Medical Chronology Builder",
      "summary": "Turns a stack of records into a dated chronology with citations back to the page.",
      "category": "records",
      "integrations": [
        "Filevine",
        "Dropbox",
        "Box"
      ],
      "prompt": "Set up a new bot for me I can trigger on a matter's records. Walk me through connecting my document store, then configure it: read the produced records and build a chronology with the date, provider, visit type, findings, treatment, work restrictions, and a citation to the exact document and page for every line. Separate what the record actually says from any inference, and mark gaps in treatment, contradictory entries, and references to prior injuries or conditions in their own sections rather than burying them. Produce the chronology plus a short summary of the treatment arc and the unanswered questions a defense expert would ask. Never characterize causation or prognosis. Ask me which matter, what format my attorneys want, and which providers to prioritize, run it on a matter I know cold so I can check every citation, then save it.",
      "never": [
        "Characterize causation, prognosis, or the significance of a finding",
        "State anything not in the record — inference is kept separate from what the document says",
        "Leave a line without a citation to the source document and page"
      ],
      "caution": "Protected health information, and the output is work product. Every line must be verified against the source by a supervised professional before it leaves the firm.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/medical-chronology-builder"
    },
    {
      "slug": "lien-inventory-tracker",
      "name": "Lien Inventory Tracker",
      "summary": "Keeps a live inventory of every lien and payer interest attached to each matter.",
      "category": "records",
      "integrations": [
        "Filevine",
        "Litify",
        "Gmail"
      ],
      "prompt": "Set up a new bot for me that runs weekly. Walk me through connecting my case management system and my email, then configure it: maintain a live inventory of every asserted lien and payer interest per matter — health plan, government payer, provider, letter of protection, subrogation claim — with the asserted amount, the date asserted, the last correspondence, and whether a reduction request is outstanding. Flag matters approaching resolution where the lien picture is still incomplete, since that is where the money and the delay live. Draft the follow-up correspondence for anything that has gone quiet past my interval. Ask me for my follow-up intervals, my correspondence templates, and who approves reduction requests, show me every draft before it sends, run it read-only for two weeks, then save it.",
      "never": [],
      "caution": "Lien resolution has statutory and contractual rules that vary by payer and jurisdiction. This tracks status only; it does not determine what is owed.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/lien-inventory-tracker"
    },
    {
      "slug": "practice-area-content-engine",
      "name": "Practice Area Content Engine",
      "summary": "Writes practice area and jurisdiction pages in your firm's voice, from your own case history.",
      "category": "marketing",
      "integrations": [
        "Google Search Console",
        "Filevine",
        "Google Docs"
      ],
      "prompt": "Set up a new bot for me I can trigger for content. Walk me through connecting my site, Google Search Console, and my case management system, then configure it: learn my firm's voice from pages I point to, then draft practice area and jurisdiction pages built on what my firm has actually handled — real venue detail, local procedure, the questions clients in that county actually ask — rather than the same paragraphs every firm publishes. Ground every claim in something verifiable and never state a result, an amount, or an outcome unless I supply and approve it. Include the questions an AI assistant would need answered to cite the page. Ask me for my voice references, my practice areas and venues, what claims are off limits, and my publishing workflow. Show me each draft for approval, write the first page with me watching, then save it.",
      "never": [],
      "caution": "Case results and testimonials are the most heavily regulated content in legal advertising. No result, amount, or client statement goes in without your compliance review and any required disclaimer.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/practice-area-content-engine"
    },
    {
      "slug": "verdict-newsjacking",
      "name": "Verdict Newsjacking",
      "summary": "Watches for verdicts and rulings in your torts and drafts commentary while the news is live.",
      "category": "marketing",
      "integrations": [
        "Web Search",
        "LinkedIn",
        "Google Docs"
      ],
      "prompt": "Set up a new bot for me that runs twice daily. Walk me through connecting web search and my publishing workflow, then configure it: watch for verdicts, settlements, MDL orders, bellwether results, and regulatory action in the torts and practice areas I follow, and for anything genuinely new, draft a short piece of commentary in my voice explaining what happened, what it means for people with a claim, and what it does not mean. Keep a state file so it never covers the same development twice. Cite the primary source and say plainly when a report is secondhand or unconfirmed. Never predict outcomes in pending matters or imply a result is available to anyone reading. Ask me which torts and courts to follow, my voice references, and my publishing workflow, run one cycle so I can judge the signal, then save it.",
      "never": [],
      "caution": "Commentary on pending litigation is subject to trial publicity rules as well as advertising rules. Do not comment on matters your firm is handling without counsel's review.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/verdict-newsjacking"
    },
    {
      "slug": "linkedin-authority-cadence",
      "name": "LinkedIn Authority Cadence",
      "summary": "Drafts partner posts from what the firm actually did this week, in the partner's own voice.",
      "category": "marketing",
      "integrations": [
        "LinkedIn",
        "Google Calendar"
      ],
      "prompt": "Set up a new bot for me that drafts on weekdays. Walk me through connecting LinkedIn and my calendar, let it learn my voice from twenty posts I am happy with, then configure it: pull from what actually happened this week — a filing, a CLE, a hearing, a question a client asked twice, something I read — and draft posts that make a specific point rather than restating that safety matters. Vary the format across short takes, longer explanations, and questions. It publishes nothing; I post everything myself. Never reference a client, a matter, or an identifiable fact pattern without my explicit approval. Ask me for my voice references, my topics, what is permanently off limits, and how often I want drafts, show me the first week's batch, then save it.",
      "never": [],
      "caution": "Client confidentiality survives the matter. Anything drawn from a real case needs informed consent or enough alteration that it is no longer identifiable.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/linkedin-authority-cadence"
    },
    {
      "slug": "referral-relationship-keeper",
      "name": "Referral Relationship Keeper",
      "summary": "Tracks who sends you cases, what happened to them, and who has gone quiet.",
      "category": "referrals",
      "integrations": [
        "Filevine",
        "Gmail",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs monthly. Walk me through connecting my case management system and my email, then configure it: maintain a ledger of every referral source — who referred, what case type, what happened to the matter, what fee was shared and when — and tell me which sources have slowed or stopped, which are sending cases I decline, and which have never received an update on a matter they sent. Draft a personal status update for each active referral source and a reconnection note for the ones that have gone quiet, both specific enough that the recipient knows it was not a blast. Ask me who my sources are, what a healthy cadence looks like, what I can disclose about matter status, and who signs. Show me every draft, run one cycle with me watching, then save it.",
      "never": [],
      "caution": "Fee sharing and referral disclosure rules vary by state and generally require client consent. Status updates to a referring attorney are still subject to confidentiality.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/referral-relationship-keeper"
    },
    {
      "slug": "co-counsel-obligation-tracker",
      "name": "Co-Counsel Obligation Tracker",
      "summary": "Reads your co-counsel agreements and tracks what each side actually owes.",
      "category": "referrals",
      "integrations": [
        "Filevine",
        "Dropbox",
        "Google Drive"
      ],
      "prompt": "Set up a new bot for me I can trigger per co-counsel relationship. Walk me through connecting my document store and my case management system, then configure it: read the co-counsel and fee agreements for a matter or an inventory, extract what each side committed to — work allocation, cost advances, fee split, reporting cadence, settlement authority, notice requirements — into one page per relationship with a citation to the governing paragraph, then track the recurring obligations and tell me when a reporting or notice deadline is coming or has passed. Flag where two agreements on the same inventory contradict each other. Ask me which relationships to cover, where the agreements live, and who to notify, run it on a relationship I know well so I can check the extractions, then save it.",
      "never": [],
      "caution": "Extraction is a reading aid, not an interpretation. Every obligation it reports must be confirmed against the agreement text by an attorney.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/co-counsel-obligation-tracker"
    },
    {
      "slug": "review-request-timing",
      "name": "Review Request Timing",
      "summary": "Asks each client for a review at the one moment they are most likely to leave one.",
      "category": "reputation",
      "integrations": [
        "Filevine",
        "Twilio",
        "Google Business Profile"
      ],
      "prompt": "Set up a new bot for me that runs daily. Walk me through connecting my case management system and my messaging platform, then configure it: identify the clients who just hit a moment worth celebrating — disbursement sent, case resolved, a hard call that went their way — and draft a review request timed to that moment, in the voice of the person who actually worked the file, referencing what specifically happened. Never ask a client who complained, whose matter went badly, or who is inside a dispute, and check for that before drafting. Never offer anything of value in exchange, and never draft the review itself. Track request-to-review conversion by attorney and by moment so I can see which trigger works. Ask me which moments qualify, who signs each message, and who is excluded, show me every draft, run it for a week, then save it.",
      "never": [
        "Write, edit, or suggest review text",
        "Ask a client who complained, whose matter went badly, or who is inside a dispute",
        "Offer anything of value in exchange for a review"
      ],
      "caution": "Offering anything of value for a review violates platform terms and, in many states, bar rules. Do not let the bot write, edit, or suggest review text.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/review-request-timing"
    },
    {
      "slug": "negative-review-first-response",
      "name": "Negative Review First Response",
      "summary": "Drafts a response to a negative review that does not create a confidentiality problem.",
      "category": "reputation",
      "integrations": [
        "Google Business Profile",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that watches my review profiles. Walk me through connecting Google Business Profile and Slack, then configure it: alert me within the hour on any review below my threshold, pull whatever internal context exists on whether this is a client, a former client, an unsigned lead, or someone with no relationship, and draft a response that acknowledges the person, offers a direct line to resolve it offline, and discloses nothing — not whether they were a client, not any fact about a matter, not a correction of their account. Flag reviews that appear fake or targeted separately with the evidence. Nothing posts without my approval. Ask me for my threshold, who is notified, and who has final say, draft responses to three past reviews so I can compare, then save it.",
      "never": [],
      "caution": "Responding to a negative review has ended careers. Confirming that someone was a client is itself a disclosure. When in doubt, the response says less.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/negative-review-first-response"
    },
    {
      "slug": "brand-conquesting-watch",
      "name": "Brand Conquesting Watch",
      "summary": "Tells you when another firm starts bidding on your firm name.",
      "category": "reputation",
      "integrations": [
        "Web Search",
        "ScreenshotOne",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that checks daily. Walk me through connecting web search and Slack, then configure it: search my firm name, my attorneys' names, and my common misspellings across paid and organic results in each of my markets, and alert me when another firm appears in a paid position above my own listing, when a directory or lead broker outranks my site for my own name, or when a new competitor enters the set. Include a screenshot or capture of what the searcher actually sees, name the advertiser, and track how long each incursion persists. Tell me which are worth defending and which are noise. Ask me for my brand terms, attorney names, markets, and alert channel, run one baseline sweep so I can see the current picture, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/brand-conquesting-watch"
    },
    {
      "slug": "trust-account-hygiene",
      "name": "Trust Account Hygiene Check",
      "summary": "Flags the trust accounting patterns that turn into bar complaints.",
      "category": "firm-ops",
      "integrations": [
        "QuickBooks",
        "Xero"
      ],
      "prompt": "Set up a new bot for me that runs monthly, read-only. Walk me through connecting my accounting system, then configure it: review trust activity for the patterns that cause problems — client ledgers with negative balances, funds held past my aging threshold with no disbursement, settlement proceeds sitting undistributed, unreconciled items, transfers between client ledgers, and earned fees not moved out — and produce an exceptions report with the client ledger, the amount, the age, and what to check. It never moves money, never adjusts an entry, and never touches the live books. Ask me for my aging thresholds, my reconciliation schedule, and who receives the report, run it against a closed period I have already reconciled so I can confirm it finds nothing I do not already know about, then save it.",
      "never": [
        "Move money, adjust an entry, or touch the live books",
        "Reconcile — it produces an exceptions report, not a reconciliation",
        "Determine what a jurisdiction's trust rules require"
      ],
      "caution": "Read-only by design. Trust accounting rules are jurisdiction-specific and this is an exceptions report for your bookkeeper and managing partner, not a reconciliation.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/trust-account-hygiene"
    },
    {
      "slug": "case-cost-drift",
      "name": "Case Cost Drift Monitor",
      "summary": "Watches advanced case costs against what the matter is likely worth.",
      "category": "firm-ops",
      "integrations": [
        "Filevine",
        "QuickBooks"
      ],
      "prompt": "Set up a new bot for me that runs monthly. Walk me through connecting my case management system and my accounting system, then configure it: for every open contingency matter, total the costs advanced by category, compare them to the median advanced cost for matters of that type and stage in my own history, and flag the ones running past my threshold with the categories driving it — experts, records, filing, travel, investigation. Separately flag matters where costs are climbing while the file has had no substantive activity in my staleness window, because that is the expensive combination. Ask me for my matter types, cost categories, thresholds, and who reviews, run it against last year so I can see whether it would have caught the ones that hurt, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/case-cost-drift"
    },
    {
      "slug": "vendor-spend-audit",
      "name": "Vendor Spend Audit",
      "summary": "Finds the marketing and service vendors quietly billing you for nothing.",
      "category": "firm-ops",
      "integrations": [
        "QuickBooks",
        "Gmail",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me I can trigger quarterly. Walk me through connecting my accounting system and my email, then configure it: list every recurring vendor charge with the amount, the frequency, the contract term if it can find one, and the last time anyone at the firm actually used or referenced the service. Pay particular attention to lead vendors, directory listings, SEO retainers, software seats, and answering services, and for each one tell me what it produced against what it cost — for lead vendors, cost per signed case, never cost per lead alone. Rank everything by amount at stake and mark the ones with an auto-renewal date coming. It cancels nothing. Ask me which vendors are protected and where the performance data lives, run the first audit with me watching, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/vendor-spend-audit"
    },
    {
      "slug": "case-status-client-update",
      "name": "Case Status Client Update",
      "summary": "Sends every client a real update on a cadence, so they stop calling to ask.",
      "category": "case-ops",
      "integrations": [
        "Filevine",
        "CasePeer",
        "Twilio"
      ],
      "prompt": "Set up a new bot for me that runs weekly. Walk me through connecting my case management system and my messaging platform, then configure it: identify every client who has not received a substantive update inside my cadence, pull what has actually happened on their matter since the last one, and draft an update in plain language that says what happened, what is next, and roughly when — with no legal conclusions, no predictions about outcome or value, and no promises about timing that the file does not support. If nothing has happened, say that honestly rather than manufacturing progress. Route every draft to the responsible attorney for approval before anything sends. Ask me for my cadence by matter type, who approves, and my tone, run it in draft-only mode for two weeks, then save it.",
      "never": [
        "Send a client update without the responsible attorney approving it",
        "State a legal conclusion, predict an outcome, or promise a timeline the file does not support",
        "Manufacture progress when nothing has happened"
      ],
      "caution": "Client communications are the attorney's responsibility and cannot be delegated to an unsupervised tool. Approval before send is the whole point of this one.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/case-status-client-update"
    },
    {
      "slug": "stale-file-sweeper",
      "name": "Stale File Sweeper",
      "summary": "Surfaces the open matters where nothing has happened and nobody has noticed.",
      "category": "case-ops",
      "integrations": [
        "Filevine",
        "Litify",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs every Monday. Walk me through connecting my case management system and Slack, then configure it: find every open matter with no substantive activity inside my staleness window, group them by responsible attorney and by what appears to be blocking them — waiting on records, waiting on the client, waiting on opposing counsel, waiting on us — and post one list per attorney with the single next action each file needs. Track how long files stay on the list week over week and escalate anything that has appeared three times running, because the second appearance is a backlog and the third is a problem. Ask me for my staleness windows by matter type, what counts as substantive activity, and who receives escalations, run it read-only for two weeks so the team can calibrate, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/stale-file-sweeper"
    },
    {
      "slug": "discovery-deadline-brief",
      "name": "Discovery Deadline Brief",
      "summary": "A morning brief of what is due, who owns it, and what is not started.",
      "category": "case-ops",
      "integrations": [
        "Filevine",
        "Google Calendar",
        "Outlook"
      ],
      "prompt": "Set up a new bot for me that runs every weekday at 7am. Walk me through connecting my case management system and my calendar, then configure it: give me one brief covering everything due in the next fourteen days across all matters — responses, disclosures, expert deadlines, hearings, depositions — with the matter, the deadline, the responsible attorney, and whether any work product exists yet. Put the items with a deadline and no started work at the top, because those are the only ones that matter at 7am. Flag any deadline that appears in the case management system but not on the calendar, or vice versa, since the disagreement is the risk. Ask me which matters and deadline types to include and how far ahead to look, run it for tomorrow so I can check it against my own list, then save it.",
      "never": [],
      "caution": "A reporting aid built on your existing docket entries. It does not calculate deadlines and does not replace docketing.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/discovery-deadline-brief"
    },
    {
      "slug": "mdl-docket-watch",
      "name": "MDL Docket Watch",
      "summary": "Watches the dockets in your torts and tells you only what is new.",
      "category": "case-ops",
      "integrations": [
        "PACER",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that checks twice daily. Walk me through connecting PACER or my docket source and Slack, then configure it: watch the MDL and consolidated dockets for the torts I am in, and report only genuinely new entries — case management orders, bellwether scheduling, science day, Daubert rulings, settlement program notices, plaintiff fact sheet deadlines — keeping a state file so nothing is reported twice. For each entry give me the docket number, the date, what it says in plain language, and one line on what it changes for my inventory. Flag anything imposing a deadline on plaintiffs separately and loudly. Ask me which MDLs and dockets to follow and who receives each tier, run one cycle against last week so I can check it against what I already saw, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/mdl-docket-watch"
    },
    {
      "slug": "plaintiff-fact-sheet-chase",
      "name": "Plaintiff Fact Sheet Chase",
      "summary": "Tracks fact sheet completion across an inventory and chases the missing pieces.",
      "category": "mass-tort",
      "integrations": [
        "Filevine",
        "Litify",
        "Twilio"
      ],
      "prompt": "Set up a new bot for me that runs every weekday. Walk me through connecting my case management system and my messaging platform, then configure it: track plaintiff fact sheet status across the inventory by tort — not started, in progress, missing specific sections, missing records, submitted, deficient — with the days remaining until each deadline. Surface the clients blocking completion and draft an outreach for each one naming the specific missing item rather than asking generally for paperwork. Escalate anything inside my danger window to the responsible attorney by name, since a deficiency that ages out is a dismissed case. Ask me for the deadlines by tort, my danger window, my outreach templates, and who approves client contact, show me every draft, run it read-only for a week, then save it.",
      "never": [],
      "caution": "Client outreach requires attorney supervision. Fact sheet content is discovery; nothing about it should be drafted or completed by an unsupervised tool.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/plaintiff-fact-sheet-chase"
    },
    {
      "slug": "campaign-compliance-prescreen",
      "name": "Campaign Compliance Pre-Screen",
      "summary": "Pre-screens ad copy against the advertising rules in every state you run in.",
      "category": "mass-tort",
      "integrations": [
        "Google Drive",
        "Meta Ads Manager"
      ],
      "prompt": "Set up a new bot for me I can trigger on any piece of ad copy. Walk me through connecting my document store, then configure it: check each headline, primary text, landing page, and call to action against the advertising rules for the states I run in, and flag the specific risks — unsubstantiated superlatives, implied guarantees or predictions of outcome, case results without required context or disclaimer, missing responsible-attorney identification, missing office location, terms like specialist or expert where certification is required, testimonials without disclaimers, anything that could read as targeting a person known to need counsel. Return each flag with the rule it implicates, the state, and a compliant rewrite. It approves nothing; it prepares the file for my compliance reviewer. Ask me which states, my disclaimer language, and my reviewer, run it on a live campaign, then save it.",
      "never": [
        "Approve ad copy — it prepares the file for your compliance reviewer",
        "Publish, launch, or edit a live campaign",
        "Substitute for review by a licensed attorney in each state you run in"
      ],
      "caution": "This is a pre-screen that saves your reviewer time. It is not a compliance opinion and does not substitute for review by a licensed attorney in each state.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/campaign-compliance-prescreen"
    },
    {
      "slug": "intake-script-rewriter",
      "name": "Intake Script Rewriter",
      "summary": "Rebuilds your qualification script around the criteria that actually predict a signed case.",
      "category": "intake",
      "integrations": [
        "Filevine",
        "Lead Docket"
      ],
      "prompt": "Set up a new bot for me I can trigger per tort campaign. Walk me through connecting my case management system, then configure it: compare the qualification answers captured at intake against which of those leads ultimately signed and which of the signed cases survived initial review, and tell me which questions actually predict outcome, which are noise, and which disqualifiers are being discovered too late in the process. Rebuild the script around that ordering — hard disqualifiers first, in the caller's language rather than the firm's — and show me the current and proposed scripts side by side with the evidence for each change. Ask me which campaign, what counts as a good outcome, and how many leads are in the sample before it will draw a conclusion, run it on a campaign with real volume, then save it.",
      "never": [],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/intake-script-rewriter"
    },
    {
      "slug": "after-hours-lead-triage",
      "name": "After-Hours Lead Triage",
      "summary": "Handles the nights-and-weekends leads that currently sit until Monday.",
      "category": "intake",
      "integrations": [
        "Lead Docket",
        "Twilio",
        "Slack"
      ],
      "prompt": "Set up a new bot for me that runs outside business hours. Walk me through connecting my lead system and my messaging platform, then configure it: when a lead arrives after hours, send an immediate acknowledgment that sets a real expectation about when a person will call, capture the few facts that determine urgency — case type, date of incident, whether anyone is currently hospitalized, whether another firm is involved — and page the on-call intake specialist for anything meeting my urgent criteria rather than waiting for morning. It gives no legal information, makes no assessment of the claim, states clearly that it is not an attorney and that no relationship is formed, and hands off to a human on any question outside its script. Ask me for my urgent criteria, on-call rotation, and disclaimer language, run it in observe mode for a week, then save it.",
      "never": [
        "Give legal information or assess the claim",
        "Continue past its script — anything outside it hands off to a human",
        "Imply that an attorney-client relationship has formed"
      ],
      "caution": "An automated first responder to a prospective client is regulated communication. The no-attorney, no-relationship disclaimer and the human handoff are load-bearing, not decoration.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/after-hours-lead-triage"
    },
    {
      "slug": "demand-package-assembler",
      "name": "Demand Package Assembler",
      "summary": "Assembles the specials, records, and wage loss into a demand package draft with a citation on every figure.",
      "category": "work-product",
      "integrations": [
        "Filevine",
        "Litify",
        "Google Drive",
        "Dropbox"
      ],
      "prompt": "Set up a new bot for me I can trigger on a matter that is ready for demand. Walk me through connecting my case management system and my document store, then configure it: assemble the demand package components from the file — the treatment summary, the itemized medical specials by provider with a citation to the bill, the wage loss with a citation to the employer documentation, the property damage, and the outstanding balances — and produce a package draft with an exhibit index. Every number must cite the document and page it came from, and any figure it cannot source goes in a separate open-items list rather than into the total. It never values the case, never proposes a demand number, never characterizes liability or causation, and never drafts the argument. Ask me which matter, my package format, and which components apply, run it on a demand I already sent so I can check every citation against the source, then save it.",
      "never": [
        "Value the claim or propose a demand number",
        "Characterize liability, causation, or the standard of care",
        "Include a figure it cannot cite — unsourceable numbers go to an open-items list, not the total"
      ],
      "caution": "Work product and protected health information. This assembles and cites; it does not value the claim or make the argument. Every figure must be verified against the source document by the responsible attorney before the package leaves the firm.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/demand-package-assembler"
    },
    {
      "slug": "demand-narrative-first-draft",
      "name": "Demand Letter First Draft",
      "summary": "Turns a verified chronology into a narrative first draft the attorney then argues from.",
      "category": "work-product",
      "integrations": [
        "Google Drive",
        "Dropbox",
        "Filevine"
      ],
      "prompt": "Set up a new bot for me I can trigger once a chronology is verified. Walk me through connecting my document store, then configure it: take the approved chronology and the exhibit index and draft the narrative sections of a demand letter — how the incident occurred, the course of treatment, the impact on work and daily life — in my firm's voice, with an exhibit citation on every factual assertion. It writes narrative only. It does not draft the liability argument, does not characterize the standard of care, does not state or imply a settlement value, and does not include any fact that is not in the chronology I approved. Anything it believes is missing goes in a questions list at the end instead of being inferred. Ask me for my voice references, my letter structure, and which sections are attorney-only, draft one from a matter I know cold, then save it.",
      "never": [],
      "caution": "A first draft is not a letter. The argument, the valuation, and every factual assertion are the attorney's, and the draft is worthless unless someone checks it against the record line by line.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/demand-narrative-first-draft"
    },
    {
      "slug": "production-issue-coder",
      "name": "Production Issue Coder",
      "summary": "Codes produced documents for responsiveness and issue tags, and never touches privilege.",
      "category": "work-product",
      "integrations": [
        "Google Drive",
        "Dropbox",
        "Box",
        "Relativity"
      ],
      "prompt": "Set up a new bot for me I can trigger on a document production. Walk me through connecting my document store, then configure it: read the produced set and code each document for the issue tags I define, note the date, author, recipients, and document type, and produce a review sheet with a one-line summary and a confidence level per document. Route everything it codes as low confidence, and everything mentioning counsel, legal advice, or anything that could bear on privilege, into a separate attorney-review queue without coding it. It never makes a privilege determination, never marks anything as non-responsive without attorney sign-off, and never produces or withholds anything. Ask me for my issue tags, my confidence threshold, and who owns the review queue, run it against a set already reviewed so I can measure it against the human coding, then save it.",
      "never": [
        "Make a privilege determination, or code a privilege-adjacent document at all",
        "Mark anything non-responsive without attorney sign-off",
        "Produce, withhold, or transmit a single document"
      ],
      "caution": "Confidentiality is the whole issue here. Confirm what your AI vendor does with uploaded documents, whether any protective order in the matter permits it, and whether client consent is required. Privilege calls stay with an attorney — that is not a setting to change.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/production-issue-coder"
    },
    {
      "slug": "privilege-log-prep",
      "name": "Privilege Log Prep",
      "summary": "Prepares log entries from documents an attorney has already marked privileged.",
      "category": "work-product",
      "integrations": [
        "Relativity",
        "Google Drive",
        "Box"
      ],
      "prompt": "Set up a new bot for me I can trigger after privilege review is complete. Walk me through connecting my document store, then configure it: for documents an attorney has already designated as privileged, draft the log entries in my required format — date, author, recipients and their roles, document type, and a description that conveys enough to assess the claim without disclosing the privileged content itself. Flag entries where the participant roles are unclear, where a third party appears in the chain, or where the basis for the designation is not evident from the metadata, because those are the entries that get challenged. It logs only what an attorney designated and never designates anything itself. Ask me for my log format, my jurisdiction's requirements, and who reviews, run it on a log I already produced so I can compare entry by entry, then save it.",
      "never": [],
      "caution": "Log entries that say too much waive the privilege and entries that say too little draw a motion. Every entry is reviewed by the attorney who made the designation before the log is served.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/privilege-log-prep"
    },
    {
      "slug": "deposition-prep-packet",
      "name": "Deposition Prep Packet",
      "summary": "Pulls the exhibits, prior statements, and contradictions before a deposition.",
      "category": "work-product",
      "integrations": [
        "Filevine",
        "Google Drive",
        "Dropbox"
      ],
      "prompt": "Set up a new bot for me I can trigger before a deposition. Walk me through connecting my document store and my case management system, then configure it: assemble a prep packet for the named witness — every prior statement they have made in the record with a citation, every document they authored or received, the contradictions between their statements and the rest of the record laid out side by side with citations to both, and the topics where the record is silent. Organize it by topic rather than chronologically, since that is how the examination runs. It drafts no questions, forms no opinions about credibility, and asserts no contradiction it cannot cite on both sides. Ask me which witness and matter, my packet format, and which sources to include, run it on a deposition already taken so I can see what it caught and what it missed, then save it.",
      "never": [],
      "caution": "Work product. Every claimed contradiction must be checked against both cited sources before anyone relies on it in a deposition.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/deposition-prep-packet"
    },
    {
      "slug": "discovery-response-assembler",
      "name": "Discovery Response Assembler",
      "summary": "Maps each request to the documents and prior responses that already answer it.",
      "category": "work-product",
      "integrations": [
        "Filevine",
        "Google Drive",
        "Box"
      ],
      "prompt": "Set up a new bot for me I can trigger on a set of discovery requests. Walk me through connecting my document store and my case management system, then configure it: parse the requests, and for each one identify the documents in the file that appear responsive with a citation, any prior response in this matter or a related one that covered the same ground, and whether the file appears to contain nothing responsive. Produce a working grid of request, candidate documents, prior language, and gaps. It drafts no objections, asserts no privilege, makes no responsiveness determination that binds anyone, and serves nothing. The gaps column is the point — it tells the attorney where the work actually is. Ask me for the matter, where prior responses live, and my format, run it against a set I have already responded to, then save it.",
      "never": [],
      "caution": "Objections, privilege assertions, and the responses themselves are the attorney's work and cannot be delegated. This is a locating tool.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/discovery-response-assembler"
    },
    {
      "slug": "expert-report-record-check",
      "name": "Expert Report Record Check",
      "summary": "Checks an expert report against the record and lists what is unsupported.",
      "category": "work-product",
      "integrations": [
        "Google Drive",
        "Dropbox",
        "Filevine"
      ],
      "prompt": "Set up a new bot for me I can trigger on an expert report. Walk me through connecting my document store, then configure it: read the report and for each factual assertion it makes about the record — dates, treatment, mechanism, employment, prior conditions — locate the supporting document and cite it, or flag the assertion as unsupported by the materials provided. Separately list the materials the report says it relied on that are not in the production, and the record materials that contradict an assertion. It evaluates no methodology, offers no opinion on admissibility or qualification, and draws no conclusion about the expert. It checks facts against paper. Ask me which report and which record set, my output format, and who reviews, run it against a report we have already worked through, then save it.",
      "never": [],
      "caution": "A fact-checking aid, not a Daubert analysis. Sharing an opposing expert report with an AI vendor may be restricted by a protective order — check before you connect anything.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": false,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/expert-report-record-check"
    },
    {
      "slug": "settlement-comparables-internal",
      "name": "Internal Settlement Comparables",
      "summary": "Builds comparables from your own closed files, not from public verdict reports.",
      "category": "work-product",
      "integrations": [
        "Filevine",
        "Litify",
        "CasePeer"
      ],
      "prompt": "Set up a new bot for me I can trigger on a matter approaching resolution. Walk me through connecting my case management system, then configure it: find my firm's own closed matters that resemble this one on the dimensions I define — injury type, treatment intensity, venue, liability posture, policy limits, plaintiff age and work status — and present them as a table with the resolution amount, the stage at resolution, the time to resolution, and how each differs from the current matter. Use only my own closed files, never public verdict reports, because reported verdicts are a biased sample. It states no value or range for the current matter and makes no recommendation; it shows the attorney what the firm's own history looks like. Ask me for my comparison dimensions, my sample floor before it will show anything, and who may run it, run it on a matter already resolved so I can see whether the comparables it picked were the ones that mattered, then save it.",
      "never": [],
      "caution": "Case valuation is the attorney's judgment and the client's decision. This shows history and nothing more — no range, no recommendation, and never shown to a client as an expectation.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/settlement-comparables-internal"
    },
    {
      "slug": "lead-vendor-scorecard",
      "name": "Lead Vendor Scorecard",
      "summary": "Ranks every lead vendor by cost per resolved case, not cost per lead — by tort, by cohort, with the adverse patterns broken out.",
      "category": "agency-oversight",
      "integrations": [
        "Filevine",
        "Litify",
        "Lead Docket",
        "QuickBooks",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs monthly, per tort campaign. Walk me through connecting my case management system, my accounting system, and wherever lead source and purchase invoices are recorded, then configure it: for every lead vendor I buy from, build a scorecard by tort and by purchase cohort covering leads delivered, contact rate, retainer sent, signed, still open, withdrawn or dropped after signing, filed, and resolved — then compute cost per lead, cost per signed case, and cost per resolved case, with the as-of date and the cohort window stated on the face of every figure. Never blend torts or cohorts into a single average: a vendor I started buying from ninety days ago cannot be compared on settlement rate to one I have bought from for three years, and where a cohort is too immature to judge, say so plainly and report only the metrics that have matured. Rank by cost per resolved case where the data supports it and by cost per signed case where it does not, and show me the gap between a vendor's rank on cost per lead and its rank on cost per resolved case, because that gap is the whole point. Report every adverse pattern as an observed rate in my own file data — duplicate claimants, invalid or disconnected contact information, leads with no treatment, leads already represented, leads outside the campaign criteria, leads outside the venue — and never characterize a vendor as fraudulent, deceptive, or negligent, and never state a conclusion about their conduct. Ask me which vendors and torts to include, where lead source is recorded, my cohort windows, the minimum sample before it will rank anything, and what my agreements say about credits and return windows, run it against a vendor relationship I have already formed a view about so I can check it against what I know, then save it.",
      "never": [
        "Characterize a vendor as fraudulent, deceptive, or negligent — it reports observed rates in your own data and nothing more",
        "Rank vendors on settlement rate across cohorts of different maturity",
        "Blend torts or purchase vintages into a single average",
        "Contact a vendor, pause a buy, or terminate a relationship"
      ],
      "caution": "Vendor performance findings can end a relationship or start a lawsuit. This reports observed rates in your own data and stops there — it does not conclude that any vendor acted improperly. Have counsel review anything you intend to put in writing to a vendor, and check your agreement's credit and return terms before asserting a claim.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/lead-vendor-scorecard"
    },
    {
      "slug": "vendor-fallout-analysis",
      "name": "Vendor Fall-Out Analysis",
      "summary": "Traces where cases from each vendor die after signing, what the file says the reason was, and how late you caught it.",
      "category": "agency-oversight",
      "integrations": [
        "Filevine",
        "Litify",
        "CasePeer",
        "QuickBooks"
      ],
      "prompt": "Set up a new bot for me that runs monthly per tort. Walk me through connecting my case management system and wherever lead source is recorded, then configure it: for the signed cases sourced from each vendor, trace what happened after the retainer — cleared review and proceeding, failed medical records review, no qualifying injury, no documented treatment, exposure or product not confirmed, statute problem discovered late, prior representation discovered late, client unreachable after signing, client withdrew, firm declined to file — and report the fall-out rate by stage and by reason for each vendor, comparing only within the same tort and the same cohort vintage. For every fall-out, record how far into the file the disqualifier was discovered and what would have surfaced it at intake, because a disqualifier found in month four is a screening failure on my side as much as a lead quality problem on theirs, and I want those two separated. Give me the cost of the fall-out by vendor: what I advanced on cases that never survived. Report reasons exactly as they are recorded in my file and never infer a reason that is not documented. Ask me which vendors and torts to include, my stage definitions, what counts as fall-out versus a normal decline, my minimum sample, and my cohort windows, run it on a tort I have already worked through so I can check its reasons against my own, then save it.",
      "never": [
        "Attribute a fall-out to vendor misconduct — it reports the reason recorded in your own file",
        "Infer a reason that is not documented in the matter",
        "Compare vendors across different torts or cohort vintages",
        "Close, reclassify, or alter any matter"
      ],
      "caution": "Fall-out has two authors and this spec is built to separate them. Before you take a number to a vendor, look at how late your own process caught the disqualifier — the answer is frequently a screening fix, not a vendor problem.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/vendor-fallout-analysis"
    },
    {
      "slug": "lead-provenance-duplicate-audit",
      "name": "Lead Provenance & Duplicate Audit",
      "summary": "Finds the same claimant sold to you twice, and the leads whose consent documentation would not survive a look.",
      "category": "agency-oversight",
      "integrations": [
        "Lead Docket",
        "Filevine",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me I can trigger quarterly, or after any large purchase. Walk me through connecting my lead system and my case management system, then configure it: across every lead purchased in the window, identify claimants appearing more than once — the same person delivered twice by one vendor, or the same person delivered by two different vendors — matching on name, phone, email, address, and date of incident, with fuzzy matching and a stated confidence level on every match so I can review the uncertain ones myself. Separately inventory provenance and consent: which leads arrived with a documented consent record, what that record actually says, whether the originating site and the disclosure language are identified, whether a timestamp and IP or call recording exists, and which leads arrived with no provenance at all. Flag phone numbers that are invalid, disconnected, or show as reassigned. It makes no determination about whether any record satisfies TCPA or any state statute, and draws no conclusion about any vendor's practices — it reports what documentation exists and what is missing, by vendor, as counts and rates. Ask me which vendors and windows to cover, my matching thresholds, where consent records are stored, and who reviews the uncertain matches, run it on one past purchase batch so I can check its matches by hand, then save it.",
      "never": [
        "Determine whether a consent record satisfies TCPA or any state statute",
        "Conclude that a vendor knowingly sold a duplicate",
        "Contact any claimant, or merge, delete, or alter any lead record",
        "Treat a fuzzy match as confirmed — every uncertain match goes to a human"
      ],
      "caution": "Whether a consent record satisfies TCPA or your state's requirements is a legal determination and belongs with counsel. This inventories what documentation exists and what is missing. Duplicate claimants also raise conflicts and prior-representation questions that need an attorney, not a spreadsheet.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/lead-provenance-duplicate-audit"
    },
    {
      "slug": "cms-field-map",
      "name": "Case Management Field Map",
      "summary": "Inventories what your system actually stores — real API names, fill rates, and the three places the same value lives.",
      "category": "data-prep",
      "integrations": [
        "Filevine",
        "Litify",
        "CasePeer",
        "SmartAdvocate"
      ],
      "prompt": "Set up a new bot for me I can trigger once per system, then re-run after any configuration change. Walk me through connecting my case management system, then configure it: inventory what the system actually stores rather than what the documentation says it stores — every project or record type, every phase and stage with its real internal name, and every standard and custom field with its API name, display label, data type, required flag, and picklist values. For each field, sample real records and report the fill rate, the distinct value count, and the most common values, because a field that exists and is ninety percent empty is not a field I can build on. Flag every place the same concept lives in more than one field — date of incident in three custom fields across two project types, a tort recorded in both a picklist and a free-text note — and tell me from the data which one is actually maintained. Produce a mapping document with my plain-language name for each concept on one side and the exact API path on the other, plus a separate list of the concepts I need that have nowhere to live at all. Ask me which system, which record types are in scope, and which concepts I need mapped, run it and show me the fill rates before I trust any of it, then save it.",
      "never": [
        "Write to, create, or modify any field, record, or configuration",
        "Report a field as usable without its fill rate and distinct value count",
        "Guess an API name it could not confirm against the live system"
      ],
      "caution": "A field inventory samples real records, which means client data leaves the system. Confirm what your AI vendor retains before connecting a case management system, and use a sandbox or a de-identified sample where one exists.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/cms-field-map"
    },
    {
      "slug": "export-cleanup-pipeline",
      "name": "Export Cleanup Pipeline",
      "summary": "Turns a raw export into a validated dataset, with every row it could not clean listed rather than silently dropped.",
      "category": "data-prep",
      "integrations": [
        "Filevine",
        "Litify",
        "Google Sheets",
        "Google Drive"
      ],
      "prompt": "Set up a new bot for me I can trigger on any raw export. Walk me through connecting my document store and spreadsheet, then configure it: take the export and produce a clean dataset plus a data-quality report. Normalize dates to a single format and flag any that are impossible, out of range, or ambiguous between day-first and month-first; standardize picklist and free-text variants to the canonical values I define; split or join name and address fields consistently; normalize phone numbers and mark the invalid ones; and deduplicate on the keys I specify with a stated confidence level on every proposed merge. Never silently drop, merge, or auto-correct a row — everything it cannot clean goes to an exceptions file with the reason and the original value preserved, and the counts have to reconcile: rows in, rows clean, rows excepted, and they must add up on the face of the report. Show me the fill rate for every column before and after. Ask me for my canonical values, my dedupe keys and confidence threshold, my valid date ranges, and which columns are required versus optional, run it against an export I have already cleaned by hand so I can diff its output against mine, then save it.",
      "never": [
        "Silently drop, merge, or auto-correct a row — anything it cannot clean is listed with its reason and original value",
        "Auto-merge a duplicate below your stated confidence threshold",
        "Write back to the source system",
        "Produce a report whose row counts do not reconcile"
      ],
      "caution": "Exports of matter data carry client information and often protected health information. Handle the cleaned file and the exceptions file with the same care as the source, and confirm your vendor's retention terms before uploading either.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/export-cleanup-pipeline"
    },
    {
      "slug": "spec-readiness-check",
      "name": "Spec Readiness Check",
      "summary": "Before you run any spec in this directory, tells you whether your data supports it — and what to fix first.",
      "category": "data-prep",
      "integrations": [
        "Filevine",
        "Litify",
        "CasePeer",
        "Lead Docket"
      ],
      "prompt": "Set up a new bot for me I can trigger against any spec from this directory. Walk me through connecting my case management system, then configure it: read the spec I point it at, extract every field and data condition it depends on — lead source, incident date, jurisdiction, matter type, cost categories, activity timestamps, disposition reasons, whatever the spec names — and check each one against my live system: does a field exist for it, what is its fill rate, how consistent are its values, and how far back does usable history run. Return a verdict in three buckets: ready to run; will run but the output will be unreliable, and here is exactly why; and cannot run until this is fixed. Give the specific remediation for every gap and a rough sense of the effort. Where a spec needs history to mean anything — anything comparing cohorts, trailing medians, or year-over-year — tell me whether I have accumulated enough of it yet, because a correct spec run against four weeks of data produces a confident wrong answer. Never report a spec as ready on the basis that a field exists; existence is not fill rate. Ask me which spec, which system, and my minimum acceptable fill rate, run it against a spec I have already tried so I can compare its verdict to what actually happened, then save it.",
      "never": [
        "Report a spec as ready because a field exists — existence is not fill rate",
        "Modify any field, record, or configuration",
        "Judge whether a spec is a good idea for your firm; it judges only whether your data supports it"
      ],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/spec-readiness-check"
    },
    {
      "slug": "agency-reporting-reconciliation",
      "name": "Agency Reporting Reconciliation",
      "summary": "Reconciles what your agency reports against what your case management system actually recorded.",
      "category": "agency-oversight",
      "integrations": [
        "Filevine",
        "Lead Docket",
        "Meta Ads Manager",
        "Google Ads",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs monthly, per agency and per channel. Walk me through connecting my case management system, my ad platforms, and wherever my agency reports land, then configure it: for each reporting period, put the agency's numbers next to my own system's numbers side by side — leads reported against leads recorded, by source and by month — and quantify every gap as both a percentage and a dollar figure at my cost per lead. Then do the part that matters: explain the gap rather than just showing it. Test the usual causes in order — different deduplication rules, a different attribution window, a different definition of what counts as a lead, form fills counted against qualified calls, lag between the platform recording a lead and my system receiving it, and leads that arrived but were never entered on my side. State which cause the data supports and which it rules out. Where my own intake failed to record something, say so plainly, because that is the most common answer and the one nobody checks first. Never characterize a discrepancy as inflation, misreporting, or bad faith — report the delta, the likely mechanism, and what would confirm it. Ask me which agencies and channels, where reports are stored, my attribution windows, and my lead definitions, run it on a month I have already argued about so I can compare its explanation to what we concluded, then save it.",
      "never": [
        "Characterize a discrepancy as inflation, misreporting, or bad faith — it reports the delta and the likely mechanism",
        "Report a gap without testing whether your own intake failed to record the lead",
        "Contact an agency, withhold payment, or terminate anything"
      ],
      "caution": "Reporting gaps are usually definitional, not dishonest. Establish the mechanism before you take a number to an agency, and have counsel review anything you put in writing that alleges a breach.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/agency-reporting-reconciliation"
    },
    {
      "slug": "marketing-asset-ownership-audit",
      "name": "Marketing Asset Ownership Audit",
      "summary": "Establishes which of your marketing accounts you actually own, and which your agency would keep if you left tomorrow.",
      "category": "agency-oversight",
      "integrations": [
        "Meta Ads Manager",
        "Google Ads",
        "Google Analytics 4",
        "Google Search Console",
        "Google Business Profile",
        "CallRail"
      ],
      "prompt": "Set up a new bot for me I can trigger once, then re-run twice a year and before any agency change. Walk me through connecting my ad platforms, analytics, and Google Business Profile, then configure it: build an ownership and access register covering every marketing asset my firm depends on — ad accounts and the Business Manager or MCC that owns them, pixels and conversion tags, the analytics property, Search Console, Google Business Profile ownership and its primary owner, the domain registrar and DNS, call tracking numbers and their porting status, landing page hosting, the website CMS, review platform logins, and the creative and content produced under the engagement. For each one record who is the owner of record, who holds admin, what my access level actually is, and the single question that matters: if this relationship ended on Friday, do I keep it, and what would it take to get it back. Flag every asset where an agency or an individual outside my firm is the owner of record rather than an assigned user, and every call tracking number that cannot be ported. It changes no permission and removes no one's access. Ask me which agencies and platforms are in scope and who at my firm should hold owner, run it once and show me the register before I act on any of it, then save it.",
      "never": [
        "Change, revoke, or grant any permission or access",
        "Contact an agency or platform support on your behalf",
        "Interpret what your agreement says about who owns an asset — it records who holds it today"
      ],
      "caution": "Removing an agency's access mid-engagement can breach your agreement and can orphan a live campaign or a verified profile. Establish the picture first, read the contract, and change nothing until counsel and whoever runs the account have both looked at it.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/marketing-asset-ownership-audit"
    },
    {
      "slug": "seo-retainer-deliverable-check",
      "name": "SEO Retainer Deliverable Check",
      "summary": "Checks what the retainer promised against what actually shipped, and whether the shipped work is live and indexed.",
      "category": "agency-oversight",
      "integrations": [
        "Google Search Console",
        "Ahrefs",
        "Google Drive",
        "DataForSEO"
      ],
      "prompt": "Set up a new bot for me that runs monthly per SEO engagement. Walk me through connecting my site, Google Search Console, and wherever my agency reports and scope documents are stored, then configure it: extract what the retainer or scope actually commits to each month — pages published, content refreshed, links acquired, technical fixes, local citations, reporting cadence — then verify each claimed deliverable against live evidence rather than against the report. For a published page, confirm it exists at a real URL, is indexable, is internally linked from somewhere other than the sitemap, and has begun to accumulate impressions. For an acquired link, confirm it exists on the live page, whether it is followed, and whether the linking page is itself indexed. For a technical fix, confirm the condition is actually resolved on the live site. Produce a table of committed, claimed, verified, and unverified, with the evidence for each, and total the unverified against the monthly fee. Report only what it can check and mark anything it cannot verify as unverified rather than failed. Ask me where the scope document lives, which deliverables to track, and my reporting period, run it on a past month so I can check its verdicts, then save it.",
      "never": [
        "Mark a deliverable as failed when it merely could not be verified",
        "Judge the quality or strategic value of the work — it checks existence and status only",
        "Contact the agency or the linking sites"
      ],
      "caution": "Unverified is not the same as undelivered. Some legitimate work leaves no public trace, and some deliverables take months to show impressions. Use this to open a conversation, not to close one.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/seo-retainer-deliverable-check"
    },
    {
      "slug": "gbp-management-audit",
      "name": "GBP Management Audit",
      "summary": "Tells you whether whoever manages your Google Business Profile is actually doing anything measurable.",
      "category": "agency-oversight",
      "integrations": [
        "Google Business Profile",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs monthly, per managed location. Walk me through connecting Google Business Profile, then configure it: measure what has actually happened on the profile over the period rather than what a report says happened — posts published and their cadence, photos added with their upload dates and running total, reviews received, the share of reviews that got a response and the median time to respond, questions answered, edits to categories, services, hours, and description, and any period where the profile went untouched. Compare the current state against the factors that carry weight in map pack placement — primary category discipline, photo volume and recency, review response rate, service and hours completeness, and whether the profile points at a genuine location page rather than the homepage — and score each. Separate what management did from what happened on its own, since reviews arriving is not the same as reviews being worked. Give me an activity picture per month so a quiet quarter is visible on its face. Ask me which locations, which manager is responsible for each, and my expected cadence, run it against a location I watch closely so I can check it, then save it.",
      "never": [
        "Post, reply, or change anything on the profile",
        "Attribute a ranking change to management activity — it reports activity and placement separately",
        "Judge a manager on a single month"
      ],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "PlatinumProfile.ai",
        "url": "https://platinumprofile.ai"
      },
      "url": "https://plaintiffbots.com/bots/gbp-management-audit"
    },
    {
      "slug": "aeo-vendor-effectiveness-check",
      "name": "AEO Vendor Effectiveness Check",
      "summary": "Tests whether your AI visibility vendor is actually moving citations, or whether the market moved without them.",
      "category": "agency-oversight",
      "integrations": [
        "Web Search",
        "Google Sheets"
      ],
      "prompt": "Set up a new bot for me that runs monthly per AEO or AI visibility engagement. Walk me through connecting web search and a spreadsheet, then configure it: run a fixed question set across the assistants my clients actually use and record whether my firm is named, in what position, what it is credited with, and which sources the answer cites — then compare against the baseline from when the engagement started. Hold the question set constant, because a vendor changing the questions is the easiest way to manufacture improvement, and flag it if the set I am given differs from the baseline set. Separate three things that get conflated: citations my vendor placed, citations that appeared without them, and movement explained by the assistant changing its own behavior across the whole market. Test that third one by tracking a control set of competitor firms the vendor is not working for; if everyone rose, the vendor did not cause it. Report the change in share of mentions, the specific sources gained and lost, and what remains unattributed. Ask me for my baseline date, my question set, my markets, and my control competitors, run one cycle against a period I already have data for, then save it.",
      "never": [
        "Change the question set between periods, or accept a changed set without flagging it",
        "Credit a vendor for movement the control set also shows",
        "Report a share change without stating the baseline date"
      ],
      "caution": null,
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/aeo-vendor-effectiveness-check"
    },
    {
      "slug": "agency-contract-terms-map",
      "name": "Agency Contract Terms Map",
      "summary": "Pulls the notice periods, renewal dates, ownership clauses, and exit terms out of every marketing agreement you have signed.",
      "category": "agency-oversight",
      "integrations": [
        "Google Drive",
        "Dropbox",
        "Box"
      ],
      "prompt": "Set up a new bot for me I can trigger across my marketing agreements, then re-run quarterly. Walk me through connecting my document store, then configure it: read every agency, vendor, and marketing services agreement and extract the terms that decide what happens when I want to leave — initial term and end date, auto-renewal and the exact date notice must be given by, notice period and required delivery method, termination for convenience and for cause, minimum spend or minimum term commitments, fee escalators and their trigger dates, who owns the ad accounts, creative, content, call tracking numbers, and data, what happens to those assets on termination, exclusivity or non-solicit language, and any clause conditioning payment or asset transfer on something. Cite the governing paragraph for every extracted term. Build a calendar of every notice deadline and renewal date across all agreements so none of them lapses quietly, and flag where two agreements contradict each other or where a term I asked about is simply absent. It reads and locates; it does not interpret what a clause means or advise me what to do. Ask me where agreements live, which relationships to include, and who receives the deadline calendar, run it on an agreement I know well so I can check every citation, then save it.",
      "never": [
        "Interpret what a clause means or advise you what to do about it",
        "Report a term without a citation to the governing paragraph",
        "Send notice, or contact any counterparty"
      ],
      "caution": "Extraction is a reading aid, not an interpretation. Every term it reports must be confirmed against the agreement text, and what any clause actually means is a question for counsel — particularly ownership, exclusivity, and anything conditioning asset transfer on payment.",
      "approval_gate": "A named human approves before anything sends, files, or publishes.",
      "featured": true,
      "verified_at": "2026-08-19",
      "attribution": {
        "name": "Jacob Malherbe",
        "handle": "@jacobmalherbe",
        "org": "Mass Tort Ad Agency",
        "url": "https://masstortadagency.com"
      },
      "url": "https://plaintiffbots.com/bots/agency-contract-terms-map"
    }
  ]
}