# Carteau

> Carteau is a crowdsourced, open-source menu registry and menu-first map for restaurants, cafés, and bars worldwide. It helps you decide where to eat or drink before you walk in. Web app: https://carteau.app. Public REST API: https://api.carteau.app. MCP server: https://mcp.carteau.app. No user accounts; all contributions are anonymous. This file is the canonical machine-readable guide for AI agents. Extended reference: https://carteau.app/llms-full.txt.

Carteau is a menu-first map that helps people decide where to eat before they walk in, anywhere in the world. The map shows cafés, restaurants, and bars with searchable menus: food, drinks, prices, ingredients, and dietary flags (vegan, vegetarian, gluten-free). Fast filters help narrow by what you want to eat, drink, spend, or avoid. The interface uses a calm Liquid Glass design inspired by Apple Maps. There are no ads.

**Platforms.** The web app at https://carteau.app runs Next.js 16 on Vercel with MapLibre GL. The backend at https://api.carteau.app runs Hono on Railway with PostgreSQL and pg-boss; photos remain in Cloudflare R2, and AI requests use OpenRouter. A native iPhone app in SwiftUI with Apple MapKit lives in the `app/` directory of the monorepo; **an App Store release is coming soon**. The iOS app shares the same public API, supports offline SQLite caching with ETag-based sync, and offers the same map, search, contribution, and venue-detail flows.

**Monorepo layout** (https://github.com/emilianscheel/carteau.app): `web/` (Next.js frontend), `api/` (Hono API), `cli/` (CLI Worker), `mcp/` (Hono MCP server), `app/` (native iOS), and `data/` (Railway infrastructure and data migration). Web deploys via Vercel; API and MCP deploy via Railway.

## For AI agents

**Recommended workflow**

1. Connect the MCP server at https://mcp.carteau.app (preferred — 9 tools wrapping the REST API).
2. Or call the REST API directly at https://api.carteau.app/*.
3. Or install the CLI: `curl -fsSL https://cli.carteau.app/install.sh | bash`.

Typical agent tasks: search menus with `query`, inspect a venue with `venue`, list the full dataset with `venues`, monitor activity with `live`, review platform totals with `stats`, or contribute menu photos via `contribute` → upload → `finish`.

**Authentication.** None. Carteau does not create user accounts or issue API keys. Contribution tokens (`CAB-…`) are opaque upload-session IDs, not credentials. IP-based rate limits apply at the edge.

**Rate limits** (per IP, per minute): contributions 20, photo uploads 60, finish 30, status checks 120, data reads 300. Each contribution accepts at most 10 photos, each up to 20 MB (JPEG, PNG, WebP, HEIC).

**Map URL scheme.** Deep links encode an optional Carteau or OpenStreetMap venue followed by an optional camera position: `/@59.91,10.75,14z/`, `/VAB-CDE-FGH/`, `/osm%3Anode%3A123/`, or `/VAB-CDE-FGH/@59.91,10.75,14z/`. Contribution links are `/contribute/` or `/contribute/VAB-CDE-FGH/`. Older camera-first links remain readable. Reserved first segments (not map routes, except contribution links): `about`, `api`, `cli`, `contribute`, `data`, `legal`, `live`, `mcp`, `privacy`, `support`, `terms`.

**Entity ID prefixes.** Venues `VAB`, offers `OAB`, prices `RAB`, ingredients `IAB`, categories `TAB`, illustrations `LAB`, contributions `CAB`, photos `PAB`.

## Contributing

**Menu data (crowdsource).** Photograph a venue's menu, then submit via any channel:

- Web: https://carteau.app/contribute/ (pick an existing Carteau venue or an OpenStreetMap venue, upload photos; drag-and-drop works globally)
- CLI: `carteau contribute photo1.jpg photo2.jpg`
- REST: `GET POST /contribute/:venueId` or `POST /contribute` (new venue) → `POST /contribute/:token` (per photo) → `GET POST /finish/:token`
- MCP: `contribute` tool → upload via REST → `finish` tool

After `finish`, Gemma extracts menu facts and a cleanup pass normalizes them. Published menu data appears in search results.

**Code contributions.** Source: https://github.com/emilianscheel/carteau. There is no `CONTRIBUTING.md` yet. Open issues or pull requests on GitHub. Respect the terms and privacy policy below when submitting menu photos or working with user-derived data.

**Submission rules.** By submitting photos you confirm you may provide them for private storage, automated analysis, and publication of menu facts. Do not upload personal, unlawful, or unrelated material. Carteau may correct, merge, reject, or remove submissions and does not guarantee menu data is complete or current.

## Terms of Use

Effective September 2026. Operator: Emilian Scheel (individual developer). Contact: emilian.scheel@gmail.com.

By using Carteau (iPhone app or website at https://carteau.app/) or submitting menu photos, you agree to these Terms.

Carteau is a crowdsourced menu registry and map for restaurants, cafés, and bars. Menu data may be incomplete, outdated, AI-extracted, or otherwise inaccurate.

User contributions: By submitting photos you confirm you have the right to provide them and grant Carteau a license to store, process (including automated analysis), and publish extracted menu facts. Photos remain private and are not shown in a public gallery. Do not upload personal, unlawful, unrelated, or offensive material.

Prohibited content includes personal information, faces, nudity or other sexual or adult content, receipts with personal data, material you cannot share, and spam.

Carteau may reject, correct, merge, or remove submissions. Report concerns to emilian.scheel@gmail.com.

Menu items, prices, dietary flags, ingredients, and opening hours are informational. Always verify with the venue, especially for allergies.

Drink listings are informational only. Carteau does not sell alcohol.

Venue data may come from OpenStreetMap (ODbL) and Apple Maps on iPhone.

Carteau is provided "as is" without warranties. To the fullest extent permitted by law, Emilian Scheel is not liable for indirect or consequential damages or reliance on menu information. You agree to indemnify for unlawful submissions.

These Terms are governed by the laws of Norway. Apple is not a party to these Terms for App Store downloads.

## Privacy Policy

Effective September 2026. Data controller: Emilian Scheel (individual developer). Contact: emilian.scheel@gmail.com.

Carteau is a crowdsourced menu registry and map for restaurants, cafés, and bars. Carteau does not create user accounts.

Data collected:
- Location (iPhone, when permitted): map centering, nearby search, and venue lookup; coordinates may be sent to Carteau servers and OpenStreetMap-backed services.
- Photos (contributions): images from camera, photo library, or Files uploaded to api.carteau.app.
- Search queries sent to the API.
- Contribution metadata (venue ID or new venue name, coordinates, optional contact fields).
- Transient IP addresses for rate limiting (not durably stored as profiles).
- Local SQLite cache on device until app data is cleared.

Uses: operate map/search, process contributions, extract menu facts with OpenRouter-powered models, improve the dataset, and prevent abuse.

Legal basis (GDPR): legitimate interest and voluntary submission/permission where applicable.

Third parties: Railway (API and agent hosting, PostgreSQL database, and background jobs); Cloudflare (EU-jurisdiction R2 photo storage, DNS/proxy, and CDN for illustration images at cdn.carteau.app); OpenRouter (AI model routing for menu extraction); Vercel (web frontend hosting); OpenStreetMap/Overpass; Apple MapKit.

Photos are stored privately in EU-jurisdiction R2, processed to extract menu facts, and not exposed via a public gallery.

Retention: photos until deletion request or operational need; extracted menu facts may remain in the dataset; local cache until app removal.

Your rights may include access, correction, deletion, restriction, objection, portability, and complaint to a supervisory authority. Email emilian.scheel@gmail.com with contribution details when available.

Not directed at children under 13. Reasonable security measures are used. Processing is primarily in the EU.

iPhone App Privacy summary: precise location (when permitted), photos you upload, search queries; no cross-app tracking; no sale of personal information.

## Web Application

- [Map](https://carteau.app/): Menu-first map with venue pins, text search over dishes and venues, venue detail sheet, deep-linkable URLs
- [Contribute](https://carteau.app/contribute/): Upload menu photos for an existing or new venue; supports GPS on mobile and global drag-and-drop
- [Contribute to venue](https://carteau.app/contribute/{venueId}/): Pre-selected venue contribution flow
- [Live](https://carteau.app/live/): Real-time feed of extraction, cleanup, and illustration activity
- [Data](https://carteau.app/data/): Aggregated platform totals and growth
- [About](https://carteau.app/about/): Landing page with product description and site navigation

## Developer Documentation

- [REST API](https://carteau.app/api/): Full REST API reference with curl examples and sample JSON for every endpoint
- [CLI](https://carteau.app/cli/): Install script and command-line usage (`carteau query`, `venue`, `contribute`, etc.)
- [MCP](https://carteau.app/mcp/): MCP server URL and setup for Cursor, Claude, and Codex
- [Extended reference](https://carteau.app/llms-full.txt): Complete machine-readable API, MCP tool schemas, data model, and pipeline details

## Legal

- [Terms of Use](https://carteau.app/terms/): UGC rules, moderation, accuracy and dietary disclaimers, governing law
- [Privacy Policy](https://carteau.app/privacy/): iOS and web data collection, GDPR rights, third parties, retention, contact
- [Legal Notice](https://carteau.app/legal/): Impressum (§ 5 TMG / § 18 MStV), service provider, contact, dispute resolution
- [Support](https://carteau.app/support/): Contact email, help topics, content reports, GitHub issues

## Legal Notice

Legal notice (Impressum) for Carteau in accordance with § 5 TMG and § 18 MStV.

Service provider: Emilian Scheel, Moosdorfstraße 10, 12435 Berlin, Germany.

Contact: emilian.scheel@gmail.com

Responsible for content (§ 55 Abs. 2 RStV / § 18 Abs. 2 MStV): Emilian Scheel, Moosdorfstraße 10, 12435 Berlin, Germany.

EU online dispute resolution platform: https://ec.europa.eu/consumers/odr/

## Source Code

- [GitHub repository](https://github.com/emilianscheel/carteau.app): Monorepo with `web/`, `api/`, `cli/`, `mcp/`, and `app/` (native iOS, App Store release coming soon)
