diff --git a/.github/workflows/validate-schema.yml b/.github/workflows/validate-schema.yml new file mode 100644 index 0000000..155ad89 --- /dev/null +++ b/.github/workflows/validate-schema.yml @@ -0,0 +1,100 @@ +name: Validate Data Against Schema + +on: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + +permissions: + contents: read + +jobs: + validate: + name: Validate YAML files against schema + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install ajv-cli + run: npm install -g ajv-cli + + - name: Convert YAML files to JSON for validation + run: | + sudo apt-get update + sudo apt-get install -y python3 python3-pip python3-yaml + python3 << 'EOF' + import yaml + import json + import os + from pathlib import Path + + def convert_yaml_to_json(source_dir, output_dir): + """Recursively convert YAML files to JSON.""" + source_path = Path(source_dir) + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + yaml_files = list(source_path.rglob('*.yaml')) + list(source_path.rglob('*.yml')) + + for yaml_file in yaml_files: + try: + with open(yaml_file, 'r') as f: + data = yaml.safe_load(f) + + # Preserve directory structure + relative_path = yaml_file.relative_to(source_path) + json_file = output_path / relative_path.with_suffix('.json') + + json_file.parent.mkdir(parents=True, exist_ok=True) + + with open(json_file, 'w') as f: + json.dump(data, f, indent=2) + + print(f"Converted: {relative_path}") + except Exception as e: + print(f"Error converting {yaml_file}: {e}") + raise + + convert_yaml_to_json('index', '.validation-temp') + + # Also convert schema.yaml if it exists + if os.path.exists('schema.yaml'): + import yaml + with open('schema.yaml', 'r') as f: + schema_data = yaml.safe_load(f) + with open('.validation-temp/schema-from-yaml.json', 'w') as f: + json.dump({'yaml': schema_data}, f, indent=2) + + print("Conversion complete!") + EOF + + - name: Validate JSON files against schema + run: | + # Find all JSON files and validate them + find .validation-temp/index -name '*.json' -type f | while read -r file; do + echo "Validating: $file" + ajv validate \ + -s schemas/startup.schema.json \ + -d "$file" \ + --errors=text || { + echo "::error file=$file::Validation failed for $file" + exit 1 + } + done + echo "All files validated successfully!" + + - name: Cleanup + if: always() + run: rm -rf .validation-temp diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..41d286a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,350 @@ +# Contributing to Open Intelligence Index + +Thank you for your interest in contributing to the Open Intelligence Index! This document provides guidelines and instructions for contributing. + +## Table of Contents + +- [Code of Conduct](#code-of-conduct) +- [Getting Started](#getting-started) +- [How to Contribute](#how-to-contribute) +- [Adding a New Entry](#adding-a-new-entry) +- [Updating Existing Entries](#updating-existing-entries) +- [Schema Guidelines](#schema-guidelines) +- [Data Quality Standards](#data-quality-standards) +- [Pull Request Process](#pull-request-process) +- [Developer Setup](#developer-setup) + +## Code of Conduct + +- Be respectful and inclusive +- Provide constructive feedback +- Assume good intentions +- Focus on what is best for the community + +## Getting Started + +1. **Fork the repository** on GitHub +2. **Clone your fork** locally: + ```bash + git clone https://github.com/YOUR_USERNAME/open-intelligence-index.git + cd open-intelligence-index + ``` +3. **Add the upstream remote**: + ```bash + git remote add upstream https://github.com/shaharia-lab/open-intelligence-index.git + ``` +4. **Create a new branch** for your contribution: + ```bash + git checkout -b feature/add-company-name + ``` + +## How to Contribute + +### Types of Contributions + +| Type | Description | +|------|-------------| +| **New Entries** | Add new startups, companies, or entities to the index | +| **Updates** | Correct or enhance existing entries | +| **Bug Fixes** | Fix data errors or validation issues | +| **Documentation** | Improve README, schemas, or guides | +| **Schema** | Propose new schemas or schema improvements | + +### What We're Looking For + +- Accurate, verifiable information +- Properly formatted entries following the schema +- Descriptions that are neutral and factual +- Coverage of underrepresented regions/sectors + +## Adding a New Entry + +### Step 1: Verify the Company Doesn't Exist + +Search the repository to avoid duplicates: +```bash +grep -r "Company Name" index/ +``` + +### Step 2: Determine the Entry Type + +Currently supported: +- **Startups/Companies** → `index/startups/` + +### Step 3: Create the File + +1. **Navigate to the appropriate country directory**: + ``` + index/startups// + ``` + +2. **Create the YAML file**: + - Filename: `company-name.yaml` (lowercase, hyphenated) + - Must match the `id` field in the file + +### Step 4: Fill in the Entry + +```yaml +# yaml-language-server: $schema=https://raw.githubusercontent.com/shaharia-lab/open-intelligence-index/main/schemas/startup.schema.json + +id: company-name +name: "Company Name" +website: "https://example.com" +logo_url: "https://example.com/logo.png" +founded_year: 2020 +description: "A short, one-sentence pitch." +long_description: | + A longer paragraph explaining what they do, their unique selling point, + and their core technology. + +industries: + - "Industry Category" + - "Another Category" + +technologies: + - "AI Technology" + - "Another Technology" + +headquarters: + city: "City Name" + country_code: "US" # ISO 3166-1 alpha-2 + region: "California" + +funding: + total_raised_usd: 10000000 + last_round: "Series A" + investors: + - "Investor Name" + - "Another Investor" + +open_source: + active: true + github_org: "https://github.com/company" + huggingface_org: "https://huggingface.co/company" + +socials: + linkedin: "https://linkedin.com/company/company" + twitter: "https://twitter.com/company" +``` + +### Step 5: Required Fields + +| Field | Type | Required | +|-------|------|----------| +| `id` | string | Yes | +| `name` | string | Yes | +| `website` | URL | Yes | +| `founded_year` | integer | Yes | +| `description` | string | Yes | +| `industries` | array | Yes | +| `technologies` | array | Yes | +| `headquarters.city` | string | Yes | +| `headquarters.country_code` | string | Yes | + +### Step 6: Validation + +The CI pipeline will automatically validate your entry. You can also validate locally: + +```bash +# Using Python +pip install pyyaml jsonschema + +python3 << 'EOF' +import yaml +import jsonschema +import json + +# Load schema +with open('schemas/startup.schema.json', 'r') as f: + schema = json.load(f) + +# Load your entry +with open('index/startups/us/company.yaml', 'r') as f: + entry = yaml.safe_load(f) + +# Validate +jsonschema.validate(instance=entry, schema=schema) +print("Validation passed!") +EOF +``` + +## Updating Existing Entries + +1. Find the file you want to update +2. Make your changes +3. Ensure the schema still validates +4. Submit a PR with a clear description of what changed + +### Example Update PR Title + +``` +Update funding information for OpenAI (2024 Series D) +Fix website URL for Anthropic +Add technologies field to DeepMind entry +``` + +## Schema Guidelines + +### Field Guidelines + +| Field | Best Practice | +|-------|---------------| +| `id` | Use lowercase, hyphenated format; must match filename | +| `name` | Use official legal or trading name | +| `country_code` | Use ISO 3166-1 alpha-2 (e.g., DE, GB, US, JP) | +| `total_raised_usd` | Use integer, convert from other currencies | +| `description` | Keep to one sentence; neutral and factual | +| `industries` | Use standard industry categories | +| `technologies` | Use recognized technology terms | + +### Common Country Codes + +| Country | Code | +|---------|------| +| United States | US | +| United Kingdom | GB | +| Germany | DE | +| France | FR | +| Japan | JP | +| China | CN | +| Canada | CA | +| India | IN | +| Brazil | BR | +| Australia | AU | + +### Industry Categories + +Suggested industry categories (not exhaustive): +- Artificial Intelligence +- Enterprise Software +- Healthcare +- Finance +- Manufacturing +- Robotics +- Automotive +- E-commerce +- Cybersecurity +- Education + +## Data Quality Standards + +### Accuracy + +- Verify information from official sources +- Provide accurate funding amounts (convert to USD) +- Use official company names and URLs + +### Neutrality + +- Write neutral, factual descriptions +- Avoid marketing language or hype +- Don't include subjective assessments + +### Completeness + +- Fill all required fields +- Include optional fields when available +- Add sources for significant claims + +### Timeliness + +- Update outdated information +- Add recent funding rounds +- Correct changed URLs or status + +## Pull Request Process + +### 1. Create Your Branch + +Use a descriptive branch name: +```bash +git checkout -b add/openai-us +git checkout -b update/anthropic-funding +git checkout -b fix/deepmind-url +``` + +### 2. Commit Your Changes + +Use clear commit messages: +```bash +git commit -m "Add OpenAI (United States)" +git commit -m "Update Anthropic funding to $4B" +git commit -m "Fix broken URL in DeepMind entry" +``` + +### 3. Push and Create PR + +```bash +git push origin add/openai-us +``` + +Then create a Pull Request on GitHub with: +- **Title**: Clear and descriptive +- **Description**: What you changed and why +- **References**: Sources for new information (optional but helpful) + +### 4. Review Process + +- The CI pipeline will run validation +- Maintainers will review your PR +- Address any feedback requested +- Once approved, your PR will be merged + +### PR Checklist + +Before submitting, ensure: + +- [ ] Entry follows the schema +- [ ] No merge conflicts with upstream +- [ ] Commit messages are clear +- [ ] PR title and description are informative +- [ ] You've tested validation (if applicable) + +## Developer Setup + +### Prerequisites + +- Python 3.8+ +- Git +- A text editor with YAML support + +### Validation Script (Optional) + +Create a local validation script: + +```bash +# scripts/validate.py +import sys +import yaml +import json +import jsonschema +from pathlib import Path + +def validate_file(yaml_file, schema_file): + with open(schema_file, 'r') as f: + schema = json.load(f) + with open(yaml_file, 'r') as f: + data = yaml.safe_load(f) + jsonschema.validate(instance=data, schema=schema) + print(f"✓ {yaml_file} is valid") + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Usage: python scripts/validate.py ") + sys.exit(1) + validate_file(sys.argv[1], "schemas/startup.schema.json") +``` + +## Getting Help + +- **Issues**: Open a GitHub issue for bugs or questions +- **Discussions**: Use GitHub Discussions for general questions +- **Existing PRs**: Review and comment on open PRs + +## Recognition + +Contributors are recognized in: +- The project's contributor list +- Release notes (for significant contributions) + +Thank you for contributing to the Open Intelligence Index! diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..41f1d82 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Open Intelligence Index Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ab874a --- /dev/null +++ b/README.md @@ -0,0 +1,206 @@ +# Open Intelligence Index + +
+ +**A comprehensive, open-source index of AI products, services, startups, businesses, and more.** + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![GitHub](https://img.shields.io/badge-GitHub-Open%20Source-blue.svg)](https://github.com/shaharia-lab/open-intelligence-index) +[![Contributions Welcome](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](CONTRIBUTING.md) + +[Features](#-features) • [Directory Structure](#-directory-structure) • [Contributing](#-contributing) • [License](#-license) + +
+ +--- + +## About + +The **Open Intelligence Index** is a crowdsourced, centralized repository documenting the global AI landscape. Our mission is to create the most comprehensive, accessible, and well-structured index of AI companies, products, services, and startups worldwide. + +Unlike proprietary databases, this index is: +- **Free** - Completely open source under the MIT License +- **Collaborative** - Anyone can contribute and improve the data +- **Structured** - All entries follow defined schemas for consistency +- **Accessible** - Human-readable YAML format, machine-parsable JSON Schema + +## Features + +- Structured data with JSON Schema validation +- GitHub Actions CI for automatic validation +- IDE auto-completion via YAML Language Server +- Geographic and categorical organization +- Open source and developer-friendly + +## Directory Structure + +``` +open-intelligence-index/ +├── schemas/ # JSON Schema definitions +│ └── startup.schema.json # Schema for startup entries +├── index/ # Main data directory +│ └── startups/ # Startup/company index +│ └── germany/ # Country-based organization +│ └── aleph-alpha.yaml +├── .github/ +│ └── workflows/ +│ └── validate-schema.yml # CI validation pipeline +├── schema.yaml # Human-readable schema reference +├── CONTRIBUTING.md # Contribution guidelines +├── LICENSE # MIT License +└── README.md # This file +``` + +## Quick Start + +### For Contributors + +1. **Fork and clone** the repository +2. **Create a new branch** for your addition +3. **Add your entry** following the schema (see [Adding a New Entry](#adding-a-new-entry)) +4. **Submit a Pull Request** + +### For Users + +You can use this index in your projects by: +- Parsing the YAML files directly +- Converting to JSON for API usage +- Building custom queries and filters + +## Adding a New Entry + +### Adding a Startup Entry + +1. **Navigate to the appropriate directory** based on the company's location: + ```bash + cd index/startups// + ``` + +2. **Create a new YAML file** named after the company (use lowercase, hyphenated): + ```bash + # Example: For "DeepMind" in the UK + touch index/startups/gb/deepmind.yaml + ``` + +3. **Add the schema reference** at the top (enables IDE validation): + ```yaml + # yaml-language-server: $schema=https://raw.githubusercontent.com/shaharia-lab/open-intelligence-index/main/schemas/startup.schema.json + ``` + +4. **Fill in the required fields**: + ```yaml + id: deepmind + name: "DeepMind" + website: "https://deepmind.com" + founded_year: 2010 + description: "A leading AI research company focused on solving intelligence." + industries: + - "Artificial Intelligence" + - "Research" + technologies: + - "Deep Learning" + - "Reinforcement Learning" + headquarters: + city: "London" + country_code: "GB" + ``` + +5. **Optional fields** include `logo_url`, `long_description`, `funding`, `open_source`, and `socials`. + +6. **Validate locally** (optional): + ```bash + # Install Python dependencies + pip install pyyaml jsonschema + + # Validate your file + python scripts/validate.py index/startups/gb/deepmind.yaml + ``` + +7. **Commit and create a PR**: + ```bash + git add index/startups/gb/deepmind.yaml + git commit -m "Add DeepMind (UK)" + git push origin add-deepmind + ``` + +### Schema Validation + +All entries are automatically validated against the schema when you submit a PR. The CI pipeline will: +- Convert YAML to JSON +- Validate against `schemas/startup.schema.json` +- Report any validation errors + +## Schemas + +Each index type has its own schema definition in the `schemas/` directory: + +| Schema | Description | Status | +|--------|-------------|--------| +| `startup.schema.json` | Startup/Company entries | Active | +| `product.schema.json` | AI Product entries | Planned | +| `service.schema.json` | AI Service entries | Planned | + +## Contributing + +We welcome contributions from everyone! Please read our [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. + +### Types of Contributions + +- Add new startup/company entries +- Update existing entries with new information +- Fix errors or outdated data +- Improve documentation +- Propose new schemas for additional index types +- Report bugs or suggest improvements + +### Code of Conduct + +Be respectful, constructive, and inclusive. We aim to maintain a welcoming community for all contributors. + +## Disclaimer + +**THE DATA IN THIS INDEX IS PROVIDED "AS IS" FOR INFORMATIONAL PURPOSES ONLY.** + +- **Accuracy**: While we strive for accuracy, we cannot guarantee the completeness or correctness of all information. Companies change frequently, and data may become outdated. +- **Not Investment Advice**: This index should not be used as the basis for investment decisions. Always conduct your own due diligence. +- **Not Endorsement**: Inclusion in this index does not constitute an endorsement of any company, product, or service. +- **No Affiliation**: This project is not affiliated with any company listed herein. + +## Data Sources + +Data is crowdsourced from: +- Community contributions +- Publicly available information +- Company websites and press releases +- Public databases and news sources + +## Roadmap + +- [ ] Add product index schema +- [ ] Add service index schema +- [ ] Add investor/VC index schema +- [ ] Add search API/web interface +- [ ] Add data freshness indicators +- [ ] Add automated data enrichment + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## Acknowledgments + +- All contributors who help build and maintain this index +- The open-source community for tools and inspiration +- Companies making the AI landscape more transparent + +--- + +
+ +**Got questions?** Open an issue or start a discussion. + +**Ready to contribute?** Check out [CONTRIBUTING.md](CONTRIBUTING.md) + +Made with by the Open Intelligence Index community + +
diff --git a/index/startups/germany/aleph-alpha.yaml b/index/startups/germany/aleph-alpha.yaml new file mode 100644 index 0000000..f1e506e --- /dev/null +++ b/index/startups/germany/aleph-alpha.yaml @@ -0,0 +1,44 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/shaharia-lab/open-intelligence-index/main/schemas/startup.schema.json + +id: aleph-alpha +name: "Aleph Alpha" +website: "https://aleph-alpha.de" +logo_url: "https://aleph-alpha.de/assets/logo.png" +founded_year: 2019 +description: "Developing sovereign, industrial-grade Large Language Models and Generative AI for the European market." +long_description: | + Aleph Alpha researches and operationalizes large-scale AI models for language, + image data, and strategy. They focus on data sovereignty and explainability, + serving the B2B and government sectors as a European alternative to US-based models. + Their "Luminous" family of models is designed for critical enterprise environments. + +industries: + - "Enterprise Software" + - "Government" +technologies: + - "Generative AI" + - "LLM" + - "Multimodal" + +headquarters: + city: "Heidelberg" + country_code: "DE" + region: "Baden-Württemberg" + +funding: + total_raised_usd: 533000000 + last_round: "Series B" + investors: + - "Earlybird" + - "UVC Partners" + - "Bosch" + - "SAP" + +open_source: + active: true + github_org: "https://github.com/Aleph-Alpha" + huggingface_org: "https://huggingface.co/Aleph-Alpha" + +socials: + linkedin: "https://www.linkedin.com/company/aleph-alpha/" + twitter: "https://twitter.com/Aleph__Alpha" \ No newline at end of file diff --git a/schema.yaml b/schema.yaml deleted file mode 100644 index 258f224..0000000 --- a/schema.yaml +++ /dev/null @@ -1,44 +0,0 @@ -id: unique_slug_name # e.g., aleph-alpha (matches filename) -name: "Company Name" # Legal or Trading Name -website: "https://..." # Homepage URL -logo_url: "https://..." # Path to logo (remote or local) -founded_year: 2019 # YYYY -description: "A short, one-sentence pitch." -long_description: | # Multi-line description - A longer paragraph explaining what they do, their unique selling point, - and their core technology. - -# Classification for Filtering -industries: # Primary vertical focus - - "Enterprise Software" - - "Manufacturing" -technologies: # Core AI tech used - - "LLM" - - "Computer Vision" - - "Robotics" - -# Location Details -headquarters: - city: "Heidelberg" - country_code: "DE" - region: "Baden-Württemberg" # Helpful for regional analysis (e.g. Cyber Valley) - -# Financials (Optional but valuable) -funding: - total_raised_usd: 533000000 # Integers are easier to sort than strings - last_round: "Series B" - investors: # Key backers - - "Earlybird" - - "UVC Partners" - - "Schwarz Gruppe" - -# Open Source / Developer Angle (Since you are building an Open Index) -open_source: - active: true # do they have open source repos? - github_org: "https://github.com/xxx" - huggingface_org: "https://huggingface.co/xxxx" - -# Socials -socials: - linkedin: "https://..." - twitter: "https://..." \ No newline at end of file diff --git a/schemas/startup.schema.json b/schemas/startup.schema.json new file mode 100644 index 0000000..3dbeb48 --- /dev/null +++ b/schemas/startup.schema.json @@ -0,0 +1,142 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/shaharia-lab/open-intelligence-index/main/schemas/startup.schema.json", + "title": "Open Intelligence Index - Startup Schema", + "description": "Schema for indexing AI products, services, startups, and businesses. This schema defines the structure for company profile entries in the Open Intelligence Index.", + "type": "object", + "required": ["id", "name", "website", "founded_year", "description", "industries", "technologies", "headquarters"], + "properties": { + "id": { + "type": "string", + "description": "Unique slug identifier (e.g., 'aleph-alpha'). Should match the filename.", + "pattern": "^[a-z0-9-]+$" + }, + "name": { + "type": "string", + "description": "Legal or Trading Name of the company." + }, + "website": { + "type": "string", + "description": "Homepage URL.", + "format": "uri", + "pattern": "^https?://" + }, + "logo_url": { + "type": "string", + "description": "Path to logo (remote or local).", + "format": "uri" + }, + "founded_year": { + "type": "integer", + "description": "Year the company was founded (YYYY format).", + "minimum": 1900, + "maximum": 2100 + }, + "description": { + "type": "string", + "description": "A short, one-sentence pitch describing the company." + }, + "long_description": { + "type": "string", + "description": "A longer paragraph explaining what they do, their unique selling point, and their core technology." + }, + "industries": { + "type": "array", + "description": "Primary vertical focus areas for filtering and categorization.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "technologies": { + "type": "array", + "description": "Core AI technologies used or developed.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "headquarters": { + "type": "object", + "description": "Location details of company headquarters.", + "required": ["city", "country_code"], + "properties": { + "city": { + "type": "string", + "description": "City where the company is headquartered." + }, + "country_code": { + "type": "string", + "description": "ISO 3166-1 alpha-2 country code (e.g., 'DE' for Germany, 'US' for United States).", + "pattern": "^[A-Z]{2}$" + }, + "region": { + "type": "string", + "description": "State, province, or region (helpful for regional analysis, e.g., 'Baden-Württemberg', 'California')." + } + } + }, + "funding": { + "type": "object", + "description": "Financial information about the company.", + "properties": { + "total_raised_usd": { + "type": "integer", + "description": "Total funding raised in USD (use integers for easier sorting).", + "minimum": 0 + }, + "last_round": { + "type": "string", + "description": "Last funding round (e.g., 'Series B', 'Seed')." + }, + "investors": { + "type": "array", + "description": "Key backers and investors.", + "items": { + "type": "string" + } + } + } + }, + "open_source": { + "type": "object", + "description": "Open source presence and activity.", + "properties": { + "active": { + "type": "boolean", + "description": "Whether the company has open source repositories." + }, + "github_org": { + "type": "string", + "description": "GitHub organization URL.", + "format": "uri", + "pattern": "^https://github\\.com/" + }, + "huggingface_org": { + "type": "string", + "description": "HuggingFace organization URL.", + "format": "uri", + "pattern": "^https://huggingface\\.co/" + } + } + }, + "socials": { + "type": "object", + "description": "Social media links.", + "properties": { + "linkedin": { + "type": "string", + "description": "LinkedIn company page URL.", + "format": "uri", + "pattern": "^https://" + }, + "twitter": { + "type": "string", + "description": "Twitter/X profile URL.", + "format": "uri", + "pattern": "^https://" + } + } + } + } +}