[Consulting] How to use Neo4J properly in my Bot?

Hello!
I will try to explain as much as I can what am I trying to create and maybe you could help me understand how, and should, I use Neo4J for this.

The Bot:
The idea is a matching bot based on contacts.
User should sign in via telegram, and also share contacts.
Each user can register as "Passive" "Active" user - the passive will wait for match and active users will have notification every few days for relevant optional matches.

Each user should add many fields and information, and the relations should be as followed:
If user share a contact they will have a bi-directional relation of "contact", and also "friend-with".
(if the contact is already a node in the graph will connect, otherwise will create a node of type "contact").

And the idea is to find for any active node the following:
All the contact of my friends that are passive lookers + all the contacts of the contacts of my friend that are passive lookers.
Meaning second and third degree relation.

So I wanted to know, does Neo4J could be reliable to act like a live DB? Meaning it get's updated and grow all the time.
What is the best practice to work with it in python?
Should I save all the users data in the Nodes? or split to two DBs?
Should there be any abstraction layers? object to wrap the graph?
Can it be transactional?

Hi @jamesgoldman140,

Welcome to the community. There's quite a few questions here and if I'm following what you're trying to build, you're probably going to want to use a mix of technologies. But assuming you're not already at scale I'd recommend spinning up a single db instance and trying out a few different queries using either the native python driver or Neomodel to get a stronger grasp of how a graph db will best help your scenario.

If using the native driver, I recommend using this new experimental API which will get you up and running faster: v5.5.0 - Feedback wanted on `execute_query` 📣 · neo4j/neo4j-python-driver · Discussion #896 · GitHub

Neomodel is a community OGM with an additional Django variant that may also be useful: GitHub - neo4j-contrib/neomodel: An Object Graph Mapper (OGM) for the Neo4j graph database.