YPYM DBX - Enterprise Search Intelligence & Brand Performance Engine
High-throughput search engine intelligence, TimescaleDB time-series storage, DataForSEO cost governance, and multi-tenant performance tracking.
curl --request GET \
--url https://dbx.ypym.app/api/keywordsimport requests
url = "https://dbx.ypym.app/api/keywords"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://dbx.ypym.app/api/keywords', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dbx.ypym.app/api/keywords",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://dbx.ypym.app/api/keywords"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dbx.ypym.app/api/keywords")
.asString();require 'uri'
require 'net/http'
url = URI("https://dbx.ypym.app/api/keywords")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
Private Enterprise Access Notice
Overview
YPYM DBX (Digital Brand Experience) is our enterprise search intelligence and SERP tracking platform. Designed to provide transparent, continuous visibility into organic search market performance, DBX pairs real-time keyword ranking telemetry with strict financial governance and high-throughput time-series storage. Rather than relying on opaque third-party analytics dashboards with high recurring costs and rigid data retention limits, DBX delivers full data ownership, granular historical performance, and predictable crawling expenditure.
Digital Brand Experience (dbx.ypym.app) central monitoring console for domain ypym.app, showcasing daily crawling cost governance (Rp 815 / $0.0455), monthly projected run-rate, and live DataForSEO account balance ($43.43). The high-density tracking table provides 7-day SERP position trends, estimated search volume, and ranking landing page URLs for core brand assets.
Deep Telemetry & Local Geo-Targeting
AI Search & GEO Intelligence
Cost Governance & Crawling
Operations & Multi-Tenant Reliability
Early Inception & Architectural Evolution
YPYM DBX was initiated to overcome the structural bottlenecks inherent in traditional single-tenant rank trackers. The platform originated from an evaluated fork of the open-source SerpBear v3.1.0 tracking codebase, but underwent a comprehensive ground-up re-architecture across five decoupled monorepo packages to satisfy enterprise reliability, scalability, and financial predictability requirements.ypym-dbx (Platform Core: v5.3.0 Enterprise)
│
├── 📦 @ypym-dbx/google-ads (v5.3.0)
│ ├── Native Google Ads API v26 Integration (Keyword Plan Service)
│ ├── Exact Monthly Search Volumes & 12-Month Demand History
│ ├── 3-Month & YoY Growth Velocity Metrics
│ ├── Top of Page Low/High Bid Range Valuations (IDR & USD)
│ ├── Competition Index (0–100 Difficulty & Tier Ratings)
│ └── Regional Keyword Ideas Discovery (Default: ID / 2360, id / 1025)
│
├── 📦 @ypym-dbx/database (v2.5.0)
│ ├── TimescaleDB Rank History Engine (keyword_rank_history)
│ ├── Crawl Cost Ledger Hypertable (crawl_cost_ledger)
│ ├── Multi-Tenant Schema & Relational Vault (PostgreSQL 16)
│ └── Persistence Hardening & Strict UUID Integrity Protection
│
├── 📦 @ypym-dbx/scrapers (v1.5.0)
│ ├── Hyper-Local Geo-Intelligence Engine (343 Indonesian Regency/City Criterion Mapping)
│ ├── Google UULE (Universal Unique Location Engine) Canonical Resolver
│ ├── Native Language Localization Engine (Dynamic hl=id / hl=en)
│ ├── DataForSEO Live Advanced ($0.0035/keyword, Page 2) & Standard Queue ($0.00105/keyword)
│ ├── Live Account Balance Checker with 15-Minute Memory Cache
│ └── Redundant Multi-Provider Scraper Adapters
│
├── 📦 @ypym-dbx/cost-governance (v1.6.0)
│ ├── 12-Hour Financial Anti-Drain Shield & Duplicate Crawl Protection
│ ├── Hybrid Option C Crawl Engine (11:00 AM WIB / 04:00 UTC)
│ ├── 11:00–11:15 WIB Manual Crawl Execution Window Guard
│ ├── Cryptographic 6-Digit OTP Email Verification Flow (10-minute validity)
│ └── Real-time Financial Confirmation & Currency Converter (USD / IDR @ Rp 17,914)
│
├── 📦 @ypym-dbx/web (v3.1.0)
│ ├── Financial Status Bar (Daily spend, 30d projections, live balance)
│ ├── Dynamic Countdown Timer (Hourly ticker with <60m red urgency mode)
│ ├── Crawl Execution History Modal (Google SERP & Multi-LLM GEO with tenant-scoped logs)
│ ├── Context-Aware On-Demand Actions (Crawl SERP Keywords at $0.0035/kw & Crawl all Prompts at ~$0.0089/prompt)
│ ├── 100% English Copywriting & Minimal Typographic Standard
│ ├── SERP Top 10 Penetration Trajectory (100% Stacked Bar: Matte Tosca vs. Soft Grey)
│ ├── Google AIO Citations Heatmap (Deep Obsidian Dark Mode rolling 90-day matrix)
│ ├── Interactive Multi-Mode Citation Charts (Trend Line, Comparison Bar, Stacked Bar)
│ ├── Right-Aligned LLM Chart Controls & Prompt-First Terminology ("All Prompts", "Filter Prompts...")
│ ├── 380px Expanded Chart Height & Native Engine Brand Palette (OpenAI, Gemini, Perplexity, Claude)
│ ├── Symmetric Brand Host Citation Matching for Subdomain Portfolios
│ ├── Client-Side Column Visibility Persistence (localStorage without 403 API calls)
│ ├── Strict Lowercase Domain Identity Formatting (no forced capitalization)
│ ├── Role-Gated Admin Navigation (Super Admin "Clients" portal vs. Client isolation)
│ ├── Smart 343-City Datalist Autocomplete in Keyword Modal
│ ├── Virtualized High-Density Keyword Grid with 7-Day Trend Visualizers
│ └── Google Search Console (GSC) Opportunity Discovery Console
│
└── 📦 @ypym-dbx/workers (v1.2.0)
├── Supervised Dual-Phase Background Cron Daemon (Phase 1 SERP 11:00 WIB & Phase 2 Multi-LLM 11:30 WIB)
├── Automated Stale Job Status Recovery (~30m recovery sweep)
└── Zero-Cost Read-Only Database Preflight & Audit Suite
Core Technical Specifications
1. High-Throughput Time-Series Persistence
- Storage Engine: PostgreSQL 16 with TimescaleDB extension.
- Hypertables:
keyword_rank_history: Automated 7-day time partitioning for daily SERP positions, URLs, search volumes, and featured snippet flags. Eliminates historical JSON string corruption and delivers up to 90% disk space compression.crawl_cost_ledger: Automated 30-day time partitioning logging every provider request, tracking currency expenditure in USD and IDR, exchange rates, and execution triggers (scheduled_cron,manual_queue,instant_adhoc).
- Connection Management: PgBouncer pooling supporting high-concurrency background scraping tasks without database locking.
2. First-Class DataForSEO Scraping Integration (Page 2 Standard)
- Direct API Provider: Direct integration with DataForSEO v3 SERP Live Advanced ($0.0035 per keyword, Page 2 / Top 20) and Standard Priority Queue ($0.00105 per keyword).
- Authentication: Native Base64-encoded credential parsing with automated decryption.
- Resilience: Exponential backoff and retry scheduling on provider rate limits (HTTP 429) or transient network interruptions.
- Telemetry: Real-time provider balance queries via
/v3/appendix/user_datadisplaying live account balance directly within the tracking header.

Official DataForSEO scraper configuration console in YPYM DBX featuring 1-click verified credential auto-fill and fixed currency settlement (Rp 17,914/USD). Enterprise administrators can configure automated daily crawl frequencies, custom scrape depth limits (up to 2 pages / top 50 search results), and retry policies to maintain strict budgetary control.
3. Financial Cost Governance & Operational Security
- Automated Dual-Phase Crawl Boundary: Standard daily batch execution operates in a coordinated two-phase schedule: Phase 1 (SERP Rankings) executes automatically at 11:00 AM WIB (04:00 UTC), followed by Phase 2 (Multi-LLM GEO Audit) at 11:30 AM WIB (04:30 UTC).
- Manual Crawl Window & On-Demand Audits: Manual refreshes (
Crawl SERP Keywordsat $0.0035/kw) and multi-prompt LLM audits (`Crawl all Prompts` at ~$0.0089/prompt across 4 engines) are protected against accidental clicks and budget overrun. - Cryptographic OTP Approval: All on-demand crawl triggers (
Crawl SERP KeywordsandCrawl all Prompts) require a 6-digit OTP challenge delivered via email, valid for 10 minutes and verified with transactional consumption. - Budget Guardrails: Prevents runaway API expenses by calculating exact USD/IDR costs and verifying sufficient DataForSEO reserves before execution.
- Crawl Execution History: Centralized execution log (
crawl_jobs) tracking both SERP and Multi-LLM crawl runs with status, keywords audited, engine details, and completion timestamps.
4. Search Console & Market Demand Intelligence (v4.1 & v5.3)
- Frictionless Google Search Console (v4.1): Zero-friction integration via service account delegation (
[email protected]). Users simply invite the service account with Full permissions in GSC to ingest verified clicks, impressions, CTR, and average position metrics without needing private keys. - Native Google Ads Keyword Planner (v5.3): Direct integration with Google Ads API v26 to fetch real monthly search volumes, 12-month historical seasonality, 3-month/YoY trend growth, competition scores (0–100), and top-of-page low/high bid estimates in IDR and USD. Includes
/researchdiscovery workspace with Indonesian defaults (Geo: 2360, Lang: 1025). - Assisted Onboarding Advisory: Due to multi-tiered Google Cloud and Google Ads MCC credential requirements, clients are encouraged to contact
[email protected]or[email protected]for assisted setup. - GEO & AI Overview Telemetry: Parser adapters tracking Google AI Overview citations, ChatGPT Search, Perplexity AI, and Claude AI with zero extra crawl cost.
Technical Stack & Dependencies
| Layer | Technologies | Purpose |
|---|---|---|
| Frontend Application | Next.js 14, React 18, Tailwind CSS | High-density tracking dashboard, real-time metrics, interactive modal workflows |
| Database Engine | PostgreSQL 16 + TimescaleDB | Partitioned hypertables, relational tenant models, sub-millisecond time-series queries |
| ORM & Migrations | Drizzle ORM, node-postgres (pg) | Type-safe schema definitions, automated migration scripts |
| Scraper Adapters | DataForSEO v3 (Primary), SerpApi, SearchApi | Multi-engine SERP extraction and provider failover |
| Financial Computation | Decimal arithmetic, live currency conversion | Accurate sub-cent cost governance and audit trail |
| Security & Auth | Cryptr (AES-256), NextAuth session tokens | Multi-tenant credential segregation and protected internal API routes |
API Endpoints Overview
DBX provides internal REST endpoints for automated scheduling, financial summaries, and domain tracking:otp and challengeId payload for verified authorization.curl --request GET \
--url https://dbx.ypym.app/api/keywordsimport requests
url = "https://dbx.ypym.app/api/keywords"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://dbx.ypym.app/api/keywords', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dbx.ypym.app/api/keywords",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://dbx.ypym.app/api/keywords"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dbx.ypym.app/api/keywords")
.asString();require 'uri'
require 'net/http'
url = URI("https://dbx.ypym.app/api/keywords")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body