Checkpoint 1 · Related-words data shape, v2

Confirm the data shape v2 — related words

A revised shape for the same design — confirm before any build runs.

4 decisions 1 comment makan worked example
Checkpoints Latest →
The design

The shape

The diagram below and its labels are the actual subject of this checkpoint, so they stay technical — read the four-line legend under it first if any term is unfamiliar.
erDiagram
    CT1_LEMMA ||--o{ CT2_SENSE : "has meanings"
    CT2_SENSE ||--o{ CT3_FORM : "has forms (unchanged, one parent)"
    CT2_SENSE ||--o{ SENSE_RELATION : "mentions"
    SENSE_RELATION }o--|| CT2_TARGET : "points at one target card"
    CT1_UMBRELLA ||--o{ CT2_TARGET : "Cluster phrases container for phrase targets"
    CT1_LEMMA ||--o{ CT2_TARGET : "a word target is a meaning of its lemma"
    SENSE_RELATION ||--o{ RELATION_GLOSS : "meaning next to this sense, one row per language"
    SENSE_RELATION ||--o{ RELATION_NOTE : "context note, one row per language"
    CT2_TARGET ||--o{ CARD_GLOSS_L1 : "general meaning, one row per language"
    CT2_TARGET ||--o{ CARD_EXAMPLE : "two Indonesian examples"
    CARD_EXAMPLE ||--o{ EXAMPLE_TEXT : "translation, one row per language"
    CT2_TARGET }o..o| ENRICH_QUEUE_ROW : "the plus on a lite card queues its full enrichment"
    SENSE_RELATION {
        uuid relation_id PK
        uuid source_card_id FK "the owning CT2 sense"
        uuid target_card_id FK "the CT2 target"
        text relation_kind "similar | opposite | informal | related_compound"
        int ordinal
        text register "formal | informal | slang | neutral — of the pairing, authored"
        bool is_idiom
        text tag_raw "jenis as authored"
        jsonb provenance "opaque, stored whole"
    }
    CT2_TARGET {
        uuid card_id PK "an existing sense, or a new lite row"
        text card_archetype "vocabulary | phrase"
        int card_tier "2"
        uuid parent_card_id FK "its lemma, or the Cluster phrases umbrella"
        text enrichment_level "full | lite — the new state (see §4)"
        text pronunciation
        text audio "t100 rows by card_id, as today"
    }
    

1. CT1 is a lemma — or, for cluster phrases with no natural lemma, an umbrella container that holds them.

2. CT2 is the learnable card — a specific meaning a learner can actually study.

3. CT3 is a form of one specific sense — unchanged by this design.

4. The linking table is not a card — it just records that one sense mentions one target, and what that mention means in context.

Proof point

Worked example: makan

makan’s “to eat” and “to work” senses, mapped onto the v2 shape. “Existing CT2 card” means a full card is already there to link to; “lite” means a small placeholder card would be created just to hold this word’s or phrase’s meaning until it’s fully authored.

Sense 1 — “to eat”

RelationTarget textTarget typeRegisterIs idiomEng meaningInd paraphrase
informalmamLite word (CT1+CT2)to be authoredto be authoredbaby talk for 'eat' used with small children at hometo be authored
informalmamamLite word (CT1+CT2)to be authoredto be authoredcute child language for 'eat', common when coaxing toddlersto be authored
informalmknLite word (CT1+CT2)to be authoredto be authoredtexting shorthand for 'makan' in chatsto be authored
oppositeberpuasaLite word (CT1+CT2)to be authoredNoto fast (abstain from eating)to be authored
oppositemenahan laparLite phrase — Cluster phrasesto be authoredNoto hold back hunger (not eat)to be authored
related compoundkasih makanLite phrase — Cluster phrasesto be authoredto be authoredto give food to a person or animalmemberi makan pada orang atau hewan
related compoundkereta makanLite phrase — Cluster phrasesto be authoredto be authoreddining cargerbong kereta api yang dipakai sebagai tempat makan; restorasi
related compoundmakan malamLite phrase — Cluster phrasesto be authoredto be authoredto have dinnermakan pada malam hari
related compoundmakan pagiLite phrase — Cluster phrasesto be authoredto be authoredto have breakfastmakan pada waktu pagi; menyarap
related compoundmakan siangLite phrase — Cluster phrasesto be authoredto be authoredto have lunchmakan pada waktu siang hari
related compoundmakan sirihLite phrase — Cluster phrasesto be authoredto be authoredthe habit of chewing betel leafkebiasaan mengunyah daun sirih
related compoundmencari makanLite phrase — Cluster phrasesto be authoredto be authoredto earn a livingmencari nafkah
related compoundnafsu makanLite phrase — Cluster phrasesto be authoredto be authoredthe feeling of wanting to eatrasa ingin makan
related compoundrumah makanLite phrase — Cluster phrasesto be authoredto be authoredrestaurantkedai tempat makan (menjual makanan)
related compoundsudah makan?Lite phrase — Cluster phrasesto be authoredto be authoreda friendly greeting asking if you have eatensapaan akrab untuk tanya sudah makan
similarbersantapLite word (CT1+CT2)to be authoredNoto dineto be authored
similarmelahapLite word (CT1+CT2)to be authoredNoto devourto be authored
similarmenikmati makananLite phrase — Cluster phrasesto be authoredNoto enjoy a mealto be authored
similarmenyantapLite word (CT1+CT2)to be authoredNoto partake (eat formally)to be authored

Sense 3 — “to work”

RelationTarget textTarget typeRegisterIs idiomEng meaningInd paraphrase
informalgak makanLite phrase — Cluster phrasesto be authoredto be authoredcolloquial for 'rem tidak makan' in chat and speechto be authored
oppositemacetExisting CT2 cardto be authoredNoto jam, to get stuckto be authored
oppositerem blongLite phrase — Cluster phrasesto be authoredNobrakes failto be authored
oppositetidak berfungsiLite phrase — Cluster phrasesto be authoredNoto not functionto be authored
similarbekerja sebagaimana mestinyaLite phrase — Cluster phrasesto be authoredNoto work as it shouldto be authored
similarberfungsiLite word (CT1+CT2)to be authoredNoto functionto be authored
similarberjalanExisting CT2 cardto be authoredNoto run properlyto be authored
similarbisaExisting CT2 cardto be authoredNoto work, can functionto be authored

Distinct targets across these two senses

TextTier assignmentCard exists today?PhoneticsExample 1Example 2
bekerja sebagaimana mestinyaLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
berfungsiLite word (CT1+CT2)Noto be authoredto be authoredto be authored
berjalanExisting CT2 cardYes/bər.ˈdʒa.lan/ · buhr-JAH-lahnSaya berjalan pagi ini.
I walked this morning.
Kemarin kami berjalan ke pasar.
Yesterday we walked to the market.
berpuasaLite word (CT1+CT2)Noto be authoredto be authoredto be authored
bersantapLite word (CT1+CT2)Noto be authoredto be authoredto be authored
bisaExisting CT2 cardYes/ˈbi.sa/ · BEE-sahSaya bisa membaca.
I can read.
Kamu bisa berenang?
Can you swim?
gak makanLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
kasih makanLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
kereta makanLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
macetExisting CT2 cardYes/ˈma.tʃət/ · MAH-chuhtJalan ke pasar sangat macet pagi ini.
The road to the market is very jammed this morning.
Saya beli bumbu kemarin di pasar, lalu saluran air di dapur macet.
I bought spices at the market yesterday, then the kitchen drain got blocked.
makan malamLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
makan pagiLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
makan siangLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
makan sirihLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
mamLite word (CT1+CT2)Noto be authoredto be authoredto be authored
mamamLite word (CT1+CT2)Noto be authoredto be authoredto be authored
melahapLite word (CT1+CT2)Noto be authoredto be authoredto be authored
menahan laparLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
mencari makanLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
menikmati makananLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
menyantapLite word (CT1+CT2)Noto be authoredto be authoredto be authored
mknLite word (CT1+CT2)Noto be authoredto be authoredto be authored
nafsu makanLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
rem blongLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
rumah makanLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
sudah makan?Lite phrase — Cluster phrasesNoto be authoredto be authoredto be authored
tidak berfungsiLite phrase — Cluster phrasesNoto be authoredto be authoredto be authored

Relation-row table: 23 of 81 cells exist today. Target table: 9 of 81 cells exist today. Combined: 32 of 162 cells exist today — the rest are “to be authored”.

Impact

What changes for the learner

Five concrete things a learner will see once this ships.
1
The card looks the same as it does today.
2
Every related word or phrase shows its meaning in both Indonesian and English.
3
Each one gets its own sound — one normal-speed clip and one slow clip.
4
Each one gets two example sentences, in both languages.
5
Tapping the + either adds a word or phrase that already has a full card, or turns a small placeholder card into a full one — either way, nothing is ever silently dropped.
Sequencing

Before it runs

Three things happen in order before any of this gets built at scale.
Decisions

Your decisions

Four calls to make before any build work starts, plus room for anything else.
1
DS2 — confirm this v2 shape
Why it matters: this supersedes the shape confirmed two days ago — worth a fresh yes.
2
UM — the phrase umbrella
Why it matters: decides how a placeholder phrase card is organized and whether it can accidentally show up in a normal lesson.
3
LT — how “lite” is marked on a card
Why it matters: a technical choice with a real consequence — it decides how easy it is to correctly exclude placeholder cards from counts and queues everywhere in the app.
4
PR2 — when the fifty-word proof can start
Why it matters: decides if the team waits on the sound-credit refresh before even proving the rest of the design out.
5
CM — anything else about this design
Why it matters: free-text only — use this for anything not covered above.