Getting an agent to draft an e-mail is easy. Getting it to send the right message to the right client at the right time, without ever promising something the company cannot deliver, is a real engineering problem — and that is the one we are offering. Subject for a pair of students.
Context
Client requests reach B2H through the website, e-mail and LinkedIn. Qualifying them, researching the company, following up at the right moment and preparing meetings take up a large share of the sales team's time. We already apply one principle in Ordy: the model proposes, ordinary deterministic code decides. This project brings that principle to the CRM, starting from the contact requests already stored in the B2H back-office.
What you will do
- Design a team of specialised agents: qualification, company research, follow-up, meeting preparation
- Orchestrate them as a graph (LangGraph), with explicit, testable transitions
- Give each client a long-term memory: a vector store for context, a knowledge graph for relationships
- Build a formal verification layer (state machine, business rules) that every action — e-mail, record update, quote — must pass before it runs
- Implement error recovery, run replay and human approval for sensitive actions
- Instrument everything with OpenTelemetry so each decision can be followed end to end
- Build the task benchmark used to evaluate the system
Technical challenges
- Making a system reliable when its components are inherently non-deterministic
- Coordinating several agents without loops, duplicates or contradictory actions
- Writing business rules strict enough to block invalid actions, yet loose enough not to block everything
- Observability: understanding why an agent did what it did
Deliverables
- A working prototype integrated into the B2H back-office, connected to the existing contact requests
- A CRM task benchmark and the corresponding evaluation results
- A specification of the verification layer (states, transitions, rules)
- Technical documentation and a demo
- The final-year report
Success criteria
- Task success rate measured on the benchmark built during the internship
- 100% of the benchmark's invalid actions blocked before execution
- Average cost per task measured and tracked
- Every executed action traceable from the original request to its effect
Tech stack
- LangGraph, tool-calling LLMs
- PostgreSQL + pgvector
- Next.js, TypeScript, Python
- OpenTelemetry
Who we are looking for
- Final-year engineering or master's students in software engineering or AI
- Solid Python or TypeScript
- A genuine interest in agentic systems and their reliability, not just in demos
- Rigour: tests, code review, a taste for precise specifications
- Fluent French and technical English
Practical details
- Duration: 4 to 6 months (February – June 2027, indicative)
- Supervised by the B2H engineering team, with a weekly check-in
- Integrated into the internal B2H platform (single identity, event bus, shared data)
- How to apply: CV + cover letter, at most 2 subjects per candidate
- Deadline: 15/12/2026

