Inspiration

Recruiting still runs on static documents and email back and forth. A candidate sends a resume, a recruiter skims it, and then there's a slow round trip of questions before anyone even talks about scheduling. Aicoo's idea of "limited agent deployment," sharing a link to a live agent instead of a static file, felt like the right fit for fixing exactly that friction. We wanted to build the smallest real version of that idea: turn a candidate's profile into an agent a recruiter can actually talk to, with zero signup on their end.

What it does

A candidate fills in a short profile (name, target role, skills, availability). The app spins up a live Aicoo agent and saves that profile as context the agent can answer from. It then generates a share link, Aicoo's own hosted page, that the candidate can hand to a recruiter. The recruiter opens the link, asks questions, and gets answers grounded only in what the candidate allowed. If they want to move forward, the app can also book a real interview slot, which creates an actual calendar event and sends a calendar invite to the recruiter's email.

How we built it

The backend is a small Node.js and Express server that holds the Aicoo API key and proxies four calls: /init to set up the agent's workspace, /accumulate to save the candidate's profile as context, /share/create to generate the recruiter facing link, and /tools to call schedule_meeting on Aicoo's calendar namespace. The frontend is plain HTML, CSS, and JavaScript, kept simple on purpose so the Aicoo integration stays easy to read in the code. The whole thing is deployed live on Render.

Challenges we ran into

We originally tried embedding the recruiter's chat directly inside our own app using an iframe pointed at the share link. Aicoo's hosted page blocks being framed, so we redesigned around that constraint instead of fighting it: the app's job is to generate the link cleanly and hand it off, and the recruiter's actual conversation happens on Aicoo's own page, which is honestly a simpler and more honest version of the product anyway.

We also initially guessed at the parameter names for the schedule_meeting tool. The real schema (startDateTime and endDateTime in ISO 8601, not a single time field) only became clear once we queried Aicoo's own /tools endpoint and read the live schema back, which we then matched our code to exactly. We also discovered the calendar tool namespace has to be explicitly enabled per workspace before the tool can be called at all.

What's next

Two way coordination is the obvious next step: right now the recruiter's agent only answers questions and books time. A natural extension is having the candidate's agent notify the candidate the moment a recruiter opens the link or books an interview, using Aicoo's messaging tools, so coordination runs in both directions instead of one.

Built With

Share this project:

Updates