Welcome! The Leadjet Software Engineer Handbook is where you will find all information relevant for Leadjet Software Engineers to better understand who we are, what we do, and how we do it.
This documentation is open to everyone in the team and in constant evolution. So please feel free to suggest improvements, ask questions or even directly edit the document if you find some errors!
- π What is Leadjet?
- π·Β Our Values
- π Product Vision
- π Missions
- π¬ Working with the Team
- With the Founders
- With the Marketing team
- With the Product Managers
- With the Design team
- With the Tech team
- ποΈ Tech Stack & Architecture
- Stack
- Architecture
- π» Development
- Tasks division
- Contributing to Leadjet
- Coding in the server
- Linters
- Coding in the extension
- Tests / Go
- Test Naming Convention
- Deployment
- Checking Build Version
- Support
- π Initial Setup
- π Where to go from here?
- Your first week
- Your first month
- βΉοΈ Where to ask for help?
- π Useful Links
π What is Leadjet?
Leadjet is the nΒ°1 tool salespeople need to use on LinkedIn for their sales activities. It lets them connect their CRM (Salesforce, Hubspot, Pipedrive or Copper) to LinkedIn through a simple browser extension. Leadjet makes it easy to create and enrich contacts, update their status and synchronize LinkedIn conversations - directly from a prospect's LinkedIn profile to the CRM in 1-click. No need to waste time on manual data entry. With Leadjet, salespeople are 4x faster when sourcing and save a minimum of 60 minutes of boring tasks per day.
π·Β Our Values
- Humility / No Ego: Everybody can learn from anybody. We are all humans after all. Be nice!
- Psychological safety: Failing is OK. We believe in trial and mistakes.
- Trust & Ownership: We take necessary time to build features. We donβt track time nor number of pull requests.
- No boring tasks: Variety creates balance.
- Learn & share knowledge
- Team spirit, cooperation & collaboration
π Product Vision
- Be the go-to solution for doing sales on LinkedIn and beyond
- Design a dead-simple UI / UX which can be used by any sales teams in the world
- Set the standard for simple, safe and healthy prospecting on LinkedIn
- Not an automation tool, save time when doing customized outreach and curated profiling
- No human explanation needed for understanding & using the product
- Connecting the dots to build powerful end-to-end integrations
- Embedded intelligence to eliminate manual tasks and provide additional sales insights

π Missions
As a developer, your mission is the following:
- Develop the new features of the product road-map
- Ensure the maintenance of the platform
- Contribute to the improvement of the existing features
- Follow software engineering best practices
- Contribute to the success of our early-stage company!
π¬ Working with the Team
Our Team has been remote from day-1. To keep the communication open and create synergies with the team and allow the teammates to report on their progress, we have put in place the following events:
π Weekly goal & achievement meeting every Monday
π Weekly dev check-points every Monday
You are also free to have calls with other developers for giving / asking for guidance, working on related tasks or even just chitchat.
As a developer, your relation with the rest of the team is outlined below
With the Founders
You work alongside the CTO (Romain), and will have regular meetings with him to touch on:
- Progress and potential obstacles
- Feature prioritization and time estimation
- Help needed and questions to ask
With the Marketing team
Product and marketing must be working hand in hand towards the same goal: making Leadjet successful. It is therefore crucial to keep the communication open between the tech and marketing team to touch on:
- New features explanation & demo
- Continuous feedback from the field
- Product strategy
- Brand positioning
With the Product Managers
Product Managers build the product's strategic vision, interpret and anticipate the needs of clients. They are responsible for prioritizing future work. Subject touched on:
- Features priority
- User feedback
- Roadmap
- Sprint planning
With the Design team
UI/UX being crucial while building an outstanding product, it is important that we, as developers, work closely with designers to make sure that their vision is implemented in the best way.
The design system currently being created and its implementation in Storybook will be the cornerstone of this collaboration.
With the Tech team
Among our fellow developers, we must keep the communication straight to maximize efficiency.
- Peer review
- Task division
- Progress update
- Friendly advice
- Experience sharing

ποΈ Tech Stack & Architecture
Stack
Leadjet uses multiple technologies under the hood:
- Chrome Extension: Typescript, Sass, React (Migration ongoing)
- Client admin dashboard: VueJS, Vuexy theme (here)
- Back-end: Golang, Echo framework
- Database: MongoDB, Redis
- Infrastructure: Ubuntu Linux (VPS), Caddy (reverse-proxy)
What are the HTML files and these weird .njk files ? - The HTML files are not actually HTML but strings to be parsed with underscore.js template function - The .njk files are using the Nunjucks templating system Both of these systems are currently being migrated to React
Architecture
The following diagram gives an overview of how Leadjet is built.
π» Development
Tasks division
Tasks are the basic currency when it comes to organizing the team around a common project.
- Tasks are prioritized and reported in Linear with dedicated technical specs.
- The tasks are assigned to one developer.
- Tasks are linked to branches and PRs in the Git repositories of the project, to enable accurate tracking of completion status :
At any time, if you need help, struggle to fix an issue, etc: stop and ask instead of wasting time.
Contributing to Leadjet
Here is the overall flow when it comes to contributing to the project:
- Open Linear to find what task is assigned to you with the most priority
- Open a branch with the exact name provided by Linear corresponding to the current task
- Create a Pull Request after your first commit with the following format: [LEA-XX] My Task
- After finishing development, ask for review from Github
- Wait for the code to be reviewed and the CI to run
- Adapt the code if necessary
Regularly rebase or merge your current branch on dev
(when possible) for easier merges.
For the extension, a basic CI (GitHub actions) checks the linting and pushes the new version to Google Chrome (when on master branch).
master
and dev
are protected branches.
Coding in the server
Most advised: VS Code with the Golang extension
Install gomon for automatic restart on save
We use Makefile for speed:
make env
sets required git config optionsmake watch
runs the code and auto restarts on savemake
builds the executable
Linters
We use golangci-lint
to run multiple linters (configured in .golangci.yml
file). Linting is done automatically by Github Actions for each new commit.
To integrate golangci-lint
to your development environment please follow steps in this page.
Itβs also possible to run linters manually with below command;
golangci-lint run
Coding in the extension
Make sure the linter is enabled on save (Prettier)
Run yarn lint
before commit
Tests / Go
We use these libraries:
- Gofakeit for fake data generation https://github.com/brianvoe/gofakeit
- Testify for easy asserts https://github.com/stretchr/testify
Test Naming Convention
Test<FuncName>
if function is simple, and everything is testable in one test e.g.TestNewContact
Test<FuncName>_<PropertyToTest>
if aProperty
requires a standalone test with multiple scenarios e.g.TestNewContact_Address
Test<FuncName>_<PropertyToTest>_<BehaviourToTest>
if aProperty
has aBehaviour
which requires another test e.g.TestNewContact_Address_RestrictedFields
Deployment
For the Extension code-base, when merged on master and pushed βsent for approval to Google
The CTO only can deploy the server on the production environment.
Checking Build Version
Leadjet API has an endpoint displaying the build info published at; https://api.leadjet.io/info
{
"version": "v1.1.5-0-g1f549669-dirty",
"time": "2022-05-09T09:42:55Z"
}
Itβs possible to get same build info using version
flag;
./leadjet-server --version
Version: v1.0.0-98-ga9c256df-dirty
BuildTime: 2022-05-10T06:21:25Z
Support
Support request can come at anytime, and be more or less prioritized given their criticality.
Slack channels for support exists#bug-report
, #feature-requests
and #customer-support
.
You will never be asked to do support directly but in times of critical need, your priorities might need to switch to the more urgent tasks.
We try to limit this switches to a minimum since losing focus has a cost but sometimes we have to put out fires!

π Initial Setup
- Make sure you have received an invitation to all following services that we rely on
- Access and pull the main code base Github repositories
- Make sure everything works.
- Create test accounts for every CRM we support
- Access founder's shared calendars (optional)
- Start your first mission π
first_name.last_name@leadjet.io
config.example
)π Where to go from here?
Your first week
- Meet the team in our Weekly Team Meeting and with 1-to-1 calls
- Participate to client demos to better understand the product
- Setup your development environment
- Learn your way into the code
- Understand how CRMs work
- Discover Linearβs task process
- Debrief your first assigned tasks
- Start with small tasks to get to know the code-base
- Ask questions
- Make your first commit
Your first month
- Get to know everyone in the team
- Gain confidence and knowledge about what you do
- Find your rhythm
- Perfect your knowledge of the product
- Start peer programming, coding with others
- Have regular chat with teammates about issues, suggestions, ...
- Understand where your strength are, where youβd like to improve and get involved more
- Start working on some more larger and more autonomous missions
- Participate in development checkpoints, report what you did, ask questions and help others
- Fix some bugs
- Formulate some ideas to improve our current stack / org / process / code
- Witness the first push of your code to production

βΉοΈ Where to ask for help?
The team and founders are reachable on Slack.
Prefer direct messages to target the person you want.
You can also jump in a quick meeting if needed (see shared agenda for availabilities).
π Useful Links
Leadjet website: https://www.leadjet.io/
Leadjet extension Web Store page: https://chrome.google.com/webstore/detail/leadjet/kojhcdejfimplnokhhhekhiapceggamn