|
| 1 | +# SpokeToWork |
| 2 | + |
| 3 | +> Track companies and generate optimized bicycle routes for in-person job hunting |
| 4 | +
|
| 5 | +--- |
| 6 | + |
| 7 | +## Problem Statement |
| 8 | + |
| 9 | +A job seeker in a small city (Cleveland, TN) wants to conduct in-person job applications efficiently. Visiting companies by bicycle requires planning optimal routes to minimize travel time and physical effort. Currently, there's no easy way to: |
| 10 | + |
| 11 | +1. Track which companies to visit and their application status |
| 12 | +2. Verify and manage company location coordinates |
| 13 | +3. Group nearby companies into logical geographic clusters for single-trip visits |
| 14 | +4. Generate optimized multi-stop bicycle routes |
| 15 | +5. Export routes to mobile devices for field use |
| 16 | + |
| 17 | +## User Profile |
| 18 | + |
| 19 | +- **Primary User**: Individual job seeker |
| 20 | +- **Mode of Transport**: Bicycle (affects routing preferences - bike-friendly roads, avoid highways) |
| 21 | +- **Geographic Scope**: ~10 mile radius from home address |
| 22 | +- **Technical Comfort**: Comfortable with web interfaces and mobile map apps |
| 23 | + |
| 24 | +## Core Workflows |
| 25 | + |
| 26 | +### 1. Company Management |
| 27 | + |
| 28 | +The user needs to maintain a list of companies they intend to visit or have visited. |
| 29 | + |
| 30 | +**Required Information per Company**: |
| 31 | + |
| 32 | +- Company name and contact details (name, title, phone, email, website) |
| 33 | +- Physical address |
| 34 | +- Geographic coordinates (latitude/longitude) |
| 35 | +- Application status tracking (not contacted → contacted → follow-up → meeting → outcome) |
| 36 | +- Priority level |
| 37 | +- Notes and follow-up dates |
| 38 | +- Route assignment (which geographic cluster) |
| 39 | +- Active/inactive flag (still pursuing or not) |
| 40 | + |
| 41 | +**Actions**: |
| 42 | + |
| 43 | +- Add new companies manually |
| 44 | +- Edit company information |
| 45 | +- Delete companies |
| 46 | +- Bulk import from spreadsheet data |
| 47 | +- Export data for backup or sharing |
| 48 | +- Filter and search companies |
| 49 | + |
| 50 | +### 2. Address Geocoding |
| 51 | + |
| 52 | +Company addresses must be converted to coordinates for mapping and routing. |
| 53 | + |
| 54 | +**Requirements**: |
| 55 | + |
| 56 | +- Convert street addresses to latitude/longitude coordinates |
| 57 | +- Handle addresses that fail automatic geocoding (manual coordinate entry) |
| 58 | +- Validate coordinates are within reasonable geographic bounds |
| 59 | +- Visual verification of coordinates on a map (catch geocoding errors) |
| 60 | +- Bulk geocoding for efficiency |
| 61 | + |
| 62 | +### 3. Geographic Clustering |
| 63 | + |
| 64 | +Companies should be grouped into route clusters based on geographic proximity. |
| 65 | + |
| 66 | +**Requirements**: |
| 67 | + |
| 68 | +- Define a home location as the start/end point for all routes |
| 69 | +- Automatically assign companies to geographic clusters (routes) |
| 70 | +- Clusters should be based on: |
| 71 | + - Distance from home |
| 72 | + - Directional bearing (north, east, southwest, etc.) |
| 73 | + - Natural geographic groupings |
| 74 | +- Support 5-10 route clusters with descriptive names |
| 75 | +- Allow manual override of automatic assignments |
| 76 | +- Handle companies outside normal range ("extended range") |
| 77 | + |
| 78 | +**Cluster Characteristics**: |
| 79 | + |
| 80 | +- Each cluster should be completable in a single trip |
| 81 | +- Clusters should minimize backtracking |
| 82 | +- Nearby companies should be in the same cluster |
| 83 | + |
| 84 | +### 4. Route Generation |
| 85 | + |
| 86 | +Given a set of companies to visit, generate an optimized travel route. |
| 87 | + |
| 88 | +**Requirements**: |
| 89 | + |
| 90 | +- Start and end at home location |
| 91 | +- Visit all selected companies in optimal order (minimize total distance) |
| 92 | +- Use bicycle-appropriate roads and paths |
| 93 | +- Calculate total distance and estimated travel time |
| 94 | +- Support selecting companies by: |
| 95 | + - Geographic cluster (route) |
| 96 | + - Manual selection |
| 97 | + - Active/priority status |
| 98 | + |
| 99 | +### 5. Route Export |
| 100 | + |
| 101 | +Routes must be usable in the field on mobile devices. |
| 102 | + |
| 103 | +**Export Formats**: |
| 104 | + |
| 105 | +- Interactive map viewable in web browser |
| 106 | +- GPS file importable to cycling/navigation apps |
| 107 | +- Printable summary with company details and addresses |
| 108 | + |
| 109 | +### 6. Field Operations Support |
| 110 | + |
| 111 | +While visiting companies, the user needs reference materials. |
| 112 | + |
| 113 | +**Requirements**: |
| 114 | + |
| 115 | +- Printable "field sheet" with company details for the day's route |
| 116 | +- Quick status updates (mark as visited, add notes) |
| 117 | +- View route progress |
| 118 | + |
| 119 | +## Data Requirements |
| 120 | + |
| 121 | +### Single Source of Truth |
| 122 | + |
| 123 | +- All company data should live in one authoritative location |
| 124 | +- Changes should be tracked/auditable |
| 125 | +- Data should be exportable and human-readable |
| 126 | + |
| 127 | +### Data Integrity |
| 128 | + |
| 129 | +- Prevent data loss from concurrent edits |
| 130 | +- Support undo/recovery from mistakes |
| 131 | +- Validate data on entry (coordinates in valid range, required fields present) |
| 132 | + |
| 133 | +### Privacy |
| 134 | + |
| 135 | +- Data is personal/private (single user) |
| 136 | +- No cloud sync required initially |
| 137 | +- User controls their own data |
| 138 | + |
| 139 | +## User Interface Requirements |
| 140 | + |
| 141 | +### Company Management View |
| 142 | + |
| 143 | +- Spreadsheet-like interface for efficient bulk editing |
| 144 | +- Sort and filter by any column |
| 145 | +- Visual indicators for status, priority, route assignment |
| 146 | +- Checkbox selection for bulk operations |
| 147 | + |
| 148 | +### Map View |
| 149 | + |
| 150 | +- Display companies as markers on a map |
| 151 | +- Color-code by route/cluster assignment |
| 152 | +- Show generated route paths |
| 153 | +- Click markers for company details |
| 154 | + |
| 155 | +### Route Controls |
| 156 | + |
| 157 | +- Quick toggle: include/exclude companies from route generation |
| 158 | +- Filter view by route/cluster |
| 159 | +- One-click route generation for a cluster |
| 160 | +- Preview route before export |
| 161 | + |
| 162 | +## Constraints |
| 163 | + |
| 164 | +### Geographic |
| 165 | + |
| 166 | +- Optimized for small city/suburban area (~20 mile diameter) |
| 167 | +- Bicycle routing (not car-optimized) |
| 168 | +- Single home location as hub |
| 169 | + |
| 170 | +### Scale |
| 171 | + |
| 172 | +- Target: 50-200 companies |
| 173 | +- Target: 5-10 route clusters |
| 174 | +- Single user (no multi-user/collaboration initially) |
| 175 | + |
| 176 | +### Offline Capability |
| 177 | + |
| 178 | +- Route exports must work offline (for field use) |
| 179 | +- Core data management can require connectivity |
| 180 | + |
| 181 | +## Success Criteria |
| 182 | + |
| 183 | +1. **Efficiency**: User can plan a day's route in under 5 minutes |
| 184 | +2. **Accuracy**: Geocoded coordinates are verifiably correct |
| 185 | +3. **Usability**: Routes are practical for actual bicycle travel |
| 186 | +4. **Reliability**: No data loss, changes are tracked |
| 187 | +5. **Portability**: Routes work on standard mobile map/GPS apps |
| 188 | + |
| 189 | +## Out of Scope (Future Considerations) |
| 190 | + |
| 191 | +- Multi-user/team collaboration |
| 192 | +- Automatic company discovery/import from business directories |
| 193 | +- Integration with job application platforms |
| 194 | + |
| 195 | +## Glossary |
| 196 | + |
| 197 | +- **Route/Cluster**: A geographic grouping of companies that can be visited in a single trip |
| 198 | +- **Geocoding**: Converting a street address to latitude/longitude coordinates |
| 199 | +- **TSP (Traveling Salesman Problem)**: The optimization problem of finding the shortest route visiting all points |
| 200 | +- **Field Sheet**: Printable reference document for use while visiting companies |
| 201 | +- **Home Location**: The user's starting point for all routes (typically their residence) |
0 commit comments