Projects Lingo

Lingo

Language of the Singapore Public Service

The glossary I wish I had when I started work.

Lingo started as one place to look up the unfamiliar language that made onboarding harder. It now has more than 3,500 terms, a 222-term newbie guide and quiz practice.

Visit site (opens in a new tab)
Lingo landing page for searching Singapore public-service terminology

The onboarding problem

When I joined, documents and conversations were full of abbreviations I did not know.

I heard the same from colleagues, and internal employee surveys also pointed to unfamiliar terminology as a particular pain point during onboarding.

The available references were scattered across PDFs, Word documents and intranet pages, so I started collecting the terms in one place. It remained a personal project, but eventually became useful enough to be linked from an internal onboarding guide.

Starting with a glossary

I began with a couple of small compilations that other people had put together, then kept adding terms as I encountered them. Those starting lists now make up a relatively small part of the catalogue, which later grew through manual additions and LLM-assisted research.

Gahmen loves acronyms, and they do not always follow the tidy pattern of taking the first letter of every word. GeBIZ compresses “Government Electronic Business”, while HRPS combines “HR” with “Payroll System”.

Then the collection moved beyond acronyms. Branded names such as ServiceSG, LifeSG and FormSG, along with workplace expressions such as “seek a steer”, “take offline” and “first cut”, were also part of what a new officer had to learn. So I widened the list and eventually renamed it Lingo, a glossary for the language of the Singapore Public Service.

Inside the glossary

Select to enlarge

Meilisearch does the heavy lifting now

Someone might remember only a few letters, part of a phrase or roughly how a name sounded, so I originally built my own search using Jaro-Winkler and Metaphone to handle partial and phonetic matches.

It did a decent job, but as the list grew I spent more and more time fiddling with ranking. Eventually I moved the main search to Meilisearch, which handles typos and ranking better than my home-grown version. The old Jaro-Winkler and Metaphone search still kicks in if Meilisearch is unavailable.

I also added popular searches to the home page, but only canonical exact-match searches submitted through the search form count. Raw phrases, IP addresses, user agents and session identifiers are not stored, and clicking a popular term does not reinforce its own ranking.

Lingo search results showing multiple meanings of DC across Singapore Public Service domains

Turning the glossary into an onboarding guide

Search only helps after someone has already run into a term they do not know.

The pain point had always been onboarding, so I started arranging the terms around how new officers actually encounter the Public Service: starting work, attending meetings, writing papers, navigating the hierarchy, handling procurement and working across agencies.

The newbie guide now pulls together 222 terms across eight situations. It starts with ten terms, then opens into 51 essentials and the wider collection. Entries can include a plain-language explanation, examples, other ways the term is heard, context and a public source.

I also added Explore because the data could do more than sit behind a search box. It groups terms with several meanings, names built from within words, lookalikes and older terms alongside their replacements. The quiz came after that, with ten-question rounds and missed answers returning for review at the end.

I kept the quiz deliberately lightweight: no account, timer or leaderboard. Completed-round totals stay only in the browser.

Lingo newbie guide organised around eight common Public Service workplace situations

Inside the newbie guide

Select to enlarge

More ways into the glossary

Select to enlarge

Quiz practice

Select to enlarge

Adding more without making a mess

As the glossary grew, I needed a way to accept help without letting anything go straight into search.

A glossary this broad will always have gaps, especially when workplace language varies across agencies. Anyone can now suggest a term, its meaning, where they heard it and a public source that can help verify it.

Suggestions enter a private review queue. I check the meaning and context before accepting anything into the curated glossary, and the form warns contributors to leave out classified, sensitive or personal information.

An accepted suggestion becomes a JSON draft I can copy into the glossary, together with an editorial record. I still have to add it by hand, so the review workspace cannot publish directly into live search results.

Filling in definitions, examples and sources by hand got slow, so I use LLMs to help research new terms and find missing context. I often ask one model to draft the entry and another to poke holes in it.

Everything still goes through review and a final scan from me. I track which entries have been checked against a public reference, and the embedded JSON files remain the source of truth. The LLMs never answer live searches or publish entries.

Built for when you need it

Most people will use Lingo only when a term gets in their way, and that is fine.

They look it up, find the explanation and get back to whatever they were doing. The newbie guide gives new officers somewhere to start before that happens, with situations they recognise and a way to practise the terms.

I started with a glossary because that was the simplest answer to the onboarding problem. Over time it has become much closer to the onboarding resource I wanted when I joined.

Built with

Application
Go, Templ, HTMX, Tailwind CSS
Search
Meilisearch, Jaro-Winkler, Metaphone
Data
Embedded JSON, PostgreSQL
Observability
Grafana Cloud, OpenTelemetry

© 2026 Zixian Chen