Inspiration

The first idea was not this one.

We already had a restaurant reservation system running, so our first thought was simple: people close deals over a meal. Book the table, meet the person, shake hands. We wanted to build the tool for that.

While we were building it, we kept hitting a question we could not answer:

What happens before the dinner? How do you get the right person to agree to sit down with you in the first place?

That question was much bigger than the dinner. A founder looking for money, a company looking for a distribution partner, a team trying to hire, a fund with too many cold emails: they all have the same problem. They do not need another place to meet. They need to find the one person who can say yes, and a reason that person will listen.

So we changed direction. We kept the deal and dropped the restaurant.

We also had a second goal: we wanted it to feel like social media. Most business tools are useful but easy to forget. You open them once a month, when you remember they exist. Not many products have made this kind of work something people want to open every morning, so we decided to take that on. You open the app, and it already has something for you: new people, a reason they matter, and one action to take.

Before we wrote much code, we went to events and talked to founders, investors, operators and accelerator teams. Many of them asked when they could use it. Some asked to be first. That is when we stopped guessing and started building.

What it does

Deals On is an AI agent that works your network while you sleep.

You sign up, tell it what you are trying to do, and connect your inbox. Then:

  • Every night the agent looks through the network and ranks the people who fit your goal right now. Not a long list of profiles, but a short list with a reason for each person.
  • It finds someone who can introduce you. Instead of writing to a stranger, you see who you both know and who can connect you.
  • It learns how you work from your inbox. It only reads the headers, like who you talk to and how fast you reply. It never reads the text of your messages.
  • It writes the first message in your voice, based on the other person's real situation.
  • It follows the deal from the first match to the close and tells you whose turn it is.

One rule never changes:

It never sends anything without your word.

It is built for every side of the table: founders, investors, operators, hiring companies and accelerators. You choose your role when you sign up, and the agent works from there.

How we built it

The core of the product is GraphRAG.

A normal search matches words. That does not work here, because these two sentences mean the same thing:

  • "We invest in early stage AI"
  • "We back pre-seed machine learning teams"

A keyword search sees two different sentences. So we built a graph:

  • Nodes: people, companies, sectors, stages and regions
  • Links: what people said and what they actually did, each with a different level of trust
  • A map of 21 capabilities: it knows that "raise capital" and "invest capital" are two sides of one deal, and that "hire" and "looking for a job" are too

An introduction is a short path through that graph:

$$ \text{You} \;\rightarrow\; \text{someone you both know} \;\rightarrow\; \text{the person who can say yes} $$

That is why a match in the app says something like "2 hops via David Carter": the path has \( 2 \) steps, and every step is a real person.

When the agent explains a match, it takes real facts from the graph first, and only then asks the AI model to write the sentence. In simple form, the rule looks like this:

facts = graph.find_facts(you, person)

if not facts:
    return "No clear reason found."   # never make one up

return model.write_reason(facts)      # the model only uses real facts

The stack:

  • Next.js for the web app and the API
  • Postgres + pgvector for the graph and the AI search
  • LangGraph for the agent, with save points so a run can continue after a restart
  • Kotlin Multiplatform for mobile, so iOS and Android share the same business logic
  • Jetpack Compose on Android and SwiftUI on iOS
  • A separate background worker for the nightly work

We wrote tests while we built, not at the end. A feature is not done until its own tests pass.

Challenges we ran into

1. Teaching it to say "I do not know." Our first match explanations sounded great and were sometimes wrong. A confident but wrong sentence about someone you are about to email is worse than no sentence. We rebuilt it so explanations can only use facts the graph holds, and "I do not know" counts as a valid answer.

2. The app looked like it worked, but it did not. Sign-in worked. Onboarding saved. Every screen loaded without errors. But the matches were always empty. The phone saved the profile but never added the person to the graph, because the web app made one more call at the end of onboarding than the mobile app did. Nothing crashed, so there was nothing to chase. We only found it by testing on a real phone with the real server.

3. Privacy without making the product useless. Reading someone's inbox is the most valuable thing the product does, and the scariest thing we ask for. We use the smallest permission available: it gives us email headers only and cannot give us the message text.

4. Deciding where the AI stops. This was harder than any code. The agent finds, ranks, researches and writes drafts. It does not decide, and it does not send. If it sends one embarrassing message in your name, you will never trust it again.

Accomplishments that we're proud of

  • We changed direction early. We left our first idea as soon as we saw the bigger problem.
  • Real people asked for it first. People at events asked to use it before we had anything to show them.
  • The agent does not make things up. Every match reason comes from real facts, and when there is no fact, it says so.
  • One codebase for iOS and Android. Both apps share the same business logic.
  • Privacy by design. We learn how you work from your inbox without ever reading your messages.
  • You stay in control. Nothing is sent without your word.
  • Members shape the product. We integrated WishKit so anyone can submit a feature request, vote on others, and chat with us directly inside the app. When we ship something a member asked for, they receive 100 credits automatically.

What we learned

  • Changing direction early is cheap. We could have spent six months on the dinner product and learned the same lesson at the end.
  • The hardest part of an AI product is not making it smart. It is deciding what it is not allowed to do, and keeping to that.
  • A screen that loads is not a feature that works. Only testing on a real device with the real server tells you the truth.
  • Show real value early. Every step before someone sees a real result is a step where they can leave.

What's next for Deals On

  • Free credit packs for new users, so they can see what the agent does before they pay anything.
  • Reach more people with a clear go-to-market plan: partnerships with accelerators, investor groups and business communities.
  • Go to more events and show Deals On live, because people understand it best when they see it working.
  • Make it feel more like social media: new people, updates from your network, and something new waiting for you every morning.
  • Grow revenue. We believe this is a big market. Every founder, investor, business and hiring team needs the right people, and our goal is to turn that need into a large and growing business.

Try it: dealson.io

Built With

Share this project:

Updates

Submission history