Yogi Prasetya monogram logo
Skill Graph
Loading theme switcher
Projects

Bidiq

Less time tailoring resumes to each job posting

Problem

Most job seekers send the same resume to every role. Recruiters can tell, and it rarely works. Tailoring a resume to a specific job description is more effective, but doing it manually for dozens of applications is slow and repetitive enough that most people skip it.

Bidiq tries to make tailoring fast enough that it becomes the default.

Role

I built Bidiq as a solo project: product decisions, system architecture, and frontend implementation. The backend is Supabase (auth, database, edge functions); the AI layer uses an OpenAI-compatible API so the model can be swapped without touching the application code.

Approach

Minimum viable tailoring loop

The flow is intentionally short:

  1. User pastes or uploads their base resume
  2. User pastes the job description they're applying to
  3. The AI generates a tailored resume that emphasizes relevant experience, skills, and language from the job description
  4. User edits, exports

No onboarding wizard, no profile builder, no dashboard. Get the user to a tailored resume as fast as possible.

OpenAI compatibility as a design constraint

The AI layer talks to any OpenAI-compatible endpoint. The endpoint and model are configuration, not hardcoded. The model landscape changes fast, and I wanted to swap providers without touching application code.

Most of the product work went into the prompt: what a good tailored resume looks like, what to emphasize, what to preserve verbatim (contact info, dates), and how to handle gaps (flag them, don't invent).

Supabase for the full backend surface

Auth, database, and serverless functions from a single provider kept the infrastructure surface small. Edge functions handle the AI calls server-side, so the API key never touches the client.

Persistent drafts

Resumes are saved to the user's account as drafts. Users can return to a draft, re-tailor it for a second application, or fork it. The tool stays useful past the first session.

Technical Decisions

Why Next.js?

The resume output needs to be printable, with CSS-controlled layout rather than browser chrome. Next.js App Router and React Server Components let me render the resume as a clean, printable HTML document server-side, with client-side editing on top for interactive sections.

Why not a template-based approach?

Template-based resume builders solve a different problem. Bidiq's users already have a resume; they need to adapt it, not start from scratch. Keeping the user's original structure and voice was a deliberate product decision.

Why Supabase over a custom backend?

At solo-project scale I wanted the fastest path to production. Supabase gave me auth, Postgres, and serverless functions without managing infrastructure. The tradeoff is vendor lock-in at the data layer, which was acceptable for an MVP.

Outcome

  • Live production app at bidiq.my.id
  • Helps job seekers produce tailored resumes without the per-application time cost
  • The OpenAI-compatible abstraction has already been used twice: once to switch from the initial model to a cheaper option, once to test an alternative provider without any application code change
NextOpenAI CompatibilitySupabase