[{"data":1,"prerenderedAt":721},["ShallowReactive",2],{"\u002Fblog\u002Fimport-menu-from-photos-chatgpt-claude":3,"author-bitetwo-team":706},{"id":4,"title":5,"author":6,"body":7,"date":680,"description":681,"extension":682,"image":683,"meta":684,"navigation":685,"path":686,"readingTime":247,"relatedPosts":687,"seo":698,"stem":699,"tags":700,"__hash__":705},"blog\u002Fblog\u002Fimport-menu-from-photos-chatgpt-claude.md","Import Your Menu From Photos With ChatGPT or Claude","bitetwo-team",{"type":8,"value":9,"toc":656},"minimark",[10,14,17,22,51,55,60,71,75,78,81,105,108,119,123,126,391,402,406,409,427,433,437,451,458,462,469,476,480,512,516,519,538,542,547,561,566,577,580,584,587,591,595,598,602,605,609,612,616,619,623,626,630,633,637,640,652],[11,12,13],"p",{},"Setting up a restaurant in BiteTwo takes about ten minutes, except for one part: the menu. A menu with fifty dishes, sizes, extras and allergens means a lot of typing, and that is where many people stop.",[11,15,16],{},"BiteTwo now has a menu import for exactly this. You give photos or a PDF of your paper menu to an AI assistant such as ChatGPT or Claude. The assistant reads it and hands you a small file in a fixed format. You drop it into BiteTwo, look at a preview and import. This article shows the whole process.",[18,19,21],"h2",{"id":20},"the-short-answer","The short answer",[23,24,25,33,39,45],"ul",{},[26,27,28,32],"li",{},[29,30,31],"strong",{},"You need three things:"," your menu as photos or a PDF, an AI assistant that can read images (ChatGPT, Claude or similar), and an owner account in BiteTwo.",[26,34,35,38],{},[29,36,37],{},"The process has three steps:"," give the assistant BiteTwo's prompt and your photos, paste its answer or drop its file into BiteTwo, check the preview and import.",[26,40,41,44],{},[29,42,43],{},"It only adds."," Nothing on your menu is overwritten or deleted, and dishes you already have are skipped.",[26,46,47,50],{},[29,48,49],{},"You stay in control."," The assistant can misread a price or an allergen, so the preview is there to be checked before anything is saved.",[18,52,54],{"id":53},"step-by-step","Step by step",[56,57,59],"h3",{"id":58},"_1-open-the-import","1. Open the import",[11,61,62,63,66,67,70],{},"In BiteTwo, go to ",[29,64,65],{},"Menu"," and click ",[29,68,69],{},"Import menu"," at the top of the page. Only owners see this button.",[56,72,74],{"id":73},"_2-give-the-prompt-and-the-photos-to-your-assistant","2. Give the prompt and the photos to your assistant",[11,76,77],{},"The dialog contains a ready-made prompt. It is tailored to your restaurant: it names your currency, explains your country's allergen codes (for example the letters A to R on German menus) and lists the categories you already have, so that the assistant reuses their names.",[11,79,80],{},"You have three ways to hand it over:",[23,82,83,93,99],{},[26,84,85,88,89,92],{},[29,86,87],{},"Open in Claude"," or ",[29,90,91],{},"Open in ChatGPT"," opens a new chat with the prompt already in the message box.",[26,94,95,98],{},[29,96,97],{},"Copy prompt"," copies it, for any other assistant.",[26,100,101,104],{},[29,102,103],{},"Show the prompt"," lets you read it first. It is plain text, and you can change it if you like.",[11,106,107],{},"Then attach your photos or the PDF and send the message. Two small notes:",[23,109,110,116],{},[26,111,112,113,115],{},"Your assistant may show a notice because a link filled in the message. That is normal. The text is visible in the box, so read it before you send anything. If the link does not fill in the prompt, use ",[29,114,97],{},".",[26,117,118],{},"BiteTwo never sends anything to the assistant itself. The link only opens a chat, and your photos go there when you attach them.",[56,120,122],{"id":121},"_3-get-the-answer","3. Get the answer",[11,124,125],{},"The assistant answers with a block of JSON, a text format that computers read easily. It may add a note afterwards, for example for a dish without a price. You do not have to understand the JSON. It looks like this:",[127,128,133],"pre",{"className":129,"code":130,"language":131,"meta":132,"style":132},"language-json shiki shiki-themes github-light github-dark","{\n  \"categories\": [\n    {\n      \"name\": \"Starters\",\n      \"items\": [\n        { \"name\": \"Tomato soup\", \"description\": \"with basil\", \"price\": 6.5, \"allergens\": [\"9\"], \"diets\": [\"vegetarian\"] },\n        { \"name\": \"Beer\", \"price\": 3.8, \"variants\": [{ \"name\": \"0.3 l\", \"price\": 3.8 }, { \"name\": \"0.5 l\", \"price\": 4.9 }] },\n        { \"name\": \"Bread\", \"price\": 4, \"addons\": [{ \"name\": \"Butter\", \"price\": 0.5, \"allergens\": [\"7\"] }] }\n      ]\n    }\n  ]\n}\n","json","",[134,135,136,145,155,161,177,185,245,311,367,373,379,385],"code",{"__ignoreMap":132},[137,138,141],"span",{"class":139,"line":140},"line",1,[137,142,144],{"class":143},"sVt8B","{\n",[137,146,148,152],{"class":139,"line":147},2,[137,149,151],{"class":150},"sj4cs","  \"categories\"",[137,153,154],{"class":143},": [\n",[137,156,158],{"class":139,"line":157},3,[137,159,160],{"class":143},"    {\n",[137,162,164,167,170,174],{"class":139,"line":163},4,[137,165,166],{"class":150},"      \"name\"",[137,168,169],{"class":143},": ",[137,171,173],{"class":172},"sZZnC","\"Starters\"",[137,175,176],{"class":143},",\n",[137,178,180,183],{"class":139,"line":179},5,[137,181,182],{"class":150},"      \"items\"",[137,184,154],{"class":143},[137,186,188,191,194,196,199,202,205,207,210,212,215,217,220,222,225,228,231,234,237,239,242],{"class":139,"line":187},6,[137,189,190],{"class":143},"        { ",[137,192,193],{"class":150},"\"name\"",[137,195,169],{"class":143},[137,197,198],{"class":172},"\"Tomato soup\"",[137,200,201],{"class":143},", ",[137,203,204],{"class":150},"\"description\"",[137,206,169],{"class":143},[137,208,209],{"class":172},"\"with basil\"",[137,211,201],{"class":143},[137,213,214],{"class":150},"\"price\"",[137,216,169],{"class":143},[137,218,219],{"class":150},"6.5",[137,221,201],{"class":143},[137,223,224],{"class":150},"\"allergens\"",[137,226,227],{"class":143},": [",[137,229,230],{"class":172},"\"9\"",[137,232,233],{"class":143},"], ",[137,235,236],{"class":150},"\"diets\"",[137,238,227],{"class":143},[137,240,241],{"class":172},"\"vegetarian\"",[137,243,244],{"class":143},"] },\n",[137,246,248,250,252,254,257,259,261,263,266,268,271,274,276,278,281,283,285,287,289,292,294,296,299,301,303,305,308],{"class":139,"line":247},7,[137,249,190],{"class":143},[137,251,193],{"class":150},[137,253,169],{"class":143},[137,255,256],{"class":172},"\"Beer\"",[137,258,201],{"class":143},[137,260,214],{"class":150},[137,262,169],{"class":143},[137,264,265],{"class":150},"3.8",[137,267,201],{"class":143},[137,269,270],{"class":150},"\"variants\"",[137,272,273],{"class":143},": [{ ",[137,275,193],{"class":150},[137,277,169],{"class":143},[137,279,280],{"class":172},"\"0.3 l\"",[137,282,201],{"class":143},[137,284,214],{"class":150},[137,286,169],{"class":143},[137,288,265],{"class":150},[137,290,291],{"class":143}," }, { ",[137,293,193],{"class":150},[137,295,169],{"class":143},[137,297,298],{"class":172},"\"0.5 l\"",[137,300,201],{"class":143},[137,302,214],{"class":150},[137,304,169],{"class":143},[137,306,307],{"class":150},"4.9",[137,309,310],{"class":143}," }] },\n",[137,312,314,316,318,320,323,325,327,329,332,334,337,339,341,343,346,348,350,352,355,357,359,361,364],{"class":139,"line":313},8,[137,315,190],{"class":143},[137,317,193],{"class":150},[137,319,169],{"class":143},[137,321,322],{"class":172},"\"Bread\"",[137,324,201],{"class":143},[137,326,214],{"class":150},[137,328,169],{"class":143},[137,330,331],{"class":150},"4",[137,333,201],{"class":143},[137,335,336],{"class":150},"\"addons\"",[137,338,273],{"class":143},[137,340,193],{"class":150},[137,342,169],{"class":143},[137,344,345],{"class":172},"\"Butter\"",[137,347,201],{"class":143},[137,349,214],{"class":150},[137,351,169],{"class":143},[137,353,354],{"class":150},"0.5",[137,356,201],{"class":143},[137,358,224],{"class":150},[137,360,227],{"class":143},[137,362,363],{"class":172},"\"7\"",[137,365,366],{"class":143},"] }] }\n",[137,368,370],{"class":139,"line":369},9,[137,371,372],{"class":143},"      ]\n",[137,374,376],{"class":139,"line":375},10,[137,377,378],{"class":143},"    }\n",[137,380,382],{"class":139,"line":381},11,[137,383,384],{"class":143},"  ]\n",[137,386,388],{"class":139,"line":387},12,[137,389,390],{"class":143},"}\n",[11,392,393,394,397,398,401],{},"Each section of your menu becomes a category. Dishes carry their price, an optional description, allergens and diets. Sizes become ",[29,395,396],{},"variations"," with their own price, and paid extras become ",[29,399,400],{},"add-ons",". A section that is only served at certain times, such as a lunch menu, can carry its days and hours.",[56,403,405],{"id":404},"_4-paste-the-answer-or-drop-the-file","4. Paste the answer or drop the file",[11,407,408],{},"Back in BiteTwo, you have two options:",[23,410,411,417],{},[26,412,413,416],{},[29,414,415],{},"Paste"," the whole answer into the box. BiteTwo finds the JSON in it, with or without the chat text around it.",[26,418,419,422,423,426],{},[29,420,421],{},"Drop the file"," into the box, or click ",[29,424,425],{},"choose the file",", if your assistant gave you a JSON file instead of text.",[11,428,429,430,115],{},"BiteTwo checks the content right away when you drop a file. When you paste, click ",[29,431,432],{},"Check",[56,434,436],{"id":435},"_5-look-at-the-preview","5. Look at the preview",[11,438,439,440,88,443,446,447,450],{},"The preview lists every category and dish that will be added, with price and a note on variations, add-ons and allergens. Categories are marked ",[29,441,442],{},"New",[29,444,445],{},"Existing",". Dishes that are already on your menu appear struck through as ",[29,448,449],{},"already on the menu",", and they are skipped.",[11,452,453,454,457],{},"Take a minute here. Compare it with your paper menu, especially prices and allergens. Then click ",[29,455,456],{},"Import",". All dishes are saved together, or none if something goes wrong.",[18,459,461],{"id":460},"if-something-needs-fixing","If something needs fixing",[11,463,464,465,468],{},"Assistants sometimes make mistakes in the format: a missing price, an unknown allergen code, a section without a name. BiteTwo then shows ",[29,466,467],{},"every"," problem at once, in plain words such as \"Starters › Soup: needs a price\". Nothing is saved.",[11,470,471,472,475],{},"Click ",[29,473,474],{},"Copy problems for the assistant",", paste them into the same chat and ask for a corrected answer. Paste the new answer and check again. Usually one round is enough.",[18,477,479],{"id":478},"tips-for-good-results","Tips for good results",[23,481,482,488,494,500,506],{},[26,483,484,487],{},[29,485,486],{},"Photograph the menu flat and sharp,"," in daylight if you can, without glare. One section per photo reads better than a whole page squeezed in.",[26,489,490,493],{},[29,491,492],{},"Include the page with the allergen key."," If your menu prints letters such as A or G next to dishes, the assistant needs the legend to understand them.",[26,495,496,499],{},[29,497,498],{},"Use a PDF if you have one."," A digital menu is usually easier to read than a photo.",[26,501,502,505],{},[29,503,504],{},"Split a very large menu."," One import takes up to 400 dishes. Larger menus go in two or three rounds.",[26,507,508,511],{},[29,509,510],{},"Keep the menu's language."," The prompt tells the assistant to copy names and descriptions as printed.",[18,513,515],{"id":514},"check-what-matters-most-prices-and-allergens","Check what matters most: prices and allergens",[11,517,518],{},"An assistant reads text well, but not perfectly. Two kinds of errors matter most:",[23,520,521,527],{},[26,522,523,526],{},[29,524,525],{},"Prices."," A 9.50 read as 8.50 is easy to miss. Check every price in the preview.",[26,528,529,532,533,115],{},[29,530,531],{},"Allergens."," The prompt tells the assistant to set allergens only when your menu shows them, and never to guess from the name of a dish. That makes empty labels more likely than wrong ones, but you remain responsible for correct information. After the import, go through the dishes in the editor, and read our article on ",[534,535,537],"a",{"href":536},"\u002Fblog\u002Fallergen-labelling-digital-menu","allergen labelling on a digital menu",[18,539,541],{"id":540},"what-the-import-does-and-what-it-does-not-do","What the import does, and what it does not do",[11,543,544],{},[29,545,546],{},"It does:",[23,548,549,552,555,558],{},[26,550,551],{},"create new categories and dishes, with descriptions, variations, add-ons, allergens, additives (in Germany) and diets;",[26,553,554],{},"apply your restaurant's default VAT rate to every dish;",[26,556,557],{},"keep your sort order: new categories go after the existing ones, new dishes after the existing ones in their category;",[26,559,560],{},"set opening hours for sections that have them.",[11,562,563],{},[29,564,565],{},"It does not:",[23,567,568,571,574],{},[26,569,570],{},"change or delete anything that is already on your menu, even if the same dish appears with another price;",[26,572,573],{},"add photos of dishes. Upload them afterwards in the menu editor;",[26,575,576],{},"create tables, staff or restaurant details.",[11,578,579],{},"If you import the same menu twice, the second time adds nothing: every dish is already there.",[18,581,583],{"id":582},"a-note-on-privacy","A note on privacy",[11,585,586],{},"The photos go to the assistant you choose, under that provider's terms. A menu is public information, but make sure the photos show nothing else, such as handwritten notes with personal data. BiteTwo only receives the text you paste or drop in.",[18,588,590],{"id":589},"frequently-asked-questions","Frequently asked questions",[56,592,594],{"id":593},"which-assistants-work","Which assistants work?",[11,596,597],{},"Any assistant that can read images or PDFs and follow instructions. The links open Claude and ChatGPT, and the copied prompt works anywhere else.",[56,599,601],{"id":600},"does-the-import-overwrite-my-menu","Does the import overwrite my menu?",[11,603,604],{},"No. It only adds. Categories with the same name are reused and left as they are, and dishes with a name that already exists in that category are skipped.",[56,606,608],{"id":607},"what-if-my-menu-has-more-than-400-dishes","What if my menu has more than 400 dishes?",[11,610,611],{},"Import it in several rounds, for example one for food and one for drinks.",[56,613,615],{"id":614},"can-i-drop-a-file-instead-of-pasting","Can I drop a file instead of pasting?",[11,617,618],{},"Yes. If the assistant gives you a JSON file, drop it onto the box or choose it with the button. BiteTwo reads it and checks it immediately.",[56,620,622],{"id":621},"does-it-cost-anything","Does it cost anything?",[11,624,625],{},"BiteTwo does not charge for the import. Your assistant has its own plans and limits, so check what yours allows for image uploads.",[56,627,629],{"id":628},"can-staff-import-a-menu","Can staff import a menu?",[11,631,632],{},"Not at the moment. Creating menu entries is an owner action in BiteTwo, so the import is too.",[18,634,636],{"id":635},"conclusion","Conclusion",[11,638,639],{},"The menu is the most work in setting up a restaurant, and a good part of that work is copying what already exists on paper. With the import, an assistant does the copying, and you do the part that needs your knowledge: checking prices and allergens. Together that takes minutes instead of an afternoon, and nothing on your existing menu is at risk.",[11,641,642,646,647,651],{},[534,643,645],{"href":644},"\u002Frestaurant\u002Fnew","Start for free"," and import your menu, or ",[534,648,650],{"href":649},"\u002Fdemo","book a demo"," to see it first.",[653,654,655],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":132,"searchDepth":147,"depth":147,"links":657},[658,659,666,667,668,669,670,671,679],{"id":20,"depth":147,"text":21},{"id":53,"depth":147,"text":54,"children":660},[661,662,663,664,665],{"id":58,"depth":157,"text":59},{"id":73,"depth":157,"text":74},{"id":121,"depth":157,"text":122},{"id":404,"depth":157,"text":405},{"id":435,"depth":157,"text":436},{"id":460,"depth":147,"text":461},{"id":478,"depth":147,"text":479},{"id":514,"depth":147,"text":515},{"id":540,"depth":147,"text":541},{"id":582,"depth":147,"text":583},{"id":589,"depth":147,"text":590,"children":672},[673,674,675,676,677,678],{"id":593,"depth":157,"text":594},{"id":600,"depth":157,"text":601},{"id":607,"depth":157,"text":608},{"id":614,"depth":157,"text":615},{"id":621,"depth":157,"text":622},{"id":628,"depth":157,"text":629},{"id":635,"depth":147,"text":636},"2026-10-31","Typing in a whole menu is the slowest part of setting up a restaurant. With BiteTwo's menu import, an AI assistant reads photos of your paper menu and you check and import the result in minutes. Step by step, with the prompt and the format.","md","\u002Fimages\u002Fblog\u002Forder-status-on-phone.jpg",{},true,"\u002Fblog\u002Fimport-menu-from-photos-chatgpt-claude",[688,693],{"title":689,"slug":690,"description":691,"icon":692},"QR Code Ordering in Restaurants: How BiteTwo Works","qr-code-ordering-how-bitetwo-works","How guests order with BiteTwo by QR code, what the system costs and how to introduce it step by step.","Rocket",{"title":694,"slug":695,"description":696,"icon":697},"Allergen Labelling on a Digital Menu: What Restaurants Need to Show","allergen-labelling-digital-menu","Do you have to show allergens on a QR code or phone menu? What applies in Germany, Austria, Switzerland and the UK, and how BiteTwo handles the labels.","BookOpen",{"title":5,"description":681},"blog\u002Fimport-menu-from-photos-chatgpt-claude",[701,702,703,704],"Menu import","Getting started","ChatGPT","Claude","QBUiTiru691rXg0kxGjnadCWtJIuXRbyE0CJtcBwShU",{"id":707,"avatar":708,"bio":709,"email":710,"extension":682,"linkedin":711,"meta":712,"name":717,"organization":685,"role":718,"stem":719,"twitter":711,"__hash__":720},"author\u002Fauthor\u002Fbitetwo-team.md","\u002Fapple-touch-icon.png","We build BiteTwo, the free QR code ordering system for restaurants, cafés, bars and events, and write here about hospitality and digital ordering.","hello@bitetwo.de",null,{"body":713},{"type":8,"value":714,"toc":715},[],{"title":132,"searchDepth":147,"depth":147,"links":716},[],"BiteTwo Team","MSL-Digital KG, Zwiesel","author\u002Fbitetwo-team","4enmNhQ6VOXrTurPEqvPLr-SfxAx0VOM5Uug5L-D3eA",1793460307728]