Inspiration
Getting across San Francisco shouldn’t require opening six apps. The cheapest ride changes constantly, and sometimes a bike or transit is a better choice than a car.
We built Parker around a simple idea: tell your personal agent where you want to go, and let it handle the comparison. Transportation should start with your destination.
What it does
Parker is a transportation agent you can text through WhatsApp, iMessage, or SMS. Send a destination, share a location, or leave a voice note, and Parker compares Uber, Lyft, Waymo, Bay Wheels, Lime, and public transit.
It returns ranked options with prices, pickup times, route maps, and links to book. It considers your preferences, group size, and weather when comparing options. You can save home and work addresses, repeat a trip, plan a return journey, or ask Parker to notify you when a price drops below your budget.
Each price is labeled as live, calculated from published rates, or estimated, so you know what you’re comparing.
How we built it
We built the dashboard with React and Vite, and used Supabase for authentication, Postgres storage, encrypted credentials, and backend Edge Functions.
OpenAI handles conversational requests and calls transportation tools. A shared agent powers WhatsApp through Kapso and iMessage/SMS through Sendblue, keeping the trip logic consistent across channels.
Provider adapters combine public bike and scooter feeds, routing services, fare models, and connected-account integrations. We built a Playwright worker for Uber’s web flow and investigated Lyft’s authentication and quote requests to support account-specific prices.
We also exposed ride comparisons through MCP so other assistants can use Parker’s tools.
Challenges we ran into
Transportation providers offer very different levels of access. Public feeds made bike availability accessible, while rideshare pricing required working through authentication, session renewal, browser automation, and compressed binary requests.
Comparing those results fairly was another challenge. A live rideshare quote, a published bike rate, and an estimated scooter fare have different levels of certainty. We had to preserve those distinctions throughout the comparison.
Connecting everything also surfaced practical deployment issues: missing migrations, backend secrets, and CORS headers could interrupt an otherwise working login flow.
Accomplishments that we're proud of
We brought six transportation providers into one conversational experience, including bikes, scooters, and transit alongside rideshare.
We completed an API-only Lyft login and authenticated quote test, built connected-account infrastructure, and created a shared agent that works across multiple messaging channels.
We’re especially proud of the details that make Parker useful beyond a single comparison: price watches, repeat trips, pickup locations, personal preferences, and clear price-source labels.
What we learned
The hardest part of a personal agent is making its actions dependable across external systems. Understanding a request is only the beginning; authentication, incomplete data, changing prices, and recovery paths determine whether the experience works.
We also learned how much information a transportation decision needs beyond price. Walking to a pickup, finding an available bike dock, traveling with friends, or riding in bad weather can change the best option.
What's next for Parker
We want to make connected-account integrations more reliable, expand live pricing coverage, and validate them across more users.
Next comes more dependable booking automation, stronger price-change handling, and proactive suggestions for recurring trips. We also want to expand beyond San Francisco while keeping the experience simple: tell Parker where you’re going, and get useful options in the conversation you already have open.
Built With
- python
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.