About this job
<div>
<div>
<h3><span data-contrast="auto">Ready to be part of the Legal Tech revolution?</span><span data-ccp-props="{}"> </span></h3>
</div>
<div>
<p><strong><span data-contrast="auto">Vision:</span><span data-ccp-props="{}"> </span></strong></p>
</div>
<div>
<p><span data-contrast="auto">As a leading software-as-a-service (SaaS) provider, DiliTrust is a global company dedicated to offering an integrated suite of legal and governance products. Our vision is to digitize legal departments worldwide. With an annual growth rate of over 40% since 2020, our ambition is to become the world's leading Legal Tech company, aiming for a valuation exceeding $1 billion by 2026.</span><span data-ccp-props="{}"> </span></p>
</div>
<div>
<p><strong><span data-contrast="auto">Our Impact:</span><span data-ccp-props="{}"> </span></strong></p>
</div>
<div>
<p><span data-contrast="auto">From generating General Meeting reports to leveraging AI-assisted contract lifecycle management, our teams in our 8 offices across France, the US, Mexico, MEA, Germany, Spain, Italy, and Canada are the driving force behind our global success. We proudly support 2,400 customers in 64 countries, with 80% of our clientele comprising listed companies in major markets such as Europe, North America, and the Middle East.</span><span data-ccp-props="{}"> </span></p>
</div>
<div>
<p><strong><span data-contrast="auto">Our Recognition:</span></strong><span data-ccp-props="{}"> </span></p>
</div>
<div>
<p><span data-contrast="auto">DiliTrust has been at the forefront of Legal Tech innovation, being the first Legal Tech with AI features since 2022. The company is renowned for providing a positive and entrepreneurial work environment. We are honored to have received the "Happy at Work" and "Tech at Work" labels every year since 2019.</span><span data-ccp-props="{}"> </span></p>
</div>
</div>
<div>
<div>
<h3><span data-contrast="auto">The Role:</span></h3>
</div>
<div>
<p><span data-contrast="auto">Lini is DiliTrust's proprietary AI engine, powering Ask Lini, Risk Detector, Document Summarization, Minute Generation, and every AI capability across the suite. </span></p>
<p><span data-contrast="auto">We are building a dedicated squad around it and are looking for a strong Software / Product Engineer, with a focus our platform architecture, to help us bring it to the next level.</span><span data-ccp-props="{}"> </span></p>
</div>
<div>
<p><span data-contrast="auto">As a Software Engineer work at the intersection of AI, product, and engineering. You will contribute to building, improving, and scaling the features that make Lini a reliable and powerful AI layer across the entire DiliTrust suite.</span><span data-ccp-props="{}"> </span></p>
</div>
<div>
<p><span data-contrast="auto">We are looking for an engineer who writes clean, production-ready code and is comfortable taking ownership of features end-to-end, from technical design to deployment. We also care about how you think about AI: whether you bring genuine curiosity to the product, and whether you can translate a model capability into a great user experience.</span><span data-ccp-props="{}"> </span></p>
</div>
<hr data-line="44">
<h2 data-line="46" id="missions">Missions</h2>
<ul data-line="48">
<li><strong>Write specifications as the durable asset of the project.</strong> Executable acceptance criteria, and — crucially — the non-functional requirements that specs almost never carry: data classification, endpoint × role authorization matrix, volumetry assumptions, latency and throughput budgets. These are the requirements whose later correction is superlinear, so they get decided before generation, not after.</li>
<li><strong>Freeze the contracts before any fan-out.</strong> API schemas, types, module boundaries, invariants. Agents do not negotiate an interface in the hallway: each will make a plausible and incompatible assumption, discovered at integration.</li>
<li><strong>Pilot coding agents with a tight brief and a bounded context</strong> — narrow tasks, defined input and output artifacts, explicit stop conditions and budgets, full traceability of what produced each change.</li>
<li><strong>Keep producer and verifier separate.</strong> You do not sign off alone on generation you piloted, and you act as independent verifier on your peers' slices — with an adversarial brief ("find what breaks against this spec"), never "confirm this looks fine".</li>
<li><strong>Build the asymmetric gates that make the slice safe at volume</strong> — expensive to satisfy, cheap to check: property tests, contract tests, query-count and allocation budgets, execution-plan checks, policy-as-code, backward-compatibility proofs. Written <em>before</em> the implementation exists, so the agent closes the feedback loop itself without consuming human attention.</li>
<li><strong>Use code reading as a calibration instrument, not as a gate.</strong> Sample deliberately, by risk zone, to measure the real defect rate of the generator-plus-gates pair and to keep the team's mental model of its own system alive.</li>
<li><strong>Keep work-in-progress low.</strong> Capped PR size, thin vertical slices, trunk-based with very short branches, feature flags over long-lived branches, CI as the agent's first task rather than its last. More features in flight does not mean faster delivery when the bottleneck is verification.</li>
<li><strong>Design for blast radius.</strong> Reversibility, progressive delivery, structured logs, traces, metrics and instrumentation generated as a matter of course. On many paths, detecting in five minutes beats three days of review that prevents nothing.</li>
</ul>
<hr data-line="59">
<h2 data-line="61" id="requirements">Requirements</h2>
<p data-line="63"><strong>Being based in France with full working rights.</strong> <strong>Fluent in French and English.</strong></p>
<p data-line="66"><strong>Experience & Seniority:</strong></p>
<ul data-line="68">
<li>8+ years of professional software engineering experience, with a significant portion spent building and operating B2B SaaS platforms in production</li>
<li>Proven ownership of features across their full lifecycle — design, delivery, iteration, maintenance — on long-lived, multi-year products</li>
<li>Strong background in complex, scalable web architectures, including real modularity: you have seen where coupling stops parallel work dead</li>
</ul>
<p data-line="72"><strong>AI-Native Practice:</strong></p>
<ul data-line="74">
<li>Demonstrated, sustained use of coding agents in production work — not autocomplete, but delegated implementation with review and accountability</li>
<li>A concrete, articulated view of where generated code fails: correlated defects rather than idiosyncratic ones, uniform surface quality that destroys the usual "look here" review signals, plausibility with no author to interrogate</li>
<li>Comfort being accountable for code you did not author, and the discipline to refuse a change you cannot explain</li>
</ul>
<p data-line="78"><strong>Verification & Quality:</strong></p>
<ul data-line="80">
<li>Real fluency in property-based testing, contract testing, and deriving tests from the specification rather than from the code</li>
<li>Test-data strategy, including maintaining a volumetrically representative dataset as part of the verification apparatus — not a nice-to-have</li>
<li>Instinct for the difference between a rigorous check and a <em>scalable</em> one: does the cost of checking grow with the volume produced?</li>
</ul>
<p data-line="84"><strong>Security & Performance (non-negotiable on this role):</strong></p>
<ul data-line="86">
<li>Authorization modelling in multi-tenant systems, and why declarative, centrally enforced authorization beats reviewing each endpoint. Generated code reliably checks <em>who</em> you are and regularly forgets <em>whether you are allowed</em></li>
<li>Awareness of the attack surface specific to an agent-assisted pipeline: prompt injection through ticket descriptions, code comments and dependency READMEs; supply-chain risk on hallucinated package names; least privilege for non-human identities; and the most frequent risk of all — production data or proprietary code leaking into the development loop</li>
<li>Performance as a measured number rather than a code-reading opinion: query budgets per HTTP request, N+1, unbounded result sets, missing indexes on new query paths, network calls in loops, execution-plan review. These are invisible at test-data scale and expensive in production</li>
</ul>
<p data-line="90"><strong>Product & Team Collaboration:</strong></p>
<ul data-line="92">
<li>Excellent written communication — specification writing is now a core engineering skill on this role, not documentation overhead</li>
<li>Extensive experience working directly with product managers, designers and stakeholders in a product-oriented setup</li>
<li>Strong sense of ownership and sound judgment on risk: what to build, what not to build, what residual risk is acceptable and why</li>
</ul>
<p data-line="96"><strong>Education:</strong></p>
<ul data-line="98">
<li>Master's degree in Engineering or equivalent practical experience in senior SaaS environments</li>
</ul>
<hr data-line="100">
<h2 data-line="102" id="what-this-role-is-not">What this role is not</h2>
<p data-line="104">We would rather say it up front:</p>
<ul data-line="106">
<li>It is not a prompt-engineering role, and it is not an ML/LLM research role.</li>
<li>It is not a role where green tests are sufficient evidence. On security and performance, "the spec is met and the tests pass" is not a weak signal — it is a null one.</li>
<li>It is not a ticket queue. The profile that shrinks in an AI-native team is the one whose value was implementing assigned tickets between two boundaries.</li>
</ul>
<hr data-line="110">
<h2 data-line="112" id="our-tech-stack">Our Tech Stack</h2>
<ul data-line="114">
<li><strong>Backend:</strong> Node.js / TypeScript</li>
<li><strong>Frontend:</strong> Vue.js 3</li>
<li><strong>Database:</strong> PostgreSQL, MariaDB</li>
<li><strong>DevOps:</strong> Docker, Kubernetes, Terraform</li>
<li><strong>Cloud:</strong> GCP</li>
</ul>
<p data-line="120"><strong>Engineering apparatus you will use and help build:</strong> coding agents orchestrated deterministically in CI, aspect-scoped verification agents (authorization, performance, spec conformance, dependencies), policy-as-code, property-based and contract testing, volumetric test datasets, load and endurance gates on critical paths, feature flags, progressive delivery and end-to-end tracing.</p>
<hr data-line="122">
<h2 data-line="124" id="what-we-offer">What we offer</h2>
<ul data-line="126">
<li>Join a fast-growing company in a friendly, international environment — engineering primarily in Paris, with further engineering presence in Berlin, Montreal and Wilmington (DE), and offices across France, Italy, Spain, Germany, Canada, the USA, Mexico and Dubai;</li>
<li>Our "Remote Policy" guarantees that you can find the right balance between "Onsite" and "Remote";</li>
<li>Last but not least, all the day-to-day benefits of the CSE, luncheon vouchers, profit sharing bonuses, etc...</li>
</ul>
<hr data-line="130">
<h2 data-line="132" id="recruitment-process">Recruitment process</h2>
<ul data-line="134">
<li>Interview with a TA team member (30/45 mins)</li>
<li>Interview with the Engineering Manager (1h)</li>
<li>Technical interview (1h30) — two parts: turning an ambiguous requirement into a specification with executable acceptance criteria, then an adversarial review of an agent-generated diff against that specification</li>
<li>Interview with the CTO (45 mins)</li>
</ul>
<p> </p>
</div><p>Find more <a href="https://www.arbeitnow.fr/english-speaking-jobs">English Speaking Jobs in France</a> on Arbeitnow</a>