Inspiration
Someone can spend years building hiring intuition who fits a seed-stage team, how to read a portfolio, what makes outreach feel human, which signals matter for a founding engineer vs. a senior PM. They know the roles they need to fill, the candidates they want to reach, the follow-ups that should have gone out last week, and the story they want every hire to understand about the company.
But then they open a blank ATS, a spreadsheet, or a chain of disconnected tabs LinkedIn, Gmail, Calendar, notes, job descriptions and the work often dies at the first blank screen.
Before there is a qualified pipeline, there are barriers: expensive enterprise recruiting software, fragmented tools, manual copy-paste between inboxes and trackers, no shared memory across searches, and AI products that hide context instead of helping recruiters inspect, refine, and own their work. The first lesson is not judgment. It is setup friction.
This pattern repeats quietly. A founder is also the hiring manager. A lean startup has one recruiter doing sourcing, screening, scheduling, and outreach alone. A community organization wants to run a fair search but cannot afford a full recruiting stack. A hiring manager has strong intuition but no time to operate five tools at once.
Jobraker Recruiter was built for that gap: a web-based AI recruiting workspace that helps lean teams source, screen, pipeline, and outreach from one place, with Supabase for identity and core app data, Vercel for deployment, and AWS DynamoDB as the AWS operational data layer for scalable recruiter activity, sync, and workflow state.
What it does
Jobraker Recruiter is a web recruiting copilot for lean hiring teams. Instead of leaving recruiters alone with disconnected tabs and empty trackers, the assistant helps produce inspectable recruiting artifacts: candidate records, role briefs, outreach drafts, pipeline state, sourcing notes, and analytics.
A typical workflow:
- A recruiter asks: "Source senior product designers in Lagos with 5+ years SaaS experience and strong systems thinking."
- The copilot helps structure the search and add candidates into the recruiting workspace.
- The dashboard surfaces live KPIs, top matches, pipeline movement, and recruiting activity.
- The recruiter opens a candidate, reviews fit signals, drafts outreach, and moves the stage forward.
- DynamoDB supports fast operational data such as activity, sync jobs, audit events, and workflow state while Supabase remains the source of truth for authenticated recruiter data.
The output is not a one-off chat answer. Jobraker Recruiter produces a working recruiting system: roles, candidates, pipeline columns, analytics, and recruiting memory that grows with every search.
How we built it
Jobraker Recruiter is a React 19, TypeScript, Vite, and Tailwind CSS web app deployed on Vercel. The product shell combines landing, authentication, onboarding, recruiter dashboards, candidate management, sourcing, pipeline, roles, analytics, settings, and profile-aware workspace logic in one browser-based application.
The web app uses Supabase for authentication, user profiles, recruiter workspace records, and row-level security. AWS DynamoDB is integrated as the AWS database layer for operational recruiting data: activity streams, sync state, audit events, background workflow state, and fast dashboard-side state that benefits from DynamoDB’s low-latency key-value/document model.
The method is deliberately not "generate one big answer." The assistant works through a bounded workflow:
user goal → structured recruiting action → saved workspace state → review → refinement → next action
AWS DynamoDB integration
The app keeps AWS credentials out of direct browser-to-DynamoDB calls. Recruiters can add DynamoDB settings in the web app, but the actual DynamoDB connection is handled through a Supabase Edge Function.
The architecture is:
Vercel web app → Supabase Auth → Supabase Edge Function → AWS DynamoDB
This keeps the browser experience simple while allowing the backend function to test and use DynamoDB securely. The DynamoDB connector supports region, table name, access key ID, secret access key, enable/disable state, and connection testing.
Recruiter product surface
The recruiter module gives lean teams a real operating system, not just a chat box:
- Dashboard — live recruiting overview and workspace state
- Sourcing — candidate discovery and enrichment workflows
- Candidates — structured candidate profiles and fit signals
- Pipeline — drag-and-review hiring stages
- Roles — open-role tracking with applicant quality signals
- Analytics — recruiting performance insights
- Settings — Supabase profile management and DynamoDB connector setup
Why DynamoDB matters
DynamoDB adds a complementary AWS layer for fast operational workloads.
DynamoDB is useful for:
- recruiter activity feeds
- dashboard events
- background job state
- sync checkpoints
- audit logs
- notification state
- fast key-value workflow records
Challenges we ran into
Architecture balance. The app needed to use AWS DynamoDB without replacing Supabase. The solution was to keep Supabase as the authenticated source of truth and use DynamoDB as the AWS operational data layer.
Security. The browser should not talk directly to DynamoDB. I solved this by routing DynamoDB actions through a Supabase Edge Function, keeping AWS access behind authenticated server-side logic.
State across views. Dashboard pages, candidates, roles, pipeline, and analytics all needed shared recruiting state. The app now uses Supabase-backed workspace data and web-friendly state handling across the dashboard.
Accomplishments that we're proud of
- Added Supabase authentication, profiles, protected dashboard access, and recruiter workspace data
- Built dashboard pages for roles, sourcing, candidates, pipeline, and analytics
- Added AWS DynamoDB as a complementary database layer for operational recruiting data
- Created a DynamoDB settings flow in the app with save, test, enable, and remove actions
- Routed DynamoDB access through Supabase Edge Functions instead of exposing AWS calls directly from the browser
- Use DynamoDB for recruiter activity streams, audit trails, and background workflow state
What we learned
A recruiter does not only need a generated message. They need a loop:
search → inspect → compare → outreach → schedule → remember → repeat
Jobraker Recruiter applies that principle to hiring. The assistant must not only answer it must leave behind editable records, visible pipeline state, and workflow memory the recruiter can trust.
We also learned that using Supabase and DynamoDB together can be stronger than choosing only one. Supabase is ideal for auth, profiles, relational workspace data, and row-level security. DynamoDB is ideal for fast operational data, workflow state, and scalable event-style records.
What's next for Jobraker Recruiter — AI Hiring Copilot
- Add richer dashboard event history powered by DynamoDB
- Expand candidate enrichment and sourcing workflows
- Improve team workspace collaboration
- Add deeper analytics for outreach, role performance, and candidate movement
Team: Miles — solo builder. Product design, AI workflow architecture, React + Vite web implementation, Supabase integration, AWS DynamoDB integration, recruiter UX, and demo preparation.
Built With
- and
- audit-trails
- dynamodb
- next.js
- node.js
- openai/vercel-ai-sdk
- posthog
- python
- radix-ui
- react
- sdk
- supabase-(auth/database/ssr)
- tailwind-css
- tiptap
- typescript
- vite
Log in or sign up for Devpost to join the conversation.