Inspiration
Over the summer, we carpooled to work with other interns. Creating multi stop ubers and making sure the fare was split across the right people was a PAIN
What it does
Always on AI agent that listens in on a group chat and responds to questions like “how much do i owe” or “uber today was $20, adrian and sam came.”
How we built it
The AI agent was built on ASI:One, and we integrated it with iMessage using Photon Spectrum. We use Notability to design and ideate. It was especially useful in the design process, when we had to decide which themes + sponsor tracks to participate in -> that helped us decide on our idea. We also use Notability as part of our presentation!
Challenges we ran into
Our biggest challenge was making one fare balance that the group could trust from two chats.
Who is speaking. Photon's shared-pool line only delivers one-on-one DMs, because a cloud group thread needs the Business plan. We sat the agent in this Mac's Messages account instead, then mapped phones to Adrian, Tessa, and John from contacts, a senders.json file, or one Adrian: line that the process remembers. (This is something we'd improve in future iterations, with the correct Photon Spectrum plan)
The model wanted to do the math. "I paid $48, Tessa and John rode" is easy to answer in prose and easy to get wrong on the next question. We decided to limit the model to structured actions (record_fare, record_payback, get_balance, rsvp, undo, clarify). We have our backend that splits calculations in integer cents, stores append-only events, and derives the nets. Then we use the model to bridge the gap between natural language texts and these structured actions.
Two doors, one tab. Spectrum and the Fetch.ai uAgent both call POST /act. ASI:One prepends @agent1q… before the message, so "Adrian:" is not at the start of the raw line. The agent seed is the identity on Agentverse; a new seed is a different agent. After a fare, the reply is text plus a detail card of the nets, and a later "what do I owe?" reads the JSON file, not the last sentence.
Accomplishments that we're proud of
We shipped the thing we actually needed last summer: a running net of who-owes-whom in the group chat.
- One backend ledger for the intern commute. Even split, payer included, remainder handled in cents. Tests lock the demo: Adrian pays $48 with Tessa and John → Tessa −$16, John −$16, Adrian +$32. Tessa pays Adrian $16 and only her side clears.
- After every fare or payback the chat repeats who paid, the riders, the even split, who owes whom, and the full running net. That confirmation is the UI. The group can see a wrong split and correct it in the same thread.
- The same loop runs in the Spectrum terminal, in the iMessage group, and in ASI:One. The Python agent speaks Agent Chat Protocol and does not split money. Fare and payback show up as an ASI:One detail card, and the balance survives a restart.
What we learned
An agent here is four steps: message, intent, ledger tool, confirmation. A chat reply that says "you owe $16" is not a balance. The file has to change, and the next question has to read that file. Identity was as much of the product as the dollars. Until a phone number is Adrian, Tessa, or John, the ledger cannot post a fare. Platform limits decided the demo: local Messages for the group, a mailbox uAgent for ASI:One, and a fixed seed so registration and the running process stay the same person. Keeping the scope to a tab, not a ride app, is what made the weekend finish. Booking, maps, and Venmo would have been a second product. The useful version is the one that remembers who rode today and who is still short.
What's next for Fareline
Keep it in the intern group chat next time we carpool, with more than three names and a sender map we do not have to teach by hand. Next we want a hosted ledger so the laptop does not have to stay awake for ASI:One, a Photon line that can join the group itself, and a short "settle up" nudge when someone is still negative at the end of the week. Splits stay even and in the thread. We'd also like to integrate Uber/Lyft so that Fareline can also check prices + book the car.
Table 82!
Built With
- asi:one
- notability
- photon
- python
- spectrum
- typescript
Log in or sign up for Devpost to join the conversation.