-
-
Notifications
You must be signed in to change notification settings - Fork 0
ThomasHoussin/AdoptAI
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
# 🤖 Adopt AI Grand Palais 2025 - API > An AI-friendly REST API for the Adopt AI Grand Palais conference schedule [](https://aws.amazon.com/lambda/) [](https://www.python.org/) [](https://opensource.org/licenses/MIT) ## 🎯 Why? The official [Adopt AI Grand Palais](https://adoptai.artefact.com) website uses infinite-scroll JavaScript rendering that's impossible for AI assistants to parse. This API provides **clean, structured, filterable endpoints** so AI assistants like Claude and ChatGPT can actually help attendees navigate the conference. **The irony**: An AI summit without AI-readable data. This fixes that. ## 🚀 Quick Start ### For AI Assistants Just tell Claude/ChatGPT: ``` "Fetch https://adoptai.codecrafter.fr and help me find sessions about AI in banking on November 25" ``` The API is designed to be self-documenting. AI assistants can read the `/llms.txt` endpoint for full instructions. **Fallback Strategy**: If an AI assistant cannot access the API directly (common limitation when URLs aren't user-provided), it can ask you to copy/paste the complete JSON from: - https://adoptai.codecrafter.fr/sessions (all 240+ sessions) - https://adoptai.codecrafter.fr/speakers (all 200+ speakers) The assistant will then process the data locally to answer your questions. The full dataset is small enough (~500KB) to be easily shared this way. ### For Developers ```bash # What's happening right now? curl https://adoptai.codecrafter.fr/now # Get all sessions curl https://adoptai.codecrafter.fr/sessions # Filter by date and stage curl "https://adoptai.codecrafter.fr/sessions?date=2025-11-25&stage=CEO%20Stage" # Search sessions curl "https://adoptai.codecrafter.fr/sessions?search=banking" # Get speakers curl https://adoptai.codecrafter.fr/speakers ``` ## 🤖 AI Assistant Usage Patterns This API supports two data access methods for AI assistants: ### Method 1: Direct API Access (Preferred) When an AI assistant can make HTTP requests (URL provided by user or found via web search): ``` User: "What's happening right now at Adopt AI?" AI: *Fetches https://adoptai.codecrafter.fr/now* AI: "Currently there are 3 sessions ongoing and 5 starting soon..." User: "Find AI banking sessions at Adopt AI" AI: *Fetches https://adoptai.codecrafter.fr/sessions?search=banking* AI: "I found 5 sessions about AI in banking..." ``` ### Method 2: User-Provided Data (Fallback) When an AI assistant cannot access external URLs independently: ``` User: "Find AI banking sessions at Adopt AI" AI: "I don't have direct access to the API. Please copy/paste the JSON from: https://adoptai.codecrafter.fr/sessions" User: *Copies and pastes JSON data* AI: *Processes data locally and filters for "banking"* AI: "I found 5 sessions about AI in banking..." ``` **Why this dual approach works:** - ✅ **Small dataset**: Full data is only ~500KB (240 sessions + 200 speakers) - ✅ **Single request**: No pagination needed - entire dataset in one call - ✅ **Client-side processing**: AI can filter, search, and analyze locally - ✅ **Always helpful**: Users get assistance regardless of API access limitations This design ensures **maximum accessibility** for all AI assistants, even those with URL access restrictions. ## 📚 API Documentation ### Endpoints | Endpoint | Description | Filters | Cache | |----------|-------------|---------|-------| | `GET /sessions` | All conference sessions | `date`, `stage`, `time`, `search` | 1h | | `GET /now` | Sessions happening now or starting soon | - | None (real-time) | | `GET /speakers` | All speakers | `search` | 1h | | `GET /` | API documentation | - | 1h | | `GET /health` | Health check | - | None (real-time) | ### Query Parameters #### `/sessions` - **`date`**: `2025-11-25` or `2025-11-26` - **`stage`**: `CEO Stage`, `Mainstage South`, `Mainstage North`, `Mainstage East`, `Masterclass South`, `Masterclass North`, `Startup Stage` - **`time`**: `morning` (before 12:00) or `afternoon` (12:00+) - **`search`**: Full-text search in titles, descriptions, speaker names #### `/speakers` - **`search`**: Search by name, company, or role ### Examples ```bash # What's happening right now? curl "https://adoptai.codecrafter.fr/now" # Nobel Prize keynote curl "https://adoptai.codecrafter.fr/sessions?search=Aghion" # All morning sessions on Nov 25 curl "https://adoptai.codecrafter.fr/sessions?date=2025-11-25&time=morning" # Finance-related sessions curl "https://adoptai.codecrafter.fr/sessions?search=finance" # Speakers from Anthropic curl "https://adoptai.codecrafter.fr/speakers?search=Anthropic" ``` ## 🏗️ Architecture ``` ┌─────────────┐ │ Client │ │ (AI/Human) │ └──────┬──────┘ │ ▼ ┌─────────────────┐ │ CloudFront │ │ + Custom │ │ Domain │ └──────┬──────────┘ │ ▼ ┌─────────────────┐ │ Lambda │ │ Function URL │ │ (Python 3.14) │ └──────┬──────────┘ │ ▼ ┌─────────────────┐ │ S3 Bucket │ │ sessions.json │ │ speakers.json │ └─────────────────┘ ``` **Tech Stack:** - **AWS Lambda** (Python 3.14) - Serverless compute - **S3** - Data storage - **Lambda Function URL** - Direct HTTPS endpoint (no API Gateway) - **CloudFront** - CDN + custom domain + 1h caching ## ⚡ CloudFront Caching **Cache Strategy:** - **Cached (1 hour)**: `/sessions`, `/speakers`, `/`, `/llms.txt`, `/robots.txt` - 90% reduction in Lambda invocations for repeated queries - 5-10x faster response times (10-50ms vs 100-500ms) - Cache keys include query parameters: `date`, `stage`, `time`, `search` - **Real-time (no cache)**: `/now`, `/health` - Always hits Lambda for fresh data - Current sessions and health status **Why 1 hour TTL?** - Data is static (scraped Nov 19, 2025) - Conference is only 2 days (Nov 25-26) - Balances performance with flexibility **Cache Invalidation:** If you update data in S3, invalidate CloudFront cache: ```bash aws cloudfront create-invalidation \ --distribution-id <DISTRIBUTION_ID> \ --paths "/sessions*" "/speakers*" "/" "/llms.txt" ``` ## 📊 Data - **240+ sessions** across 8 stages - **200+ speakers** from leading AI companies - **2 days**: November 25-26, 2025 - **Venue**: Grand Palais, Paris ### Notable Speakers - **Philippe Aghion** - 2025 Nobel Prize in Economics - **Guillaume Princen** - Anthropic Head of EMEA - **Dr. Najwa Aaraj** - Technology Innovation Institute CEO - And many more... ## 💰 Cost Essentially **free** with AWS Free Tier: - Lambda: 1M requests/month free - S3: Negligible storage + GET costs - CloudFront: 1TB transfer/month free Estimated cost beyond free tier: **~$0.10/month** for typical usage. ## 🚀 Deployment ### Prerequisites - AWS account - AWS CLI configured - Python 3.14 - Domain configured (codecrafter.fr) ### Deploy ```bash # Clone the repo git clone https://github.com/ThomasHoussin/adoptai-api.git cd adoptai-api # Run deployment script ./deploy.sh # Configure custom domain (CloudFront) # See DEPLOYMENT.md for details ``` ## 🤝 Contributing Found incorrect data? Session changed? Open an issue or PR! ```bash # Update sessions data vi data/sessions.json # Redeploy ./deploy.sh ``` ## 📝 License MIT License - feel free to use this for other conferences! ## 👨💻 Author **Thomas Houssin** - GitHub: [@ThomasHoussin](https://github.com/ThomasHoussin) - Website: [codecrafter.fr](https://codecrafter.fr) Because AI events should be AI-accessible. ## 🙏 Acknowledgments - Data scraped from [Adopt AI Grand Palais](https://adoptai.artefact.com) - Inspired by the llms.txt convention - Built with the best serverless tools AWS offers --- **"Adopt AI... but make it actually adoptable by AI"** 🤖 Built with ❤️ and irony: an AI summit without AI-readable data.
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Sponsor this project
Packages 0
No packages published