{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"npm-contractspec-lib.support-bot","slug":"contractspec-lib.support-bot","name":"@contractspec/lib.support-bot","type":"framework","url":"https://contractspec.io","page_url":"https://unfragile.ai/contractspec-lib.support-bot","categories":["automation","rag-knowledge"],"tags":["contractspec","support","chatbot","ai","rag","typescript"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"npm-contractspec-lib.support-bot__cap_0","uri":"capability://memory.knowledge.rag.powered.ticket.context.retrieval","name":"rag-powered ticket context retrieval","description":"Retrieves relevant support documentation and historical ticket data using semantic similarity search over embedded knowledge bases. The system converts incoming support queries into vector embeddings, searches against a pre-indexed corpus of FAQs, documentation, and past ticket resolutions, and ranks results by relevance score to inject contextual information into the LLM's response generation. This enables the bot to ground answers in organizational knowledge without requiring full context in the prompt.","intents":["I want my support bot to answer questions based on our internal documentation and past tickets","I need the bot to cite specific knowledge sources when responding to customer inquiries","I want to reduce hallucinations by grounding bot responses in verified company knowledge"],"best_for":["support teams managing large knowledge bases (100+ documents)","organizations with repetitive support queries that benefit from historical context","teams wanting to reduce LLM hallucination through grounded retrieval"],"limitations":["Retrieval quality depends on embedding model quality and knowledge base organization — poor documentation structure degrades performance","Semantic search may miss exact keyword matches if query phrasing differs significantly from indexed content","No built-in automatic knowledge base updates — requires manual indexing pipeline for new documentation","Vector similarity search adds 100-500ms latency per query depending on corpus size"],"requires":["Vector database or embedding storage (e.g., Pinecone, Weaviate, or local vector store)","Pre-indexed knowledge base with embeddings generated","Embedding model API access (OpenAI, Hugging Face, or local model)","Node.js 16+ for runtime"],"input_types":["text (customer support queries)","structured metadata (ticket tags, categories)","document collections (markdown, PDF, HTML)"],"output_types":["ranked document references with relevance scores","augmented context for LLM prompt injection","citation metadata (source document, section, confidence)"],"categories":["memory-knowledge","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_1","uri":"capability://automation.workflow.multi.turn.conversational.ticket.management","name":"multi-turn conversational ticket management","description":"Maintains conversation state across multiple turns, automatically extracting and updating ticket metadata (priority, category, customer intent) from dialogue context. The system uses the LLM to parse natural language interactions, identify when a new ticket should be created or an existing one updated, and manages the state machine transitions (open → in-progress → resolved) based on conversation flow. This enables seamless ticket lifecycle management without explicit user commands.","intents":["I want the bot to automatically create and update support tickets from customer conversations","I need the bot to track conversation context and ticket status across multiple message exchanges","I want to extract structured ticket data (priority, category, customer name) from unstructured chat"],"best_for":["support teams automating ticket intake and triage","organizations wanting to reduce manual data entry in ticket systems","teams using conversational interfaces as the primary support channel"],"limitations":["LLM-based extraction can misclassify priority or category if customer intent is ambiguous — requires validation rules","State machine transitions rely on LLM interpretation of conversation intent, which may fail for edge cases or sarcasm","No built-in conflict resolution if multiple state transitions are valid in a single turn","Requires integration with external ticket system (Jira, Zendesk, etc.) — no native persistence"],"requires":["LLM API access (OpenAI, Anthropic, or compatible provider)","Ticket system API integration (Jira, Zendesk, GitHub Issues, or custom)","Session/conversation state storage (Redis, database, or in-memory for single-instance)","TypeScript 4.5+ and Node.js 16+"],"input_types":["text (customer messages)","conversation history (multi-turn dialogue)","ticket metadata schema (priority levels, categories)"],"output_types":["structured ticket objects (title, description, priority, category, assignee)","state transition events (created, updated, resolved)","conversation summaries for ticket notes"],"categories":["automation-workflow","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_10","uri":"capability://data.processing.analysis.ticket.analytics.and.reporting.dashboard","name":"ticket analytics and reporting dashboard","description":"Aggregates ticket data to generate analytics and reports on support performance, including metrics like resolution time, customer satisfaction, common issues, and bot accuracy. The system tracks ticket lifecycle events, computes derived metrics (MTTR, first-response time, resolution rate), and exposes data through dashboards or API endpoints. This enables data-driven decisions about support operations and bot improvements.","intents":["I want to track how long it takes to resolve support tickets and identify bottlenecks","I need to measure bot accuracy and identify where it's failing customers","I want to identify the most common support issues so we can improve the product"],"best_for":["support operations teams tracking performance metrics","organizations wanting data-driven insights into support quality","teams measuring bot effectiveness and ROI"],"limitations":["Metrics quality depends on accurate ticket data — garbage in, garbage out","Real-time analytics require continuous data processing — batch analytics have latency","No built-in anomaly detection — requires custom logic to identify unusual patterns","Privacy considerations if tracking customer satisfaction or sentiment at individual level"],"requires":["Ticket database with complete event history (creation, updates, resolution)","Analytics engine (SQL, data warehouse, or time-series database)","Dashboard tool (Grafana, Tableau, custom React, etc.)","Metric definitions and calculation logic"],"input_types":["ticket events (created, updated, resolved, escalated)","ticket metadata (category, priority, customer, assignee)","time range for analysis"],"output_types":["aggregated metrics (MTTR, resolution rate, satisfaction score)","trend data (metrics over time)","issue frequency distribution","bot accuracy metrics (if feedback available)"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_11","uri":"capability://tool.use.integration.integration.with.external.ticket.systems.jira.zendesk.github.issues","name":"integration with external ticket systems (jira, zendesk, github issues)","description":"Provides bidirectional sync with external ticket management systems, automatically creating/updating tickets in Jira, Zendesk, or GitHub Issues based on bot conversations, and pulling ticket status back into the bot for context. The system handles API authentication, field mapping between bot schema and external system schema, conflict resolution for concurrent updates, and maintains sync state. This enables the bot to work within existing support infrastructure.","intents":["I want my support bot to create tickets in our existing Jira/Zendesk system automatically","I need the bot to check ticket status in our external system and report it to customers","I want to avoid duplicate ticket creation across the bot and our support system"],"best_for":["organizations with existing ticket systems wanting to add bot automation","teams wanting to avoid building custom ticket storage","support operations already using Jira, Zendesk, or GitHub Issues"],"limitations":["API rate limits of external systems can throttle bot performance — requires queuing/batching","Field mapping between bot schema and external system requires manual configuration","Sync conflicts (concurrent updates) require resolution logic — no built-in conflict resolution","External system downtime blocks bot ticket creation — requires fallback/retry logic"],"requires":["API credentials for external ticket system (Jira, Zendesk, GitHub, etc.)","API client library or HTTP client for external system","Field mapping configuration (bot fields → external system fields)","Sync state storage (to track which tickets have been synced)","Retry and error handling logic"],"input_types":["ticket data from bot (title, description, priority, category)","external system API responses","field mapping configuration"],"output_types":["created/updated ticket in external system","ticket ID mapping (bot ticket → external ticket)","sync status and error logs"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_12","uri":"capability://data.processing.analysis.conversation.quality.scoring.and.feedback.collection","name":"conversation quality scoring and feedback collection","description":"Automatically scores conversation quality based on metrics like resolution success, customer satisfaction signals, and bot accuracy, and collects explicit feedback from customers or support staff. The system computes quality scores using heuristics (e.g., customer said 'thanks', ticket resolved quickly) or explicit ratings, tracks quality trends, and identifies low-quality conversations for review. This enables continuous improvement of bot responses.","intents":["I want to measure how well my support bot is performing on individual conversations","I need to collect customer feedback on bot responses to identify improvement areas","I want to identify conversations where the bot failed so we can improve it"],"best_for":["teams wanting to measure and improve bot quality over time","organizations collecting customer feedback at scale","support operations tracking bot performance metrics"],"limitations":["Quality scoring heuristics are domain-specific and require tuning","Explicit feedback collection adds friction to customer experience — low response rates","No built-in mechanism to act on feedback — requires separate improvement workflow","Implicit signals (e.g., 'thanks') can be unreliable indicators of actual satisfaction"],"requires":["Quality scoring logic (heuristics or ML model)","Feedback collection UI (survey, rating widget, or API)","Feedback storage and analysis system","Optional: sentiment analysis or NLP for implicit signal detection"],"input_types":["conversation transcript","ticket resolution status","explicit customer feedback (rating, comment)","support staff feedback"],"output_types":["quality score (0-100 or 1-5 rating)","quality factors (resolution, satisfaction, accuracy)","feedback text and metadata","quality trends over time"],"categories":["data-processing-analysis","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_2","uri":"capability://data.processing.analysis.semantic.ticket.deduplication.and.linking","name":"semantic ticket deduplication and linking","description":"Detects duplicate or related support tickets by computing semantic similarity between incoming queries and existing tickets using embeddings. The system clusters similar tickets together, suggests merging candidates to support staff, and automatically links related tickets to prevent fragmented conversations. This reduces redundant support work and helps identify systemic issues affecting multiple customers.","intents":["I want to automatically detect when a customer is asking about a problem already reported by someone else","I need to identify patterns in support tickets to find systemic issues affecting multiple customers","I want to merge duplicate tickets and consolidate customer conversations"],"best_for":["high-volume support teams receiving hundreds of tickets daily","organizations wanting to identify product issues from ticket patterns","teams managing distributed support across multiple channels"],"limitations":["Semantic similarity thresholds must be tuned per domain — generic thresholds produce false positives or false negatives","Deduplication is probabilistic and may miss true duplicates if phrasing is very different","Requires periodic re-indexing of ticket corpus as new tickets arrive — not real-time without background jobs","No built-in handling of tickets that are semantically similar but require different resolutions"],"requires":["Embedding model for ticket text (OpenAI, Hugging Face, or local)","Vector similarity search capability (Pinecone, Weaviate, or local FAISS)","Existing ticket database with text content","Tuning parameters for similarity threshold (typically 0.7-0.85 cosine similarity)"],"input_types":["ticket text (title + description)","ticket metadata (customer, timestamp, category)","historical ticket corpus"],"output_types":["deduplication candidates with similarity scores","ticket clusters (groups of related issues)","merge recommendations with confidence levels"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_3","uri":"capability://text.generation.language.dynamic.prompt.engineering.with.ticket.context.injection","name":"dynamic prompt engineering with ticket context injection","description":"Constructs LLM prompts dynamically by injecting relevant ticket history, customer profile, and knowledge base context retrieved via RAG. The system builds a context window that includes previous interactions with the customer, similar resolved tickets, and relevant documentation, then formats this into a structured prompt template that guides the LLM toward consistent, contextual responses. This enables the bot to provide personalized answers without requiring fine-tuning.","intents":["I want the bot to remember previous interactions with a customer and reference them in new responses","I need the bot to provide consistent answers by injecting relevant context into every response","I want to customize bot behavior based on customer history without fine-tuning the model"],"best_for":["support teams wanting personalized responses without model fine-tuning","organizations with complex customer histories that need context for accurate support","teams wanting to control bot behavior through prompt engineering rather than model training"],"limitations":["Context window size is limited by LLM token limits (4k-100k depending on model) — large ticket histories may be truncated","Prompt injection attacks possible if customer input is not properly sanitized before injection","Quality depends on RAG retrieval quality — irrelevant context can confuse the LLM","No automatic optimization of prompt structure — requires manual tuning for best results"],"requires":["LLM API with sufficient context window (GPT-4, Claude, or equivalent)","RAG system for retrieving relevant context","Ticket database with customer history","Prompt template system (Handlebars, Jinja2, or custom)"],"input_types":["customer query (text)","customer profile (metadata)","retrieved context (documents, tickets, FAQs)","prompt template (structured format)"],"output_types":["constructed prompt (text)","LLM response (text)","context metadata (sources used, confidence)"],"categories":["text-generation-language","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_4","uri":"capability://tool.use.integration.multi.provider.llm.abstraction.with.fallback.routing","name":"multi-provider llm abstraction with fallback routing","description":"Provides a unified interface to multiple LLM providers (OpenAI, Anthropic, local models) with automatic fallback routing if the primary provider fails or rate-limits. The system abstracts provider-specific API differences, handles token counting and context window constraints per model, and routes requests to alternative providers based on cost, latency, or availability. This enables resilience and cost optimization without changing application code.","intents":["I want to use multiple LLM providers and switch between them based on cost or availability","I need my support bot to continue working if my primary LLM provider goes down","I want to optimize costs by routing simple queries to cheaper models and complex ones to more capable models"],"best_for":["teams wanting LLM provider independence and cost optimization","production systems requiring high availability and fallback mechanisms","organizations experimenting with multiple models and wanting easy switching"],"limitations":["Response format inconsistencies between providers require normalization logic — adds complexity","Token counting varies slightly between providers, risking context window overflow","Fallback routing adds latency if primary provider fails — no zero-latency failover","Cost tracking across providers requires custom billing integration"],"requires":["API keys for at least 2 LLM providers (OpenAI, Anthropic, Ollama, etc.)","Provider SDKs or HTTP clients for each integrated provider","Configuration system for provider routing rules and fallback order","Node.js 16+ with TypeScript support"],"input_types":["prompt text","model selection criteria (cost, latency, capability)","routing configuration (provider order, fallback rules)"],"output_types":["normalized LLM response (text)","provider metadata (which provider was used, latency, cost)","fallback event logs"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_5","uri":"capability://data.processing.analysis.structured.ticket.field.extraction.from.unstructured.chat","name":"structured ticket field extraction from unstructured chat","description":"Parses natural language customer messages to extract structured ticket fields (customer name, email, issue category, priority, product/service affected) using LLM-guided extraction with optional schema validation. The system uses few-shot prompting or function calling to map conversational input to a predefined ticket schema, handles missing or ambiguous fields with clarification prompts, and validates extracted data against business rules. This enables automatic ticket creation without manual form filling.","intents":["I want to extract customer contact info and issue details from free-form chat without asking for a form","I need to automatically categorize support issues based on what customers describe","I want to identify high-priority issues automatically so they get routed to the right team"],"best_for":["support teams using conversational interfaces instead of forms","organizations wanting to reduce customer friction in ticket submission","teams needing automatic issue triage based on extracted severity/category"],"limitations":["Extraction accuracy depends on LLM capability and prompt quality — may miss fields or misclassify categories","Ambiguous customer input may require follow-up clarification, adding conversation turns","No built-in validation of extracted data against business rules — requires custom validation layer","Sensitive data (PII) extraction requires careful handling and may trigger data privacy concerns"],"requires":["LLM API with function calling or structured output support (GPT-4, Claude, etc.)","Ticket schema definition (JSON schema or TypeScript interface)","Validation rules for extracted fields (regex, enums, business logic)","Optional: few-shot examples for improved extraction accuracy"],"input_types":["customer message (text)","conversation history (for context)","ticket schema (structured format)"],"output_types":["extracted ticket fields (structured object)","extraction confidence scores per field","clarification prompts for missing/ambiguous fields"],"categories":["data-processing-analysis","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_6","uri":"capability://memory.knowledge.conversation.history.management.with.token.optimization","name":"conversation history management with token optimization","description":"Maintains conversation state across multiple turns while optimizing token usage by summarizing old messages, truncating irrelevant context, and prioritizing recent interactions. The system tracks conversation length, estimates token count per message, and automatically summarizes or removes older turns when approaching LLM context limits. This enables long conversations without exceeding token budgets or losing important context.","intents":["I want my support bot to remember the entire conversation history without running out of tokens","I need to keep recent context while summarizing older parts of the conversation","I want to optimize costs by reducing token usage in long support conversations"],"best_for":["support scenarios with long customer conversations (10+ turns)","cost-sensitive deployments where token usage directly impacts expenses","teams wanting to maintain context without expensive context window upgrades"],"limitations":["Summarization can lose important details from older messages — requires careful summary prompting","Token counting is approximate and may underestimate actual usage, risking context window overflow","Truncation strategy (oldest-first vs least-relevant-first) requires tuning per use case","No built-in persistence — conversation state lost if process restarts without external storage"],"requires":["Token counting library (js-tiktoken for OpenAI, or provider-specific equivalents)","Conversation storage (in-memory, Redis, or database)","Summarization capability (LLM or extractive summarizer)","Configuration for context window size and token budget"],"input_types":["new customer message (text)","conversation history (array of messages)","token budget (integer)"],"output_types":["optimized conversation context (trimmed/summarized messages)","token usage metrics (current, remaining)","summary of removed context (for reference)"],"categories":["memory-knowledge","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_7","uri":"capability://safety.moderation.customer.sentiment.analysis.and.escalation.routing","name":"customer sentiment analysis and escalation routing","description":"Analyzes customer sentiment from chat messages using LLM-based classification or dedicated sentiment models, automatically escalates frustrated or angry customers to human agents, and tracks sentiment trends over conversation. The system classifies messages as positive, neutral, negative, or urgent, triggers escalation workflows when sentiment crosses thresholds, and provides sentiment metadata to support staff for context. This enables proactive handling of dissatisfied customers.","intents":["I want to automatically escalate angry customers to human agents instead of letting the bot handle them","I need to track customer satisfaction trends from support conversations","I want to identify at-risk customers who might churn based on sentiment signals"],"best_for":["support teams wanting to prevent customer churn through proactive escalation","organizations tracking customer satisfaction metrics from support interactions","teams wanting to protect brand reputation by handling upset customers carefully"],"limitations":["Sentiment classification can be inaccurate for sarcasm, cultural context, or domain-specific language","Escalation thresholds require tuning — too aggressive causes alert fatigue, too lenient misses real issues","No built-in human agent routing system — requires integration with external queue/assignment system","Sentiment analysis adds latency (100-300ms per message) if using external models"],"requires":["Sentiment classification model (LLM-based, Hugging Face, or commercial API)","Escalation workflow system (queue, assignment, notification)","Configurable sentiment thresholds and escalation rules","Human agent availability tracking (optional, for smart routing)"],"input_types":["customer message (text)","conversation history (for trend analysis)","sentiment threshold configuration"],"output_types":["sentiment classification (positive/neutral/negative/urgent)","sentiment score (0-1 or -1 to 1)","escalation event (if threshold exceeded)","sentiment trend over conversation"],"categories":["safety-moderation","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_8","uri":"capability://automation.workflow.knowledge.base.auto.indexing.and.incremental.updates","name":"knowledge base auto-indexing and incremental updates","description":"Automatically indexes new documentation, FAQs, and ticket resolutions into the RAG knowledge base with incremental updates rather than full re-indexing. The system monitors source documents for changes, generates embeddings for new content, updates the vector store, and maintains version history. This enables the knowledge base to stay current without manual intervention or expensive full re-indexing cycles.","intents":["I want my support bot's knowledge base to automatically update when we publish new documentation","I need to add resolved tickets to the knowledge base so the bot learns from past solutions","I want to avoid expensive full re-indexing every time documentation changes"],"best_for":["organizations with frequently updated documentation (daily or weekly changes)","teams wanting to leverage ticket history as a learning source","knowledge-heavy support operations where keeping docs current is critical"],"limitations":["Incremental updates require change detection logic — complex for unstructured sources like PDFs","Embedding generation for large documents adds latency and API costs","No built-in deduplication of similar content across sources — may index redundant information","Version history tracking adds storage overhead"],"requires":["Document source integration (Git, S3, Confluence, Notion, or file system)","Change detection mechanism (file hashing, timestamps, or API webhooks)","Embedding generation pipeline (batch or streaming)","Vector database with update/upsert capabilities","Scheduled job runner (cron, Lambda, or similar)"],"input_types":["source documents (markdown, PDF, HTML, API responses)","document metadata (title, category, version)","update triggers (webhooks, scheduled scans)"],"output_types":["indexed documents in vector store","update logs (what changed, when)","indexing metrics (documents added/updated/removed)"],"categories":["automation-workflow","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-contractspec-lib.support-bot__cap_9","uri":"capability://text.generation.language.custom.response.templates.with.conditional.logic","name":"custom response templates with conditional logic","description":"Defines reusable response templates with conditional logic (if-then rules) that customize bot responses based on ticket metadata, customer profile, or extracted context. Templates support variable interpolation, branching logic, and fallback responses, enabling consistent messaging without hardcoding responses in code. This allows non-technical support staff to customize bot behavior through template configuration.","intents":["I want to customize bot responses based on customer type (VIP vs regular) without code changes","I need to ensure consistent messaging across all support interactions","I want support staff to be able to update bot responses without involving developers"],"best_for":["organizations wanting to customize bot behavior without code changes","support teams managing brand voice and messaging consistency","teams with non-technical staff who need to update bot responses"],"limitations":["Complex conditional logic becomes hard to maintain in template syntax — may require code for advanced logic","Template syntax learning curve for non-technical users","No built-in A/B testing or response variant tracking","Limited to text responses — no support for dynamic content generation beyond variable substitution"],"requires":["Template engine (Handlebars, Liquid, or custom)","Template storage and versioning system","Context data for variable interpolation (customer profile, ticket metadata)","Conditional logic evaluation engine"],"input_types":["template definition (text with variables and logic)","context data (customer profile, ticket metadata, extracted fields)","template variables (customer name, issue type, etc.)"],"output_types":["rendered response (text)","template metadata (version, last updated, author)"],"categories":["text-generation-language","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":33,"verified":false,"data_access_risk":"high","permissions":["Vector database or embedding storage (e.g., Pinecone, Weaviate, or local vector store)","Pre-indexed knowledge base with embeddings generated","Embedding model API access (OpenAI, Hugging Face, or local model)","Node.js 16+ for runtime","LLM API access (OpenAI, Anthropic, or compatible provider)","Ticket system API integration (Jira, Zendesk, GitHub Issues, or custom)","Session/conversation state storage (Redis, database, or in-memory for single-instance)","TypeScript 4.5+ and Node.js 16+","Ticket database with complete event history (creation, updates, resolution)","Analytics engine (SQL, data warehouse, or time-series database)"],"failure_modes":["Retrieval quality depends on embedding model quality and knowledge base organization — poor documentation structure degrades performance","Semantic search may miss exact keyword matches if query phrasing differs significantly from indexed content","No built-in automatic knowledge base updates — requires manual indexing pipeline for new documentation","Vector similarity search adds 100-500ms latency per query depending on corpus size","LLM-based extraction can misclassify priority or category if customer intent is ambiguous — requires validation rules","State machine transitions rely on LLM interpretation of conversation intent, which may fail for edge cases or sarcasm","No built-in conflict resolution if multiple state transitions are valid in a single turn","Requires integration with external ticket system (Jira, Zendesk, etc.) — no native persistence","Metrics quality depends on accurate ticket data — garbage in, garbage out","Real-time analytics require continuous data processing — batch analytics have latency","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.10696680969115957,"quality":0.35,"ecosystem":0.68,"match_graph":0.25,"freshness":0.6,"weights":{"adoption":0.3,"quality":0.2,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:23.901Z","last_scraped_at":"2026-04-22T08:08:13.653Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":587,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=contractspec-lib.support-bot","compare_url":"https://unfragile.ai/compare?artifact=contractspec-lib.support-bot"}},"signature":"R2xe1gM20i/CS+8Y3Ki026UXmACByfJlCx365w1mvrJ6TPOUQOtDdF1mhiwyD5Y5ybLrh0JWTCb1N1I3yPiJAQ==","signedAt":"2026-06-21T08:58:29.220Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/contractspec-lib.support-bot","artifact":"https://unfragile.ai/contractspec-lib.support-bot","verify":"https://unfragile.ai/api/v1/verify?slug=contractspec-lib.support-bot","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}