Malik SohaibEmail me
← All work

Arthur Vibe

An AI that runs interviews with a team, then writes a report you can ask questions of.

Role
Senior Full Stack Engineer at Arthur
Status
Shipped

A creator sets up a “vibe”: its purpose, the bot’s name, voice and prompts, reference questions, and how strictly the bot follows them. Teammates get an invite and talk to the bot in a branded 3D room, anonymously if they want.

When the interviews are done, the creator generates reports and asks an assistant about one interview or all of them.

Decisions

  1. 01

    Meetings on their own runtime

    Chose
    Run the live interview in a Go Lambda with its state in Redis.
    Instead of
    Running dialogue inside the API servers.
    Why
    Sessions pause and resume by reloading the conversation from Redis, and long calls never hold up the API.
  2. 02

    S3 as the hand-off

    Chose
    Write transcripts to S3 and let that trigger chunking and embedding.
    Instead of
    Processing inline at the end of the call.
    Why
    Each stage can fail and retry on its own, and translation to English happens once, before indexing.
  3. 03

    Reports as a state machine

    Chose
    Generate reports with Step Functions, merging transcripts five at a time.
    Instead of
    One long job.
    Why
    Big runs stay inside model limits, and every stage can be observed and retried.
  4. 04

    One adapter for every model

    Chose
    One provider adapter shared by the API and every Lambda.
    Instead of
    Vendor code in each handler.
    Why
    OpenAI, Gemini or Anthropic is picked per call, and switching never touches the product code.
  5. 05

    Retrieval in Postgres

    Chose
    Store interview and report embeddings in Postgres with pgvector.
    Instead of
    A separate vector database.
    Why
    One store for data and search keeps sharing rules (private, public, targeted) in one place.

What shipped

  • Bot-led interviews to searchable reports, without one runtime owning realtime, batch AI work and file IO.
  • Anonymous participation kept consistent from Redis to S3 to the vector index.

Built with

React, three.js, Go, Fiber, AWS Lambda, Step Functions, S3, Redis, Postgres, pgvector, OpenAI, Gemini, Anthropic

Some details are kept general on purpose.