How to Build a Job Portal Like Indeed: Job Search Architecture, Employer Tools, and What Hiring Platforms Need
Building a job portal like Indeed costs $35,000-$55,000 for a niche MVP (8-10 weeks) or $80,000-$120,000 for a full platform with resume database, employer dashboard, and alerts (12-16 weeks). RaftLabs has built search-heavy portals with Elasticsearch, PostgreSQL, and Stripe. The hardest problem is search relevance: combining BM25 scoring, location boost, and recency decay.
Key Takeaways
- A niche job board MVP (post, search, apply) costs $35,000–$55,000 and takes 8–10 weeks. A full portal with resume database, alerts, and employer dashboard costs $80,000–$120,000 over 12–16 weeks.
- Elasticsearch handles full-text job search and geo queries (jobs within X miles). PostgreSQL stores users, jobs, applications, and companies. These two databases do different jobs.
- Resume parsing is harder than it looks. Use a commercial API like Affinda or Sovren instead of building your own parser. They handle varied formats and return structured JSON.
- Google Jobs indexing is free traffic. Adding JSON-LD jobPosting schema to every job listing typically drives 30–40% of job seeker traffic at no ad cost.
- Search relevance is the hardest problem. Start with BM25 scoring plus location boost plus recency decay. Add sponsor multipliers only after the base ranking is solid.
Hiring managers at staffing agencies and industry associations keep hitting the same wall. Indeed works for general roles. But when you need nursing staff for rural hospitals, contract lawyers for a regional firm, or embedded software engineers for automotive clients, the search results are full of noise. The employers you need aren't posting there. The candidates you want aren't searching there.
That's why niche job portals get built. Not to beat Indeed, but to own a corner of the market where the big platforms have weak signal and weaker employer relationships.
| Scope | Timeline | Cost |
|---|---|---|
| Niche job board MVP (job posting, full-text search with location, apply flow) | 8–10 weeks | $35,000–$55,000 |
| Full job portal (resume database, sponsored listings, job alerts, employer dashboard) | 12–16 weeks | $80,000–$120,000 |
The gap between the two tiers is mostly resume database infrastructure and pay-per-click billing. Both are buildable. Neither is simple.
What a job portal actually is (and what makes it hard)
A job portal is a two-sided marketplace. Job seekers want to find and apply to relevant jobs fast. Employers want to post jobs, find qualified candidates, and manage a hiring pipeline without switching between a dozen tools. The product has to serve both sides, or neither comes back.
According to Statista, online job boards now account for over 70% of first-contact job applications globally. The market for niche platforms is strong precisely because general boards are drowning in volume.
The complexity isn't in the feature list. It's in three specific places: search relevance (wrong results destroy trust in under a minute), resume data structure (a parsed PDF is only useful if it's consistent), and monetization mechanics (sponsored listings require per-click metering that most billing systems aren't built for).
How Indeed makes money -- and what your options are
Indeed runs on two revenue streams. The first is pay-per-click sponsored listings, where employers promote their jobs above organic results. Rates range from $0.10 to $5.00 per click depending on the role type and competition in the market. The second is subscription access to Indeed's resume database, sold to recruiters and staffing agencies who want to search candidates proactively rather than waiting for applications.
When you build your own portal, you have the same options -- plus a few the big platforms can't offer.
Pay-per-click sponsored listings work well when you have enough organic job volume to make the promoted slots worth paying for. Employers compare their sponsored jobs against organic results and make decisions based on application volume. You need at least a few hundred active jobs before PPC listings generate meaningful revenue.
Subscription access to a resume database is where the real recurring revenue lives. Staffing agencies and corporate recruiters pay $200–$800/month for access to a proprietary candidate pool they can't get anywhere else. This is the model that makes a niche portal financially durable. A healthcare staffing firm doesn't need 10 million resumes. It needs 50,000 verified nurses with license data, shift preferences, and geographic flexibility. That specificity is worth more than breadth.
Flat-rate job posting is a simpler entry point. A legal job board charges $199 to post a job for 30 days. Easier to sell, easier to explain. Lower ceiling but faster to validate.
A combination model -- free to post, pay to feature, subscriptions for resume access -- is the most common structure for portals that last past two years. Free posting fills the job catalog. Sponsored slots monetize the employers who need volume. Resume access monetizes the recruiters who need supply.
Who builds a job portal instead of using Indeed
LinkedIn's 2023 Talent Trends report found that 73% of hiring managers in specialized fields (healthcare, legal, engineering) say general job boards return too many unqualified candidates. Four company types account for most of the job portal builds we see:
Healthcare staffing agencies where Indeed's search can't filter by nursing license type, shift certification, or state-specific credentialing requirements. A traveling nurse placed in the wrong state creates a compliance problem. The general platforms have no mechanism for this. Agencies building their own portal typically start with a 20,000-nurse database and grow from there. The alternative is doing every match manually on a spreadsheet.
Industry associations with existing member bases that want to turn their membership into a talent pipeline. A construction industry association with 8,000 member companies already has both sides of the marketplace. They need software that connects the two, not a general job board that competes for the same traffic. Association job boards also carry built-in trust that Indeed doesn't: if the construction association posts a job, contractors know it's legitimate.
Staffing agencies building proprietary candidate databases as a competitive advantage. The agency that has 30,000 pre-vetted logistics drivers that national platforms don't have can charge more per placement and close faster. A custom portal turns that database into a searchable product. The alternative is keeping the database in a spreadsheet and losing it every time a recruiter leaves.
Regional job boards serving markets where Indeed has no employer relationships. A city-specific board for Dubai, Singapore, or a major secondary market where global platforms haven't built the employer network. Local employers who won't post on LinkedIn because the inbound comes from the wrong geographies. These portals survive on local employer trust and regional candidate familiarity.
What to build, in what order
V1: launch scope (8–10 weeks, $35,000–$55,000)
Job listings are the foundation. Employers post with title, description, requirements, salary range, location, remote or on-site preference, job type, and application deadline. Each listing gets a clean URL and a detail page.
Job search needs radius search from the start. "Jobs within 25 miles of ZIP code 10001" is a near-universal requirement. Without location filtering, you're not solving the problem. Full-text search across titles and descriptions, salary range filters, and date-posted sorting round out the basics.
Candidate profiles let job seekers upload a resume and track applications. Even a simple profile improves application quality because employers get structured data instead of a raw PDF. Using a commercial resume parsing API (Affinda or Sovren) here costs $0.10–$0.50 per resume but saves three to four months of parser development. Build your own parser only if volume makes the API cost prohibitive -- that threshold is typically above 100,000 resumes per month.
Application flow needs two modes: one-click apply with a saved profile, and a per-job custom form for employers who need specific answers (years of experience, willingness to relocate, visa status).
Google Jobs schema on every listing page. This is four hours of development work and typically drives 30–40% of organic candidate traffic at zero ad cost. Most teams skip it. It's the highest-ROI technical decision in the entire build.
V2: growth (add after proving the model, $20,000–$35,000)
The employer dashboard is the first V2 priority. A pipeline view of all applicants per job, filters to sort by experience or location, saved candidate lists, and direct messaging. Without it, employers manage applications in their email, which means they stop posting.
Job alerts let candidates set keyword and location preferences, receiving a daily or weekly digest of matching new jobs. This drives repeat engagement without requiring candidates to come back and search. Background job processing runs the matching and email send on a schedule.
Company profile pages with logo, description, culture notes, benefits, and a list of open jobs. Employers with complete profiles consistently get better application rates. This is also where employer branding differentiation lives for a niche portal.
V3: scale (once you have employer revenue to justify it)
The resume database with employer search access. Employers search all candidates on the platform, not just those who applied to their specific jobs. This is where subscription revenue comes from. It requires parsing infrastructure, candidate search that's separate from job search, and a contact or subscription billing model. Budget $30,000–$45,000 to add this cleanly after V2.
Sponsored listings with per-click metering. Employers pay to promote their jobs above organic results. The billing logic is more complex than it looks: you're metering clicks, not charging a flat fee. Budget caps, click fraud detection, and billing reconciliation add up. Cross-platform mobile saves $30,000–$50,000 compared to separate iOS and Android apps if you want a mobile job seeker experience at this stage.
Why search relevance determines whether the portal survives
Search relevance is where most job portals fail, and it's not obvious until candidates start bouncing.
"Relevance is a product problem disguised as a technical one. You can tune BM25 for months and still rank the wrong jobs first. The signal you're missing isn't in the text. It's in what the candidate actually clicked on." -- Will Waugh, formerly VP Engineering at Broadbean, speaking at RecFest 2023
The problem isn't surfacing results. Any search engine will return something for any query. The problem is ranking: a candidate searching "software engineer San Francisco" should see senior roles at real companies near San Francisco, not junior roles in Texas with "San Francisco" mentioned once in the description.
Start with BM25 scoring. It's the default relevance algorithm, and it handles keyword matching well. Add a location boost so jobs near the search location rank above equally keyword-relevant jobs far away. Add a recency decay so a job posted 90 days ago ranks below one posted 3 days ago. These three signals get you to a usable product.
Add sponsor boost after the base ranking is solid. Sponsored jobs get a multiplier based on the employer's bid. The multiplier must be capped so a high bid doesn't push an irrelevant job to the top of results for an unrelated query. Search quality matters more than monetization in the short term. If candidates stop trusting the results, they stop using the platform.
The failure mode we see most often in job portal builds: teams add sponsored listing revenue before the base search is trusted. Employers pay to feature jobs that rank poorly organically. Candidates see sponsored jobs as noise. The portal loses candidate trust. Employers stop paying because applications dry up. The order of operations matters more than the features themselves.
Build vs. Indeed: when does custom win?
A custom job portal is the right call when the vertical justifies the investment. It's the wrong call when you're competing on general search volume.
Keep using Indeed and the big platforms when:
You're hiring for general roles across multiple industries. Indeed, LinkedIn, and ZipRecruiter have distribution you cannot match. A startup posting software engineering jobs in San Francisco doesn't need a custom platform. The candidate volume is there.
Your employer base posts to general platforms already. If the employers you need are active on Indeed, you're building a competitor with a fraction of the job catalog.
You need rapid time-to-hire. Building the platform takes 8–16 weeks. That's time you don't have if you need to fill roles now.
Build your own when:
The vertical has terminology, credentials, or filters that general platforms don't support. Healthcare license types, bar admission jurisdictions, OSHA certifications, CDL endorsements -- these aren't metadata you can bolt onto a general search. They define the data model.
You have an existing community on one side of the marketplace. An industry association with 5,000+ member employers, or a staffing agency with a 50,000-person candidate database. You already have supply or demand. The platform makes the existing relationship more efficient.
The employer relationships in your vertical are local or exclusive. Employers who won't post publicly but will post to a trusted niche board. Regional companies that get irrelevant inbound from national platforms. The payback period for a niche portal build is typically 18–30 months if you have an existing community to seed it with.
General-purpose job board competing with Indeed on broad queries: don't build it. Indeed has over 300 million resumes and millions of daily job postings. The content volume and network effects are not catchable.
What we've seen go wrong
Two failure modes come up consistently in job portal builds:
The first is delaying Google Jobs schema. Teams spend $35,000–$55,000 building the portal, launch it, and then spend two to three months wondering why organic traffic is thin. Adding jobPosting structured data to every listing page drives 30–40% of job seeker traffic at no ad cost. The implementation is four to eight hours of work. It belongs in V1, not as an afterthought.
The second is premature resume database investment. A team builds the resume database and parsing infrastructure before they have employer volume to justify subscription pricing. They've spent $30,000–$45,000 on infrastructure for a product no one is paying for yet. The right sequence is: prove job posting volume first, then build employer search access once recruiters are asking for it.
How RaftLabs can help
We've built search-heavy platforms, two-sided marketplaces, and data-intensive applications for companies from seed stage to enterprise. A job portal sits at the intersection of all three.
The specific challenges here -- full-text search with geo ranking, resume parsing infrastructure, pay-per-click billing, and background job processing for email alerts -- are problems we've solved before. We don't need to figure out the architecture from scratch.
Our typical engagement starts with a 2-week discovery sprint where we define scope, make stack decisions, and produce a weekly milestone plan. You get a demo every Friday.
For a niche job board MVP, budget $35,000–$55,000 and 8–10 weeks. For a full portal, budget $80,000–$120,000 and 12–16 weeks. Tell us what you're building and we'll scope it in 48 hours.
Further reading: build vs. buy software, SaaS app development cost, and how to build an app like Glassdoor if reviews and employer branding are part of your model.
Frequently asked questions
- A niche job board MVP with job posting, search, and apply functionality costs $35,000–$55,000 and takes 8–10 weeks. A full job portal with resume database, employer dashboard, sponsored listings, job alerts, and company pages costs $80,000–$120,000 and takes 12–16 weeks. Cost scales with search complexity, the number of user roles (employer vs. candidate), and monetization features like pay-per-click sponsored listings.
- Use Elasticsearch for job and candidate search. It handles full-text queries across job titles and descriptions, geo queries (jobs within 25 miles of a ZIP code), and relevance ranking out of the box. Use PostgreSQL for structured data: users, companies, applications, saved jobs, and payment records. The two systems complement each other: Elasticsearch for search, PostgreSQL as the source of truth.
- Resume parsing converts a PDF upload into structured data: name, contact info, work history with dates, education, and skills. Building a reliable parser from scratch is a multi-month project because resume formats vary wildly. Use a commercial API instead. Affinda, Sovren, and Textkernel all return structured JSON from uploaded PDFs with high accuracy. Budget $0.10–$0.50 per resume parsed depending on the provider and volume.
- Add JSON-LD structured data with the jobPosting schema to every job detail page. Required fields are: title, description, hiringOrganization (name and logo), jobLocation, datePosted, and validThrough. Optional but recommended: baseSalary and employmentType. Google indexes these automatically. No submission needed. This typically accounts for 30–40% of job seeker traffic and costs nothing beyond the development time to add the schema.
- Build a custom job portal when you have a specific vertical (nursing jobs, legal jobs, developer jobs) where Indeed's general search surfaces too many irrelevant results, or when you need employer relationships and data that the big platforms don't have. Don't build a general-purpose job board competing with Indeed, LinkedIn, and ZipRecruiter on broad queries. The content volume and network effects are too large to overcome.
Ask an AI
Get an instant summary of this post from your preferred AI assistant.
Related articles

How to Build an App Like Workday: HCM Architecture, Finance Modules, and What Enterprise HR Tech Requires
Workday costs $100-$250 per employee per year for HCM. A 500-person company pays $50K-$125K annually. Here is what it takes to build your own HR and finance platform, which modules actually matter, and when the build makes sense.

How to Build a School Management System (2026)
Most school software fails because it was built for a generic K-12 model. If you run a Montessori network, a religious school group, or a district with state reporting formats the big vendors ignore, you need custom. Here is what that actually takes.

How to Build a Restaurant CRM Like SevenRooms: Guest Profiles, Reservation Intelligence, and Real Costs
SevenRooms charges $600-$1,200 per month per location. Hotel F&B groups and fine dining operators build custom to own the guest data, which is worth far more than the software. Here is the full build: guest profiles, floor plan, pre-visit upsell, post-visit re-engagement, and PMS integration.
