How the portal works today
A current guide for citizens, investors, architects, developers and AI agents: parcel analysis, land contribution, technical documentation, two search modes, verification status, source freshness, statistics, REST and MCP. The central rule is simple: AI may understand language, but regulatory facts must come from traceable VPAA records.
1. What VPAA Rules is — and what it is not
VPAA Rules is a structured layer above Serbian building/planning regulations and selected planning documents. A useful rule keeps a human-readable requirement together with the regulation or plan, gazette, article, literal quotation, applicability conditions and, where possible, a deterministic machine check.
The portal is designed for preliminary review, discovery and traceability. It does not replace the official gazette, the applicable planning document, location conditions, a competent authority, a responsible designer, legal advice or formal project approval.
2. Which mode should I use?
Rules — search
The first mode on the Rules page: search by topic, term or article number, then filter by regulation, status, severity or field. Every result has the literal quote, the original article and a permanent link.
Ask in plain language
For a question without knowing the regulation or article. AI interprets the question, but the answer comes only from rules with a quote, and all returned structured rules remain informational. When location matters, start with the parcel.
Database audit
Every regulation and every article, including articles with no rule yet — that is where a missed obligation shows up. Each article can be opened in full and reported.
Learning one act
Learn a regulation lays the same corpus out in the order the act is written — chapter, article, rule, quotation — for reading end to end instead of answering one question.
Procedure and choice of permit
Procedure guides explain how a case typically moves from parcel to occupancy permit and where projects usually stall. They are unofficial. The permit guide explains listed exceptions with conditions, quotations, official sources and a review date; it does not approve construction on a specific parcel.
Land contribution
Indicative Belgrade land development contribution by city zone, use and net floor area, with the reductions from the city decision. The binding amount is set by the Land Directorate.
Technical documentation
What goes into IDR, IDP, PGD, PZI and PIO for a given building category, with the rulebook article for each item and a Word draft of the main volume.
REST API
For applications and backends that need structured JSON, explicit schemas and deterministic checks.
MCP
For Claude or another MCP agent. The agent handles conversation; VPAA remains the source of regulatory/planning facts.
3. Parcel analysis / Plan Context
The public parcel analysis accepts cadastral municipality + parcel number, a map point, address lookup or current location. It first queries complete local copies of public Beoland/RGZ vector layers, then applies VPAA's local verification layers. Missing layers or unsupported queries use the public source.
The map shows when the local copies were downloaded. Planning layers refresh daily and parcels weekly; a failed refresh preserves the last complete copy. A planning copy older than seven days remains visible with a warning and cannot support an automatic legal conclusion. The download date does not confirm that a regulation is current. Orthophotos and other raster backgrounds use their own services and tile caches.
Search and map are shown together. Full screen keeps the search, analysis result, layers and map legend available; press Escape or the close button to return. Green zones have verified rules, purple zones have cited values awaiting review. A zone colour does not confirm conditions for every parcel inside it. The selected parcel has its own availability label after analysis.
If a required planning layer has no usable local copy and its source is unavailable, the result keeps any cadastral identity and area already found and explains the outage. This does not mean the parcel has no plan or rules. Retry the analysis later. Visible map layers load automatically when the map view changes.
For cadastral parcel input, the complete parcel polygon is used before direct-PGR parameters are promoted as parcel-wide conclusions. If the parcel intersects materially different planning contexts, the system fails closed instead of trusting only the centroid. Coordinate input, by definition, remains a point analysis.
After analysis, Save report (PDF) downloads the displayed results, citations, source links, timestamps and unresolved limitations. The PDF is created locally in your browser and does not replace official planning conditions. Statistics → Show remaining subzones lists the unverified entries from the review queue, with the reasons recorded in that dated snapshot.
Parcel Dossier stores a compact snapshot of the analysed parcel, your project notes and the project facts entered in the preparation tools. It is stored only in this browser, can be exported as JSON, and links directly to focused rules searches and a pre-filled Construction Guide path. Saving a dossier does not change a finding from informational to verified.
For a Belgrade parcel the result also shows the land contribution block: the city zone is read from the Land Directorate GIS layer, the block shows the amount per m² for each use in that zone, and for a chosen use and net floor area it gives an indicative total. Download DXF saves the parcel boundary in UTM 34N (EPSG:32634), with regulation and building lines, street axes and the envelope candidate from public GIS on separate layers. The lines are informational; the DXF is not a geodetic survey.
The Terrain and landslides block reads the Beoland landslide register at the parcel point and shows the landslide name, code, status (acute, temporarily dormant, potential, dormant, remediated or fossil) and a link to its PDF report. The point is checked, not the whole boundary, so the map also draws landslides and the boundaries of lower-order plans (PDR, DUP, RP, UP) from zoom 14; clicking inside them still selects the parcel. Inside the PGR area the block quotes the PGR rule on the four engineering-geological land categories, without stating which category applies to the parcel, and links to the URBEL geology map.
Hierarchy
PDR / specific plan > PGR > general rules. If a more specific plan controls the location, PGR is retained only as wider context and its parameters are not returned as the final project parameters.
What the capacity numbers mean
Development arithmetic is calculated only from verified planning parameters. GIS-only coverage/FAR is never multiplied by parcel area to create a plausible footprint or GFA. A verified coverage/free-area calculation can still produce only a mathematical footprint cap — not a guaranteed buildable footprint. Building line, setbacks, street width, mandatory urban design project, parking/garage, access and other constraints can reduce what actually fits.
4. Plain-language question vs rules search
Ask in plain language — semantic search
Uses /semantic-query/. AI converts ordinary wording into search phrases/concepts and may remove unrelated candidates. It can only search/filter existing VPAA material — never write a rule, threshold, article or citation.
Rules search and database audit — deterministic
Uses deterministic database search: script/diacritic normalization, conservative word-root matching, filters, pagination, regulation/article browsing and the public audit.
When the semantic planner is down, the citizen endpoint does not quietly substitute a keyword search. It answers 503 with coverage: ai_unavailable, retry_after and zero results, because a keyword search served in place of a semantic one looks like an answer and is not one. Deterministic keyword planning is a separate, deliberate caller choice: send "ai": false and the response comes back 200 with keyword_only: true. Either way, a failure of the AI planner must never be presented as proof that no rule exists.
5. How to ask the best question
Natural language is fine. Precision comes from explicit project facts: location, project/use, stage, the condition you want checked and every numeric value with its unit. Do not invent plan/zone facts just to get an answer.
Too vague
“Is my project OK?”
Better
“Apartment building in Belgrade, underground garage, clear ramp width 270 cm. Is that width sufficient and what facts are still missing?”
Project: [house / apartment building / hotel / commercial / mixed] Location: [city + parcel if relevant] Stage: [before location conditions / PGD / works / inspection] Known facts: [garage, dwellings, use, building position...] Measurement: [value + explicit unit] Question: [one concrete regulatory check] Then: tell me what is missing and cite every rule used.
6. How to read a rule card and status
| Field/status | Meaning |
|---|---|
| Question / requirement | Human-readable summary of what is checked and what the source requires. |
| Applicability / trap / note | Conditions, exceptions and common failure points that affect whether the rule applies. |
| Related | The same requirement often sits in two acts — ZPI art. 145 and the special-works pravilnik art. 4 are one question in two places. Where a rule explicitly points at another act and article, both sides carry a link to the other. |
| Source + literal quote | Traceability back to the regulation/plan, gazette and article. |
| AI provjereno · informativno | Public structured rule with a recorded source and quote that passes automated integrity checks. It supports preliminary review, not formal legal approval. |
| revizija | Quarantine: source, quote or article linkage needs correction. These records are excluded from public answers. |
| blokira | Potentially blocking if the applicable requirement is not satisfied. |
| proveriti | Requires checking, correction or additional evidence. |
| informativno | Useful context/procedure; not itself a machine pass/fail threshold. |
7. Reading a regulation article by article, and the change log
Learn a regulation shows the same corpus in the order the regulation itself is written — chapter, subsection, article, rule, verbatim quotation. Use it when you need to absorb one act end to end rather than answer a single question; the rules database is still the faster route to one answer. Every rule there carries a Cite button that copies the quotation together with the article and gazette number, ready to paste into a submission.
What changed is the change log of the rules database: regulations repealed, rules corrected, new packages added — each with a date and the reason. A repealed regulation is the heaviest kind of change and the one gazette numbers never show, because the act that repeals it usually carries a different name.
Procedure guides answer the question before all of these: what comes first. They walk through the usual route from parcel to occupancy permit, what is checked at each stage and where projects most often stall. They are explicitly unofficial. The guide on building-permit exceptions includes cited limits and conditions, a review date, and separate lists for works without a building-authority act and works requiring Article 145 approval. It links to the official texts and documentation guide. Its detailed content is withdrawn for re-review when the tracked local sources or editions change.
The Article 145, building-permit, adaptation and reconstruction guides also track changes to their cited local articles, editions and documentation annex. A changed or missing source withdraws the detailed instructions here and in the procedure library until re-review; this does not check online for new legislation. “Print this guide” retains its sources and date and, for permit exceptions, the selected object.
Monthly bulletin sends the same change log by e-mail once a month: regulations that entered into force, got a new version or were repealed, with the gazette and the official source, plus a summary of rule audits. Sign-up needs confirmation by e-mail, and every message has a one-click unsubscribe.
Guidelines of public authorities (for example the Belgrade technical instructions for garage design) are shown in Learn next to the regulations, but they are not regulations: they never enter the rules database, REST or MCP, and are cited by page of the official PDF.
Learn a regulation, the procedure guides and the bulletin are Serbian only; the change log, contribution, technical documentation, the rules database and this guide also exist in English.
8. Land contribution, technical documentation and DXF
Contribution calculates the Belgrade land development contribution as base price × net area × zone coefficient × use coefficient, then applies the reductions from the city decision: lump-sum payment, instalments, missing infrastructure (never for residential use), agreements under Art. 92 and the other listed cases. Every coefficient and reduction carries a literal quote that the build checks against the gazette text. The result is indicative; the binding calculation is issued by the Land Directorate.
Technical documentation lists the parts of IDR, IDP, PGD, PZI and PIO by building category and special cases (existing building, works under Art. 145), each with the article of Rulebook 96/2023, and prepares a Word draft of the main volume. The list does not replace the designer’s judgement or the requirements of the authority.
Article 145 profiles include masonry fences and solar plants. Where Annex 13 requires a technical description and list of works, the tool shows that content and does not produce a full IDP main volume. Conditional energy documents retain their conditions; the post-works energy certificate is marked “After works”. The separate profile-review date applies only to the displayed Annex 13 profiles, not the entire catalog.
DXF is described under parcel analysis: parcel boundary in UTM 34N and public GIS lines on separate informational layers.
9. Coverage: what the database knows
Coverage is intentionally visible rather than implied. A regulation can be in the full-text corpus before structured rules have been extracted, and conflicting records remain in revision quarantine until their source/citation relationship is repaired.
Sources already producing structured rules
One row per source: 65 sources (regulations from the registry and the Belgrade PGR) with 2131 public rules. Gazette numbers are those of the registry copy.
The full-text index currently contains 3 sources without public structured rules. This includes historical sources and is not a count of missing regulations.
10. Source freshness and Statistics
Source freshness
Official-first audit. Green means the monitored official source confirms the same gazette set as the local copy. A secondary portal may warn, but it can never create a green status by itself.
Statistics
Live counts of public AI-verified informational rules and revision records; a growth chart by status on a dated axis (Belgrade time) with the exact time of each database version and the net change per day; public rules by regulation and by subject area; the direct-PGR subzones split into verified, in the revision queue and blocked; and the age of every data source.
Source Freshness does not by itself declare that an act is legally in force. It checks whether the local copy matches the latest version the monitored official source can confirm. When evidence is weak, the result stays yellow/grey rather than assuming green.
The same page lists the sources outside the regulation registry: the Belgrade contribution decision, the city zones decision, the Directorate base-price table, guidelines and the review of new issues of the Official Gazette of Belgrade. A maintenance tool checks them, not the button on the page; the date shown is the last check that found the source unchanged.
Recorded source checks (not the live freshness dashboard): latest on 3 Sep 2026 (46 days ago); 10 records carry a check date, the index has 67 regulations.
11. Core AI principle: model for language, rule engine for facts
12. REST API
Start with discovery and do not hard-code profile or measurement fields. The deployed corpus exposes the current schema.
| Endpoint | Method | Use |
|---|---|---|
/api/v2/rules/ | GET | Discovery, policies and live schemas. |
/api/v2/rules/query/ | POST JSON | Focused AI-verified informational search. |
/api/v2/rules/semantic-query/ | POST JSON | Citizen semantic search; AI is search/relevance only. |
/api/v2/rules/check/ | POST JSON | Concrete project checks. |
/api/v2/rules/audit/ | POST JSON | Broad AI-informational pre-submission audit. |
/api/v2/rules/plan-context/ | POST JSON | Enriched parcel/point planning context. |
Discovery
curl -sS https://vladimirperovic.com/api/v2/rules/
Discovery returns the live corpus: public_rules, verified_rules and regulations. regulations counts sources with public rules — registry regulations plus the Belgrade PGR — the same number as Statistics and this page, not the number of regulations in the index.
Semantic citizen search
curl -sS https://vladimirperovic.com/api/v2/rules/semantic-query/ \
-H 'Content-Type: application/json' \
-d '{"question":"Koliko moram od komšije?","audience":"citizen","max_results":40}'Parcel context
curl -sS https://vladimirperovic.com/api/v2/rules/plan-context/ \
-H 'Content-Type: application/json' \
-d '{"parcel":{"cadastral_municipality":"Zemun","number":"1234/5"}}'Request rules
- POST →
Content-Type: application/json - Maximum JSON body: 128 KiB for the Rules REST/MCP interface.
- Numeric measurements require value + unit.
- Unknown profile fields/metrics are rejected.
- Optional private mode uses Authorization: Bearer when VPAA_RULES_API_KEY is configured.
- Rate limit: 120 requests/minute for discovery, 60/minute per POST endpoint, 120/minute for MCP. Over the limit the answer is 429 with Retry-After.
- A planner outage answers 503 with coverage: ai_unavailable and retry_after — never a partial result.
13. MCP: connecting Claude or another agent
Remote endpoint:
https://vladimirperovic.com/mcp/
The server exposes four tools:
get_plan_context— resolve parcel/point planning context; call first for parcel-specific Belgrade planning questions.search_rules— find focused AI-verified informational rules.check_project— evaluate selected checks against explicit facts/measurements.audit_project— run a broader AI-informational pre-submission scan.
Protocol compatibility
Modern stateless MCP 2026-07-28 is supported, including server discovery, per-request protocol/routing validation and server metadata. Legacy initialize-era clients 2025-11-25, 2025-06-18 and 2025-03-26 remain supported.
When private mode is on (VPAA_RULES_API_KEY), MCP accepts either the fixed key or an OAuth 2.1 access token: a connector such as Claude, ChatGPT or Codex registers itself, the site owner approves access, and a 401 answer points the client to the protected-resource metadata.
MCP validates Origin for browser/DNS-rebinding protection. The deployment can override the allowed browser origins with VPAA_MCP_ALLOWED_ORIGINS.
Practical CEOP and project-procedure guides
The practical library explains the typical path from parcel and planning document through location conditions, design documentation, permit, construction, technical inspection, occupancy permit and registration, plus special cases such as Article 145 works, reconstruction, accessibility, parking, fire safety, roads, water and heritage.
14. Recommended instructions for an AI agent
Use VPAA Rules as the source of regulatory/planning facts. 1. Never provide a legal or planning threshold from model memory. 2. Read the live VPAA tool/schema before mapping fields. 3. If a Belgrade parcel/coordinate is known and the question depends on the plan, call get_plan_context first. 4. For parcel input, rely on the returned polygon-refined context; for coordinate input remember it is a point analysis. 5. Never calculate footprint or GFA from GIS-only values. 6. Decompose compound questions into focused checks. 7. Extract only facts explicitly stated or reliably present in project data. 8. Preserve every numeric measurement with its unit; ask if the unit is unknown. 9. Use search_rules, check_project and audit_project for regulatory checks. 10. Treat possible_rules / missing_information as unresolved, not true. 11. Explain only AI-verified informational findings returned by VPAA, cite their sources, and never present them as formal legal approval. 12. If no relevant public rule is returned, say structured coverage is insufficient; do not fill the gap from memory. 13. Never describe no_detected_issue as project approval/compliance. 14. Answer the client in normal language; do not dump raw JSON unless asked.
15. How to interpret machine results
| Status | Meaning |
|---|---|
applicable_rules | AI-verified informational rules whose applicability facts are established. |
possible_rules | An AI-verified informational rule may apply, but required facts are missing. |
missing_information | Facts to ask for next. |
unverified_match_only | Legacy compatibility state; the public structured corpus normally uses one AI-informational tier. |
no_verified_answer | No relevant structured public rule currently supports an informational answer. |
needs_attention | At least one deterministic check failed. |
incomplete | Required facts/measurements or unresolved coverage are missing. |
manual_review_required | No numeric failure, but human/project review is still required. |
no_detected_issue | No issue detected within informational checks that could actually be evaluated. Not approval. |
16. Security, integrity and limitations
- The public website opens the Rules database read-only.
- Revision rules are excluded from public AI conclusions.
- Unknown applicability remains unknown; missing/incompatible units fail closed.
- REST and MCP are rate-limited and can optionally require a Bearer API key; MCP also accepts an OAuth token approved by the site owner.
- MCP validates browser Origin.
- Regulations and plans change; freshness/audit views reduce risk but do not replace checking the authoritative current source for a real submission.