Skip to content

SOFTWARE ENGINEERING COMPANY

We write the algorithm,
then run it in production.

PGIM builds software for businesses. Every system on this site is running in production — and comes with its algorithm, summarised from the source that runs it.

CandidateSearchOperator.cs — hybrid retrieval + RRF
BM25Index:  k1 = 1.5,  b = 0.75
  idf   = log((N − df + 0.5) / (df + 0.5) + 1)
  norm  = k1 · (1 − b + b · |d| / avgdl)
  score = idf · tf·(k1 + 1) / (tf + norm)

pipeline(jd, filters):
  1  dimIds  ← sql_filter(filters)              # lọc trước theo chiều cấu trúc
  2  ‖ bm25  ← bm25(jd, top = 200) ∩ dimIds     # chạy song song
     ‖ embed ← ann(embed(jd), top = 200)
  3  rrf[d]  ← Σ_lists 1 / (k + rank_i + 1),  k = 60
     pool    ← top 30 by rrf                    # hợp nhất, không cần chuẩn hoá thang điểm
  4  for c in pool (semaphore-bounded):
       eval[c] ← ‖ llm_judge(c, jd, view = CTO)
                 ‖ llm_judge(c, jd, view = HR)
  5  boost   ← apply_feedback(eval)
  6  return top 10 by overall_score

From CandidateSearchOperator.cs — the candidate ranking system running at chat.rentaicoder.com. Every number is the number in the code.

§ 01CORE TECHNIQUES

Six techniques, reused across the systems

We do not reinvent the approach every project. These are the techniques we have pushed to production, and where each one runs.

01

Rank fusion with RRF

Two retrieval paths produce two score scales that cannot be compared. Reciprocal Rank Fusion discards the scores and uses rank alone — so there is no weight to choose, and every weight would have been a guess.

score(d) = Σ 1 / (k + rank_i(d)),  k = 60

ATS — Multi-agent candidate ranking

02

Five-layer fractal architecture

Every module at every depth has the same shape. The dependency rules become derivable from the path instead of memorised — new engineers and AI agents both find their way.

module ::= { Bootstrap, Operators, Core, Impl, Boundary }

Abstract Driven Development V3VDG POS CounterEDU ChatBotXăng GateVDG FreightForwarder

03

Domains modelled as state machines

Valid states and valid transitions are declared explicitly. An invalid transition is blocked by an error carrying context, rather than silently corrected while the data quietly rots.

(s, e) ∉ δ  ⇒  Err(InvalidTransition { from: s, event: e })

VDG FreightForwarder

04

Trust modelled by data region

Within one string, the part the system generated and the part a user typed carry different trust. Sensitive values are only read from the region the other side does not control.

amount ← parse(text[0 .. index_of(note_marker)])

BankBridge

05

Multi-tier degradation ladders

Provider quotas are metered along several independent axes. Turning each axis into its own fallback tier makes them stack, and a long-running task no longer dies halfway.

profile → project → model

Xăng Gate

06

Push the compute to the client

Sensitive data should not leave the operator's machine. Compiling the business core to WebAssembly leaves a deliverable of plain static files — with no server there to leak from.

parse ∘ validate ∘ transition  ⊂  WebAssembly

VDG FreightForwarder

§ 02SYSTEM INDEX

Every system, with its core algorithm

Follow a name to read the full algorithm section, with pseudocode and the reasoning behind the choice.

#SystemCore algorithmBuilt with
01ATS — Multi-agent candidate rankingchat.rentaicoder.comCandidateSearchOperator.cs — hybrid retrieval + RRF.NET 10 · NTG.Adk · EmbeddingGemma · SQLite · SSE
02Vietnamese Legal AI Assistantchat.rentaicoder.com/law.htmlLawChatOperator.cs — agent tự chọn công cụ tra cứu.NET 10 · NTG.Adk · BM25 · ONNX · SQLite
03Abstract Driven Development V3abstractdriven.com · MITF.A.P — fractal architecture patternOpen source · MIT · llms.txt
04BankBridgemonorepo: ESP32 · Node · Androidserver/parser.js — mô hình tin cậy 3 lớpESP32-S3 · PlatformIO · Node.js · Socket.IO · SQLite · Kotlin
05VDG FreightForwarderstatic build: HTML + JS + .wasmsrc/abstractions/states — 28 máy trạng thái thuần RustRust · wasm-bindgen · calamine · Lit · AG Grid
06EDU ChatBotedu.rentaicoder.comHandoverOperator.cs — luật leo thang sang người thật.NET 10 · EF Core · A.D.D V3 · LLM tool-calling
07VDG POS Counterpos.rentaicoder.com · desktop + webRàng buộc pháp lý — ở đây quy định chính là đặc tả.NET 10 · Avalonia 11 · EF Core 10 · SQLite WAL · Quartz.NET · ESC/POS
08VDG FundTrailRust core · Android + webQuét approval TRC20 — rủi ro nằm ở quyền đã cấp, không ở số dưRust · TRON / TRC20 · Android · Web
09Xăng Gatexanggate.rentaicoder.comTách dịch vụ, xác thực bằng khoá bất đối xứngLit 3 · Vite · ASP.NET Core 10 · Docker · JWT RS256
10Vang An Thinhvanganthinh.comBảng giá: poll 30s → Strapi proxy → vang.todayAstro · Alpine.js · Tailwind CSS · Strapi · Docker
11ACP — Asia Consumer Productsacp.net.vnrender-static.js — dựng sẵn lúc build, không render lúc chạyEJS · Static render · Netlify
12Cashback Tradecashbacktrade.proQuy kết giới thiệu — mô tả từ luồng công khai, KHÔNG đọc được mã nguồn
13JinkyTRXtrone.cashbacktrade.proĐăng nhập không mật khẩu qua bot Telegram — quan sát từ màn xác thực

§ 03SELECTED

Six systems worth reading first

Each one carries its own algorithm section. Products without screenshots show their pseudocode instead.

ATS — Multi-agent candidate ranking

chat.rentaicoder.com

A recruitment system that ranks candidates through two independent retrieval paths, merges them with Reciprocal Rank Fusion, then has an LLM score the survivors from two perspectives.

Read the detailATS — Multi-agent candidate ranking

Vietnamese Legal AI Assistant

chat.rentaicoder.com/law.html

A legal assistant with five independent retrieval tools; the agent picks the tool to fit the question instead of running one fixed RAG pipeline.

Read the detailVietnamese Legal AI Assistant

Abstract Driven Development V3

abstractdriven.com · MIT

An open-source architecture methodology: every module at every depth has exactly five layers, so the dependency rules can be derived from the path.

Read the detailAbstract Driven Development V3

BankBridge

monorepo: ESP32 · Node · Android

Brings bank balance notifications from iPhone and Android into one dashboard, with a three-layer trust model that resists amount spoofing.

Read the detailBankBridge

VDG FreightForwarder

static build: HTML + JS + .wasm

A freight forwarding system that runs entirely client-side: Excel ingestion, validation and state transitions all live inside WebAssembly.

Read the detailVDG FreightForwarder

Xăng Gate

xanggate.rentaicoder.com

A Claude API access gateway for Vietnamese developers, paid entirely through domestic bank transfer.

Read the detailXăng Gate

Have a project in mind?

Tell us what you are building. We will come back with a technical approach, a timeline and a clear estimate.