Wingman

Inspiration

Dating apps have made meeting people easier, but we felt like they also made people harder to understand.

Most dating apps ask you to reduce yourself to a few photos, prompts, and a short bio. You end up trying to perform the version of yourself that you think other people will like, while everyone else is doing the exact same thing.

We wanted to try the opposite approach.

What if you could just talk to an AI that actually got to know you, and instead of making you swipe through hundreds of profiles, it could talk to other people's AIs and figure out who you might genuinely get along with?

That idea became Wingman.

What We Built

Wingman is an AI dating agent that talks to other people's AI dating agents.

Instead of filling out a traditional dating profile, you talk to your Wingman about yourself: what you're into, what a good Saturday looks like, what you're looking for, your preferences, and your dealbreakers.

Your Wingman remembers these things and uses them when looking for potential matches.

When it finds another Wingman that seems promising, the two agents start a conversation. They compare interests, personalities, lifestyles, and preferences to figure out whether their humans might actually get along.

The agents don't immediately reveal everything about their users either. Information is divided into four levels:

Public → Personal → Logistics → Identity

For each level, the user can choose free, ask, or never.

For example, if someone says "never share my employer," Wingman shouldn't just block the word employer. It should understand that the user's employment information is private and prevent that information from being revealed.

Once the agents have learned enough and find a potential connection, they can coordinate availability using information the users have allowed them to access. Then the agents step back and let the two people take it from there.

How We Built It

The project is built around a TypeScript MCP server that acts as the communication layer between the agents.

We ran two separate TrueFoundry agent instances on two different laptops, with a Cloudflare Tunnel allowing the machines to communicate with each other.

We built 14 tools that give the agents controlled capabilities, including communicating with the other agent, accessing approved information, managing consent, and progressing the matchmaking conversation.

A major part of the architecture was making sure the agents couldn't simply ignore the user's privacy settings. The permissions are enforced at the tool and authentication level rather than relying only on prompts telling the model what it should or shouldn't do.

The Biggest Challenge

The biggest challenge we faced was memory.

At first, the agent could remember everything within its current conversation, but once that context disappeared, it was basically starting over.

We could spend 20 minutes explaining someone's personality, preferences, and what they're looking for, reload the page, and suddenly the Wingman acted like it had never met them.

For a normal chatbot, that might be annoying.

For Wingman, it completely breaks the concept. The entire point is that your agent is supposed to know you well enough to represent you.

We honestly thought solving this was going to become a huge engineering problem.

Instead, we used TrueFoundry's persistent memory to save the important parts of a user's profile and bring them back into future conversations. That meant the user's preferences could survive reloads and new conversations instead of living only inside the current context.

We went from thinking we had built a wingman with amnesia to actually having an agent that could remember its person.

Another Challenge: Making Consent Actually Matter

We didn't want consent to just be a checkbox in the UI.

We tested the same two agents multiple times while changing only what information they were allowed to share.

When everything was approved, the agents could eventually coordinate something specific like:

"Wednesday at 7:30, secondhand bookshop then a drink."

When certain information was restricted, the agent had to stay more general:

"Keeping the sharper specifics private for now."

The conversation still worked. The agent didn't crash or try to work around the restriction. It simply continued while respecting the boundary.

Seeing the exact same agents produce different outcomes based only on the permissions we gave them was one of the most rewarding parts of building Wingman.

What We Learned

The biggest thing we learned is that building an autonomous agent isn't just about making the model capable of doing more things.

It's about deciding what it is allowed to do on your behalf.

Memory became just as important as intelligence because an agent can't represent you if it doesn't remember you.

Consent also became much more complicated once the agent was actually communicating with another person's agent. It's not enough to say "don't share private information." You have to define what counts as private, when information can be revealed, and what the agent should do when it isn't allowed to reveal something.

We also learned how different two agents can behave when their permissions change, even when everything else stays the same.

That made Wingman feel less like a traditional dating app and more like an experiment in how autonomous agents could represent people while keeping the people in control.

What We Built With

  • TypeScript
  • MCP
  • TrueFoundry
  • Cloudflare Tunnel
  • Persistent agent memory
  • 14 custom tools
  • Two independent agents running on separate machines

Wingman started as a simple question: what if your AI could be your wingman instead of another dating app algorithm?

By the end of the hackathon, we had two agents actually talking to each other, remembering their users, respecting consent boundaries, and deciding when a conversation was worth handing back to the humans.

Built With

  • agentic-ai
  • agents
  • ai
  • ai-memory
  • api
  • artifical
  • cloudflare
  • consent
  • dating
  • matchmaking
  • mcp
  • memory
  • open-source
  • persistent-memory
  • privacy
  • relations
  • social
Share this project:

Updates