Gourmet Research
Overview
Template-first workflow for traceable, comparable, auditable food recommendations across cities. Keep evidence, scores, and decisions synchronized.
Core Rules (Non-Negotiable)
- If the user has not specified an output language, ask once at project start and record it in
overview.md. - Use gourmet/<city-slug>/ with 6 files:
overview.md,inbox.md,candidates.md,notes.md,top-places.md,excluded.md. - Never fabricate sources, ratings, or claims. Use
unknownwhen missing. - Prefer original-language place names (not translated) unless the user requests otherwise.
- Preserve audit trail: never delete candidates; mark
rejectedand record why inexcluded.md. - Default minimum sources = 4. If the locale is information-sparse, allow 3 only when you record
evidence: limitedwith the reason and attempted sources.
Template-First Workflow (Summary)
- Initialize: Ask for output language + city, then copy templates from
assets/templates/into the city folder. - Normalize: Update language/city placeholders in the copied files before research begins.
- Discovery: Capture raw ideas in
inbox.md, then move top candidates intocandidates.mdwithstatus: inbox. - Evidence: For each candidate, write a full evidence block in
notes.mdwith sources + practical constraints. - Score: Apply the 50-point rubric and justify each component in
notes.md. - Decide: Promote to Top Picks (>=35), Backups (30-34), or reject (<30).
- Publish: Update
top-places.mdandexcluded.mdto match decisions. - Verify: Ensure no
inboxstatuses remain and required sections exist.
Ranking Retrieval (When user asks for “highest score”)
Before extracting any “top N” list, confirm the scope:
- Geography: Okinawa prefecture vs main island only vs specific subarea.
- Category: overall vs cuisine category.
- Source URL: must match the user’s intent exactly.
Checklist (must pass):
- URL matches the requested scope (prefecture vs category).
- If “main island only” is required, exclude island subareas (A4705/A4706).
- Page title confirms the intended ranking.
- Language modal handled so list items actually render.
If static scraping fails or content is blocked, use Playwright to load the page, close the language modal (日本語), and then extract items.
Evidence & Negative Review Rules
- Sources must include: Maps + local reviews + guide/editorial + official channel (where available).
- Negative review analysis is conditional: perform a focused negative review pass when risk signals appear in any source.
- Risk signals: repeated service complaints, hygiene/safety concerns, tourist-trap claims, extreme queue issues, inconsistent ratings, unclear hours/reservations.
- If triggered: add a Negative reviews subsection in
notes.md, adjust Risk/Consistency/Value as needed, and sync scores/status across files.
Locale-Specific Source Suggestions (Optional)
| Locale | Local reviews | Aggregator | Guides/editorial | | --- | --- | --- | --- | | Japan | Tabelog, Retty | Google Maps | Michelin, local food media | | Korea | Naver Map, Kakao Map | Google Maps | Michelin, local food media | | Taiwan | Google Maps, iPeen | OpenRice | Local food media | | Hong Kong | OpenRice | Google Maps | Michelin, local food media | | Singapore | OpenRice | Google Maps | Michelin, local food media | | Europe | Google Maps | Tripadvisor | Michelin, local city guides | | North America | Google Maps, Yelp | Tripadvisor | Eater, local food media | | Latin America | Google Maps | Tripadvisor | Local city guides | | SEA (general) | Google Maps | Tripadvisor | Local food media |
Scoring (50-Point Rubric)
- Taste/Quality (0-10)
- Value (0-10)
- Convenience (0-10)
- Consistency (0-10)
- Risk (0-10, higher = lower risk)
Thresholds:
- Top Picks: >=35
- Backups: 30-34
- Reject: <30 (or hard exclusion: hygiene/safety/tourist-trap evidence)
Roles (Optional, Compact)
- Research: find sources + capture evidence.
- Verify: resolve conflicts, confirm practical constraints.
- Score: apply rubric + justify.
- Synthesize: finalize top-places + dining strategy.
Quick Reference
| Item | Rule |
| --- | --- |
| City path | gourmet/<city-slug>/ |
| Files | overview/inbox/candidates/notes/top-places/excluded |
| Min sources | 4 (3 only with evidence: limited) |
| Output language | Ask if not specified |
| Place names | Prefer original language |
| Score tiers | >=35 Top, 30-34 Backup, <30 Reject |
Example (Evidence Block)
### Sakura Teahouse
**Official**: https://example.com
**Maps**: 4.4/5 (820 reviews) - https://maps.app.goo.gl/...
**Local reviews**: 3.7/5 (420 reviews) - https://tabelog.com/...
**Guide/editorial**: https://guide.example.com/...
**Notes**: quiet seating, popular seasonal desserts
**Practical**: reservations recommended, closed Tue
**Score**: Taste 8 / Value 7 / Convenience 6 / Consistency 7 / Risk 7 = **35/50**
Common Mistakes
- Skipping templates and mixing content across files.
- Skipping
inbox.mdand dumping raw ideas into candidates. - Translating place names instead of using the original language.
- Using only one review platform.
- Pulling the wrong ranking scope (category vs overall, islands included).
- Changing scores without updating candidates/top-places/excluded.
- Ignoring unclear hours or reservation policies.
Rationalization Table
| Excuse | Reality |
| --- | --- |
| "It’s just one city; I can skip templates." | Templates prevent drift and keep outputs comparable. |
| "Inbox is optional; I can put everything in candidates." | inbox.md keeps raw capture separate and reduces noise. |
| "There aren’t 4 sources; I’ll guess." | Use unknown and mark evidence: limited. Never guess. |
| "I’ll translate names for clarity." | Keep original-language names unless the user asks. |
| "This ranking page is close enough." | Scope mismatch invalidates the answer. Confirm URL and geography. |
| "Negative reviews are optional." | Required when risk signals appear. |
Red Flags — Stop and Fix
- Candidates deleted instead of rejected.
- Scores updated in notes but not in candidates/top-places.
- Missing output language decision.
- Uncited claims or ratings.
References
references/repo-spec.mdassets/templates/