Cholloempleo.com: community-ranked job discovery
Community job platform where offers are discovered through voting, ranked by community signals, and maintained through automated quality checks and AI-assisted discovery.
Step 01
Problem
Relevant job opportunities were often buried in traditional portals without quality context. Many offers lack description, have generic titles, or come from unknown companies. The challenge was building a system that surfaces quality jobs through community signals instead of paid promotion.
Step 02
Context and constraints
Founder-built product using React + Express + PostgreSQL on Railway. The platform includes a bot publishing system (DiosEmpleo) for automated offer insertion, cron-based quality maintenance, and an active community voting system. Offers are inserted programmatically and cleaned through automated scripts that detect bad entries (empty descriptions, generic companies, broken links).
Role: Technical founder handling product architecture, backend API, SEO operations, scraping pipeline design, bot infrastructure, and roadmap execution.
Step 03
Key decisions
- Hot/New/Top discovery model to surface jobs through community signals rather than paid placement.
- Authenticated voting to improve trust in ranking quality and reduce manipulation.
- Dedicated cron-based activity seeding and quality maintenance in early-stage lifecycle.
- Bot user (DiosEmpleo) for automated offer publishing with structured data (title, company, location, salary, job type, sector).
- Automated quality checks: empty description detection, generic title/company filtering, broken link detection, HTML parsing validation.
- PostgreSQL with structured offer schema including location data (lat/lng, province, autonomous community), remote work options, and salary ranges.
- Multi-service Railway architecture separating web app and cron processes for independent scaling.
- Forum system alongside job listings to build community engagement around job topics.
Step 04
Outcomes
- Deployed and operational domain with integrated job + community core.
- Multi-service Railway architecture separating web app and cron processes.
- Automated offer pipeline with quality filtering and duplicate detection.
- Three ranking views in production engaging the community.
- Growing collection of verified offers with structured data.
Metrics
- Three ranking views in production: Hot (trending), New (recent), and Top (highest voted).
- Dedicated cron service for recurring community activity seeding and offer cleanup.
- Automated quality checks: empty description, generic company, generic title, Google sign-in links, empty links, HTML parsing errors.
- Operational API endpoints for offers, votes, forum posts, and offer details.
- Bot user DiosEmpleo for programmatic offer insertion with structured schema.
- Location-aware: city, province, autonomous community, coordinates, remote percentage.
Step 05
Learnings and next improvement
How it works
The platform combines three layers: a web frontend for users, a backend API for data operations, and automated bots/scrapers that find and publish job offers.
Data pipeline
Automated bots → [External job sources] → [Quality filters] → [Structured offer] → PostgreSQL
↓
User votes + community signals → [Ranking engine (Hot/New/Top)] → Web frontend
Offers are collected from multiple sources, run through automated quality checks, and published via the DiosEmpleo bot. Each offer includes structured metadata: title, company, location (city, province, coordinates), remote work options, salary range, job type, and sector.
Ranking system
- Hot: trending offers based on recent voting activity
- New: most recently published offers
- Top: highest all-time voted offers
Quality maintenance
Automated scripts regularly audit the offer database:
| Check | What it catches |
|---|---|
| Empty/short description | Offers without useful content |
| Generic company (“Empresa no especificada”) | Placeholder entries |
| Generic title (“Oferta de empleo”) | Low-effort entries |
| Broken or Google sign-in links | Invalid application URLs |
| HTML in title/company | Parsing errors |
| Excessive title length | Malformed data |
Learnings
- Discovery products need trust signals, not only content volume. Community voting significantly improves offer quality perception.
- Early cron/ops separation reduces maintenance friction as complexity grows.
- Automated quality checks are essential when offers come from scraped sources — bad data accumulates fast.
- The next challenge is not just growth: maintaining offer quality and community trust is harder than acquiring initial users.
Next improvement
Improve filters and quality rules to reduce noise in offers. Scale the catalog without losing source traceability and editorial consistency.
Links
Step 06