{
  "edition": {
    "edition": "2026-09-06-draft-01",
    "language": "en",
    "publicationState": "published",
    "sourceRevision": "a7e788eb4b151fd92c1f58153e015773e3a829af",
    "projectCount": 67,
    "documentCount": 94,
    "skillCount": 10,
    "archivePath": "library.zip",
    "archiveBytes": 181812,
    "releasedAt": "2026-09-08T05:03:11.129+00:00"
  },
  "access": {
    "released": true,
    "rehearsal": false
  },
  "project": "ai-apps/route-planner.md",
  "markdown": "https://legion.tw/api/projects/packet.md/ai-apps/route-planner.md?edition=2026-09-06-draft-01",
  "documents": [
    {
      "path": "ai-apps/README.md",
      "text": "# Applications with AI operators\n\n[All project types](../README.md) · [Shared launch](../shared/launch.md)\n\nGive AI context and real tools to operate the application alongside the person. Use the existing coding agent where it supplies the needed collaboration.\n\n## Projects to build\n\n- [A route planner that helps you get home earlier](route-planner.md)\n- [A calling desk with an AI colleague](calling-desk-collaborator.md)\n- [A language-practice app with an AI teacher](language-practice-teacher.md)\n- [An AI-operated audio workshop](audio-workshop.md)\n- [A tabletop adventure with an AI game master](tabletop-game-master.md)\n\nThe [photo-to-report desk](../desktop/ai-photo-report-desk.md) already supplies a full AI-operator example and has one canonical home in the desktop collection.\n\nThe [BYOK chat app](../desktop/byok-chat.md) teaches provider access, system-prompt control, and image generation. It also has one canonical home in the desktop collection.\n\nThese are instructions for projects you can build with your coding agent.\n"
    },
    {
      "path": "ai-apps/route-planner.md",
      "text": "# A route planner that helps you get home earlier\n\nBuild a native Tauri application for someone whose work takes them to several places in a day. Give their existing coding agent proper tools to plan that work alongside them. Build it extremely well: the benefit is less time driving, appointments kept, and an earlier return home. Follow the [shared launch](../shared/launch.md).\n\nDiscover the kind of visits the person makes and the area they cover. Prepare a fictional set of stops with enough real-world variety to demonstrate a useful working day. If they already use the [calling desk](../desktop/calling-follow-up-desk.md), carry its agreed visits into planning with their context intact.\n\n## Plan the work the journeys serve\n\nLet the person supply places, expected visit lengths, opening hours, appointment windows, and the practical commitments that determine where they can go. Include the beginning and end of the day, breaks, and priorities that matter to this job. Make uncertain locations or missing information easy to resolve.\n\nPresent the stops on a useful map and as a legible schedule. Show travel, work, waiting, and the expected return time. A fixed appointment, a flexible visit, and a proposed arrangement should have recognizable meanings.\n\nLet the person move a stop, fix an appointment in place, change a duration, or explain a preference in ordinary language. Both direct changes and agent actions should update the same plan.\n\n## Give the agent the information and tools to improve it\n\nUse calculated road travel times and distances to evaluate candidate plans. Keep a reusable travel-time matrix where it serves this workload, with enough source context to understand what the estimates represent. Choose suitable routing and mapping services or local software for the person's area and resources; handle their setup as part of the build.\n\nGive the existing agent access to the current stops, constraints, selected plan, travel calculations, and meaningful operations for proposing, evaluating, and applying changes. Reuse its established installation and account. Make it a native collaborator in the app.\n\nLet the agent explore useful alternatives autonomously within the person's direction. It can compare a geographically tidy route with one that fits a difficult appointment and avoids an hour of waiting. Have it surface consequential compromises, including a day that cannot accommodate every requested visit.\n\nKeep the calculation and the judgment inspectable. A map should show the chosen journey; the explanation should tell the person why that journey serves their working day. Label estimated travel appropriately, including whether current traffic informed it.\n\n## Handle the day changing\n\nA customer cancels, a visit runs long, or the person finishes early. Let them record what actually happened and ask for a revised remainder of the day. Preserve completed visits and commitments already made while the agent works from their current position and situation.\n\nKeep candidate alternatives distinct from the selected plan. Support a useful return to an earlier plan, and make changes to externally agreed appointments explicit. The person should be able to send the next destination to navigation without losing the schedule here.\n\n## Deliver a day someone can use\n\nComplete the installed app, routing setup, agent connection, and ownership arrangements. Work through the example day, compare alternatives, change an appointment directly, and have the agent revise the remaining work. Judge the resulting schedule against the actual constraints and explain any unresolved tradeoff.\n\nTeach the division of labor through this experience: software calculates journeys; AI reasons about what makes a good day of work. A later phone connection can bring current progress and traffic information into that same planning process while the person is away.\n"
    },
    {
      "path": "desktop/calling-follow-up-desk.md",
      "text": "# Build a calling and follow-up desk\n\nBuild a native Tauri application for someone who works through a list of people or businesses by phone. Give them a comfortable place to make calls, record what happened, and keep track of what they promised. Build it extremely well. An explicit framework preference from the person takes precedence over Tauri.\n\nRead this brief and follow the [shared launch](../shared/launch.md). Use the person's existing setup and carry the project through an installed application they can use for their next calling session.\n\n## Learn the calling job\n\nAsk what the calls are meant to accomplish and look at a sample of the list they already use. They might arrange visits, confirm bookings, follow up on estimates, or contact members of a club. Find out what they need to know before dialing, what information they collect, and what happens after a successful conversation. Use a fictional sample when their real list is sensitive.\n\nShape the desk around that job. Someone arranging visits needs contact details, availability, appointment information, and instructions for finding the entrance. Someone following up on estimates needs the estimate and its history. Build a complete working experience for the person's actual purpose, with fields and language they recognize.\n\n## Stay with the conversation\n\nThe person conducts the calls. Keep the number, the appropriate contact, relevant notes, and the previous conversation easy to see together. Make recording an outcome quick enough to do while the conversation is still fresh. Support notes in the person's own words alongside the information they need to track consistently.\n\nImagine calling a business, learning that the person you need works afternoons, and agreeing to call back on Thursday. On Thursday, the desk should bring that commitment back with enough context to continue naturally. A later successful call updates the current situation while retaining the earlier attempt. A wrong number, an unanswered call, and a request to stop calling have different consequences; reflect the distinctions the person's work actually uses.\n\nLet them decide whom to call next, see due follow-ups, search for a returning caller, and temporarily leave the list to handle an interruption. Returning to the application should make it easy to resume. Make appointments, promised actions, and completed work distinguishable, including when a previous arrangement changes.\n\n## Bring the spreadsheet along\n\nImport the XLSX files they receive and help them match the existing columns to the application's information. Show a useful preview so they can recognize their records and notice a mismatched column before accepting an import. Keep details such as phone numbers and reference codes intact.\n\nGive repeat imports a clear meaning: adding new work, updating an existing list, or starting a separate batch. Preserve each record's identity and call history as the list evolves. The person can correct a match when two entries look similar.\n\nExport the information back to an ordinary XLSX file in a form useful to the person receiving it. Retain the extra information the caller collected. A colleague who still works in Excel should be able to understand the result. Keep saved work and recoverable backups under the person's control, using the ownership guidance in the shared launch.\n\n## Make a real calling session easier\n\nGive the interface enough information to support a conversation without making the person hunt through a dashboard. Consider readable notes, keyboard use, and the ability to move between the day's work and one contact's history. Let the real session determine which actions deserve immediate access.\n\nComplete an end-to-end rehearsal with representative records: import a list, record several different outcomes, change an arrangement, return to a due callback, and export the updated work. Help the person judge whether the desk reduces their effort and preserves everything they need after an interruption.\n\nThrough that experience, explain how records, history, and future commitments differ. They should leave knowing how to ask for a change in their working process, even if they never learn the names of the underlying code.\n\nA later project can give this desk an AI colleague, a phone companion, or shared work between callers. Preserve the established records and history as those capabilities arrive. This first application should already make a day's calling substantially better.\n"
    }
  ]
}