Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

🌿 TrailMates: Less Scrolling, More Wandering | Open-Weight AI for Touching Grass

Description and use

TrailMates is an open‑source app that creates personalized short outdoor adventure plans using the Qwen2.5‑7B‑Instruct model and optional services, encouraging users to step away from screens and enjoy nature.

Problem

Users want spontaneous, screen‑free outdoor adventures but lack guidance on what to do and how to plan them.

Outcome

TrailMates delivers a lightweight, AI‑powered outdoor planning experience that encourages users to step away from screens, with transparent fallback mechanisms and optional audio support.

Workflow

  • 1. User selects available time, energy level, setting, and interests on the web interface.
  • 2. Frontend sends request to FastAPI backend.
  • 3. Backend calls Hugging Face Inference Provider (Qwen/Qwen2.5-7B-Instruct) via POST https://router.huggingface.co/v1/chat/completions with system prompt for JSON schema.
  • 4. Backend validates response (non‑empty, ≥80 chars, JSON with title and steps).
  • 5. If validation fails, a rule‑based fallback plan is returned and clearly labeled.
  • 6. Backend optionally enriches plan with park data from SerpApi Google Maps engine if SERPAPI_API_KEY and location are provided.
  • 7. Backend optionally generates audio briefing via ElevenLabs SDK; if unavailable, falls back to browser Web Speech API.
  • 8. Frontend displays plan, items, safety tips, challenge, reflection question, and audio link.
  • 9. User follows plan, puts phone away, and enjoys the adventure.

Evidence

TrailMates is an open-source outdoor adventure companion that turns spare time into small, screen-free adventures.

Source

The core AI is Qwen/Qwen2.5-7B-Instruct, one of the models recommended on the HF Inference Providers documentation.

Source

If inference is unavailable, the app can fall back to a clearly labeled rule-based demo plan rather than pretending that a model generated it.

Source

Elevenlabs SDK is wired up in elevenlabs_service.py. When the API key is valid, it returns an audio URL for the plan briefing. When it returns 401 (expired key) or is unconfigured, the frontend falls back to window.speechSynthesis (browser Web Speech API).

Source

serpapi_service.py calls the Google Maps engine for local park results when a key and location are provided. Results include a "source": "serpapi-live" tag.

Source

  • Record date: 2026-10-10T22:56:21.660Z