BerryMap
A full applicant tracking system and career site builder for Canadian small and mid sized employers, bilingual from the first line of code rather than translated after the fact.
- Client
- BerryMap Inc. (in house)
- Role
- Co-founder, product and build
- Status
- Live
- Languages
- French and English

Why it exists
Recruiting software in Canada is priced per seat, built English first, and treats French as a translation layer bolted on at the end. For a Quebec employer with four locations and a franchise network, that is both expensive and wrong.
BerryMap started as an answer to that: an ATS an SME can actually afford, where the career site, the job postings and the candidate experience exist equally in both languages, and where a franchise network can be modelled properly instead of being flattened into one account.
The pieces
Applicant pipeline
Drag and drop stages, candidate records, messaging, calendar and reporting. Recruiters live here all day, so it is built for keyboard speed rather than for demos.
Career microsite builder
Employers compose their own careers page, with per field translation status so nothing ships half translated. Publishes to a custom subdomain or embeds by iframe on an existing site.
BerryMatch scoring
A five pillar matching model: semantic similarity, commute, qualifications, dealbreakers and alignment. It ranks candidates, it does not decide for anyone.
Franchise and agency hierarchy
Parent companies, sub clients, brands, locations and franchisees, each with their own members, permissions and billing path. This is the part no SME ATS on the market handles.
Billing and plan logic
Four plan tiers plus paid brand activation, with plan versioning so pricing can change without disturbing existing subscribers.
Bilingual resources hub
A content and help hub across six pillars, with structured data, hreflang and instant indexing, built to earn search traffic instead of buying it.
How it holds up
The first version was a React single page app and Google could not index a single job posting. We migrated the whole front end to server rendered Next.js, added JobPosting structured data on every listing, sitemaps, hreflang pairs and the Indexing API. Indexation went from zero to the full catalogue of pages.
The data layer is PostgreSQL with Drizzle, payments run on Stripe, real time updates on Socket.io, transactional mail on Resend. Authentication is custom, because the same person can be a candidate at one company and an administrator at another.