AI Travel Scout — test report
- Date/time: 2026-06-25, ~20:43 CEST (build + end-to-end run)
- Instance: n8n demo, http://[adres-twojej-instancji-n8n]:5678 (version 2.60.0)
- Build mode: single agent (Opus), modular per-component testing, no Sonnet subagent fan-out (runtime had no Task tool; operator approved single-agent)
- Workflows:
AI Travel Scout — Intake— id2xESYQEBdmLOTLJE(5 nodes)AI Travel Scout — Monitor Ranking Gmail— idIRcDHCb4oBeIpDKr(20 nodes)- Data Table:
travel_scout_demo, id0b0harbKvx3K3FeT, 32 columns - Test recipient (masked):
to***twoj-testowy-adres@example.com - Export:
outputs/travel-scout-final.workflow.json
Credentials used (no secrets)
- OpenAI:
OpenAI Demo Credential(gpt-4.1-mini) on all 3 AI Agent model nodes - SerpApi:
SerpApi Demo Credential(HTTP Query Auth on the SerpApi node) - Gmail:
Gmail Test Sender(OAuth2)
Test results
| # | Test | Result | Evidence |
|---|---|---|---|
| 1 | Workflow structure | PASS | n8n_validate_workflow valid:true for both workflows |
| 2 | Credentials wired | PASS | OpenAI/SerpApi/Gmail bound on the right nodes |
| 3 | Intake (form → parse → insert) | PASS | execution 3034, Data Table row id 2, status new |
| 4 | SerpApi Google Hotels | PASS | execution 3038, HTTP 200, 20 properties for "Barcelona hotels" |
| 5 | Ranking (TOP 3 + best) | PASS | best Hotel 1898 (score 95), 3 alternatives, budget summary; table updated |
| 6 | Destination Guide | PASS | valid JSON: intro, facts, 4 activities, local tips |
| 7 | Travel Advisor + final body | PASS | full PL email body assembled (summary, hotel, pros/cons, TOP3, facts, activities, tips, plan) |
| 8 | Gmail send | PASS | execution 3038, Gmail message id 19f00188f2f7a5eb |
| 9 | Mail MCP verification | PASS | Gmail readonly MCP found message id 19f00188f2f7a5eb, from/to twoj-testowy-adres@example.com, subject "Rekomendacja city break w Barcelonie - czerwiec 2026", body contains "Hotel 1898" |
| 10 | Final table update | PASS | row id 2: status=sent, recommendation_subject, recommendation_body, destination_guide, last_sent_at=2026-06-25T18:43:57Z |
Bugs found and fixed during the run
- Intake form fields null —
n8n_test_workflowform trigger maps fields by technical namefield-0/1/2, not by label. First run errored at normalize ("Brak emaila"). Re-ran withfield-Nkeys → PASS. In a real browser-submitted form the labels (email,travel_description,monitor_frequency) work directly. - Stale node references in Code nodes — initial Code nodes referenced course node names (
Prepare query params,Extract hotels for AI,Parse AI ranking) but my nodes use prefixes (Set:/Code:). Patched vian8n_update_partial_workflow patchNodeField→ PASS. - Gmail API disabled in Google Cloud — OAuth project
[google-cloud-project-id]had Gmail API off (403 SERVICE_DISABLED). Enabled it in Cloud Console; retry → mail sent.
Executions
- Intake error (field mapping):
3033 - Intake success:
3034 - Monitor error (node refs):
3035 - Monitor error (node refs cascade): not retained
- Monitor error (Gmail disabled):
3036,3037 - Monitor full success end-to-end:
3038
Risks / known issues
See travel-scout-known-issues.md.
Subagent reports
Built single-agent, but per-component evidence is split into the same module reports:
- subagents/sonnet-intake-report.md
- subagents/sonnet-monitor-ranking-report.md
- subagents/sonnet-recommendation-gmail-report.md
- subagents/sonnet-integration-qa-report.md
- subagents/sonnet-mail-data-verification-report.md
Final verification
See opus-final-verification.md. Verdict: PASS. The mail arrived and was independently confirmed via Gmail MCP; Data Table is correctly updated; demo is showable.