cd ~/work
~$ cat ~/work/8x/README.md

8x · Software engineer

8x

8x runs several products, one of them a hiring platform. Its candidate and staff sides were already live with about 5,000 users. I designed and built the client side: the interview flow, shortlist sharing, an AI support chat that hands off to staff, and notifications wired into Slack.

role
Software engineer, Sept to Oct 2026
owned
The client side: design, front end, back end
team
4 people, remote, across time zones
users
About 5,000 on the platform
The candidate and staff sides of the hiring platform were built by the existing team. Anas designed and built the client side: the interview flow with logging, shortlist sharing, an AI support chat with a staff inbox, notifications with Slack, and back-end guards and rate limiting. The support chat answers from the FAQ or from the user's own data on the platform. If neither covers the question, it doesn't guess: it hands the conversation to staff, who reply from the inbox.

Building into a live product

The candidate and staff sides of the platform were already built and in use, so the client side had to fit the data and flows people already depended on rather than start from scratch.

The interview flow

I designed and built the interview flow, including logging the information captured at each step so there's a record of what happened.

Sharing shortlists

I designed how shortlists are shared with clients. Each client sees only the candidates shortlisted for them, never the wider candidate pool.

AI support that knows when to hand off

The support chat answers from two sources: the FAQ and the user's own information on the platform. If a question isn't covered by either, it doesn't guess. It hands the conversation to staff.

Those handoffs land in an inbox I built for the staff side, where they can manage conversations and reply directly.

Notifications, in the app and in Slack

I built the platform's notifications and linked everything to Slack, so the team hears about new activity where they already work.

Guardrails on the back end

The rules are enforced on the server, not just hidden in the interface. A client can only load candidates on their own shortlist, and can't mark a meeting as done until its scheduled time has passed.

Rate limiting sits on top of those checks.

Stack

  • TypeScript
  • Next.js
  • Supabase
  • Slack

The product isn't public yet, so there are no screenshots or links. I can talk through the parts I'm allowed to share in a call.