Open Data Portal for a Uruguayan Departmental Government
Designed and built a clickable open data console for a Uruguayan departmental government: one catalogue of DCAT-described datasets, a publishing pipeline from draft to published, and a disclosure review workbench that blocks personal data and suppresses small cells before anything reaches the public.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Dashboard, dataset catalogue, dataset detail with 8 tabs, publishing pipeline and the disclosure review workbench. Every one of the 27 demo datasets opens its own detail page.
Any count of people under 5 is suppressed and shown as "<5", then secondary suppression hides extra cells so totals cannot reveal them. The sample submission hides 6 primary and 7 secondary cells.
Draft, in disclosure review, returned, awaiting approval, scheduled and published. Days in stage turn amber after 5 working days and red after 10.
12 publishing units including three municipios, 15 submissions with 4 in disclosure review, 13 staff users and 2 open licences.
The Intendencia publishes about 60 datasets as spreadsheets attached to news posts, plus a few entries uploaded by hand to the national catalogue. Nobody knows which files are current, most have no licence, and each department formats dates and neighbourhood names its own way. Twice in one year a file went out with data that should never have been public: applicants' ID numbers in a permit list, and a social assistance table where some neighbourhoods had only two or three households.
Aljibe gives publishing one route with a mandatory review. A data steward drafts a dataset with DCAT metadata and a licence, a disclosure reviewer checks it for personal data and small cells, a department director approves it, and a schedule keeps it refreshed from the source system, while the published catalogue is sent on to Uruguay's national open data catalogue.
A Uruguayan departmental government has a duty to publish information in open formats and a duty to protect the personal data it holds. Every dataset sits between the two, and the people who know the data are spread across a dozen departments and municipios.
Under Ley 18.331 personal data is not published as open data unless it is already lawfully public or anonymised. Source files carry cédula numbers, names, addresses and free-text notes, and a column that should be dropped is easy to miss in a spreadsheet.
A table of counts can point to a household when a cell holds only two or three people. Hiding the small cell is not enough: if the row and column totals stay, the hidden value can be worked out, so further cells have to be suppressed too.
Waste collection routes had not been updated in two years. Without a schedule tied to the source system, data goes stale silently, and residents cannot tell a current file from an old one.
Stewards in each department, reviewers, directors and the open data coordinator all touch a dataset. The catalogue needs consistent metadata, exactly one licence per dataset and a clear record of who approved what, and it must also feed AGESIC's national catalogue.
Mapped 9 user roles, from data stewards and disclosure reviewers to public visitors and API developers, 42 screens across the staff console, the mobile-first public site and the developer portal, and the data model for publishing units, DCAT datasets, resources, submissions, disclosure rules, refresh runs, dashboards, API keys and dataset requests. Wrote down the rules the design follows: Ley 18.381 on access to public information, Ley 18.331 on personal data, AGESIC open data and licensing guidance, W3C DCAT metadata and WCAG 2.1 AA for the public site.
Built 5 key staff screens on a production dashboard kit: the dashboard with KPIs, freshness donut, pipeline by stage and a needs-attention list that puts personal data reports first, the catalogue with filters and a quick view panel, dataset detail with metadata, licence, resources, schema, versions and refresh history, the publishing pipeline as a board or table, and the disclosure review workbench with column flags, a small-cells grid, an inspector panel and the decision modal. Actions run on local state.
Push to the national catalogue through its CKAN API, DCAT export in JSON-LD and RDF/XML, scheduled refresh from database views, GIS layers, SFTP and REST sources through Airflow or Dagster, PostgreSQL with PostGIS, an API gateway with keys and rate limits, Entra ID sign-in for staff and ID Uruguay for developers, and an audit record of every publication, suppression, approval, licence change and key action. Plus the remaining screens: the public site with explorer and dashboards, the chart builder, API, requests, reports and settings.
The workbench flags every column as a direct identifier, quasi-identifier, count of people, free text or lawfully public, with sample values and the pattern that triggered it. A cédula column is blocked from publication, while a licensed business name or premises address is marked lawfully public with a note.
The small-cells grid highlights counts below the threshold and hatches the extra cells secondary suppression must hide. A toggle shows the published view with the "<5" marker, and the suppression summary names the rule version applied.
The reviewer can clear, clear with changes, return to the steward or reject. Anything other than a clean clearance requires written reasons, which go to the steward with the record of the review.
Each dataset carries a fresh, due, overdue or failing chip against its update frequency, the dashboard counts them in a donut, and pipeline cards turn amber and then red as a submission waits, so stale data and stuck reviews surface on their own.

Designed and built a clickable staff console for an Estonian city's resident services portal: service queues with eligibility results, case detail with register data pulled over X-Road, decision drafting with lawful reasons and appeal information, batch signing with eID and deadline tracking - so residents are never asked for data the state already holds.

Designed and built a clickable permitting and licensing platform for a US city's development services department: completeness checks before the review clock starts, building, zoning, fire and public works reviews running in parallel against city targets, an inspection board that checks certifications, and one record for every permit with its parcel, parties, holds, fees and inspections.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab