{"id":51338918,"url":"https://github.com/josedasilva11/ai-reception-agent","last_synced_at":"2026-07-02T05:32:52.519Z","repository":{"id":368256454,"uuid":"1284254079","full_name":"josedasilva11/ai-reception-agent","owner":"josedasilva11","description":"AI receptionist webhook that answers, qualifies and proposes booking slots (FastAPI + LLM).","archived":false,"fork":false,"pushed_at":"2026-06-29T17:53:59.000Z","size":42,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-29T19:27:13.044Z","etag":null,"topics":["ai-agent","booking","chatbot","fastapi","llm","openai","python","receptionist","small-business","webhook"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josedasilva11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-29T17:14:59.000Z","updated_at":"2026-06-29T17:54:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/josedasilva11/ai-reception-agent","commit_stats":null,"previous_names":["josedasilva11/ai-reception-agent"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/josedasilva11/ai-reception-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josedasilva11%2Fai-reception-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josedasilva11%2Fai-reception-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josedasilva11%2Fai-reception-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josedasilva11%2Fai-reception-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josedasilva11","download_url":"https://codeload.github.com/josedasilva11/ai-reception-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josedasilva11%2Fai-reception-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35034984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","booking","chatbot","fastapi","llm","openai","python","receptionist","small-business","webhook"],"created_at":"2026-07-02T05:32:52.429Z","updated_at":"2026-07-02T05:32:52.512Z","avatar_url":"https://github.com/josedasilva11.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI Reception Agent\n\n![AI reception agent demo](assets/demo.gif)\n\nAn AI receptionist for small businesses, exposed as a single FastAPI webhook. It receives an incoming customer message and a business profile (services, opening hours, booking rules) loaded from a YAML config, then answers FAQs, qualifies the request, and proposes concrete booking slots. The response is always structured JSON (reply text, intent, qualified flag, suggested slots), so it drops straight into WhatsApp bots, web chat widgets, or phone-to-text pipelines. It proves AI agents that answer, qualify, and book 24/7.\n\nIt works with or without an LLM key. If `OPENAI_API_KEY` is set, replies are generated by the model and grounded in the business profile. If no key is present, a deterministic rule based fallback keeps the endpoint fully functional, so you can clone and run it immediately.\n\n## Features\n\n- Single HTTP webhook (`POST /webhook`) returning structured JSON: `reply`, `intent`, `qualified`, `suggested_slots`.\n- Business profile loaded from an editable YAML config: services, opening hours, booking rules, FAQs.\n- Real booking slot generation that respects opening hours, slot length, lead time, and booking horizon.\n- LLM grounded answers via the OpenAI Chat Completions API, constrained to the business profile.\n- Graceful no key fallback: intent detection and FAQ matching with zero external calls.\n- Built in browser demo page served at `/`, plus a copy paste curl example.\n- Secrets only via environment variables, never hardcoded.\n\n## Tech\n\nPython 3.10+, FastAPI, Uvicorn, Pydantic, PyYAML, OpenAI Python SDK (optional at runtime).\n\n## Run\n\n```bash\ncp .env.example .env            # optional: set OPENAI_API_KEY for real LLM replies\npip install -r requirements.txt\nuvicorn app.main:app --reload\n```\n\nThen open http://localhost:8000/ for the demo page.\n\nOr call the webhook directly:\n\n```bash\ncurl -X POST http://localhost:8000/webhook \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"message\": \"Hi, do you do gel manicures on Saturday morning?\"}'\n```\n\nExample response:\n\n```json\n{\n  \"reply\": \"Yes, we offer gel manicures. We are open Saturday 09:00 to 14:00. Here are some times I can hold for you.\",\n  \"intent\": \"booking\",\n  \"qualified\": true,\n  \"suggested_slots\": [\n    \"2026-07-04T09:00:00\",\n    \"2026-07-04T09:45:00\",\n    \"2026-07-04T10:30:00\"\n  ]\n}\n```\n\nTo point the agent at a different business, edit `config/business.yaml` or set `BUSINESS_CONFIG` to another YAML path.\n\nBuilt by José Pedro Silva, marjers.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosedasilva11%2Fai-reception-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosedasilva11%2Fai-reception-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosedasilva11%2Fai-reception-agent/lists"}