five precepts, as is_old_student Yes

Five precepts meditation practice: encoded as a boolean, sorted before the match

Most explainers on this topic define the five precepts, explain their role as a stabilizing ethical base, and stop there. That work is already done, repeatedly, across the tradition's best sites. This page covers the part those sites cannot: the one place in this repo where the precepts show up as a running piece of code. The form at src/components/waitlist-signup.tsx collects them as a boolean. The matcher at src/app/api/auto-match/route.ts reads that boolean as the second lexicographic sort key when pairing daily sitters. Nothing on this page teaches the precepts; it only reports where they live in the data model.

M
Matthew Diakonov
9 min read
4.9from direct meditator feedback
Every claim pinned to a specific file path and line range in this repo
No operational instruction about sila or the technique; anything prescriptive is redirected to dhamma.org
The pañcasila formula is quoted in its Pali register, not taught

What the common explainers cover well

A careful reader can learn a lot from Spirit Rock, Insight Meditation Center, Tricycle, the Wikipedia article on the five precepts, Plum Village's Five Mindfulness Trainings, and Buddho.org. Those pages treat the precepts as an ethical foundation for meditation. Non-harming. Truthful speech. Non-stealing. Abstaining from sexual misconduct. Avoiding intoxicants that dull awareness. They describe the precepts as one of three legs of a stool, next to concentration and wisdom, and they do a good job of tracing how a mind that is not agitating itself with broken commitments sits more easily.

This page does not try to redo any of that. If you want the conceptual grounding, those pages are better placed to give it to you, and the tradition's authorized teachers better placed still. What this page has that those do not is a code path.

The field, in the form

The practice-buddy signup asks one question whose answer is the closest thing the schema has to a precepts column. The legend defines the semantics: Yes means one 10-day course completed, which is the event at which the precepts are formally administered in Pali. The column is a nullable string, not a checkbox array; the tradition is carried in by reference to the course, not reproduced in the form.

src/components/waitlist-signup.tsx

Two consequences. First, the site does not re-administer the precepts; the act of taking them stays at the course where it belongs. Second, the row cannot be audited by the operator for ongoing observance, because the schema does not carry the information and the operator is not the person for that job.

The field, in the sorter

Every 30 minutes the auto-match handler builds a list of viable session pairs and sorts them. There are four keys, evaluated in strict order. The second key is a boolean named bothOld whose input is the is_old_student column on both sides of the pair.

src/app/api/auto-match/route.ts

The ordering is not a value statement. A ready non-old-student outranks a pending old student because intent to sit right now is a stronger operational signal than credential, and the matcher is pairing daily sitters, not ranking meditators. But inside any readyScore tier, two rows that both came through a 10-day course sort ahead of a mixed pair. That is the only place the precepts touch the runtime.

Inputs, sorter, outputs

Five fields flow into one sorter, and four keys come out the other side. The precepts boolean is one of them. The diagram reads left to right; nothing on the left side is a quality of a person, and nothing on the right is a subjective judgment.

waitlist_entries columns -> auto-match sorter -> lexicographic keys

is_old_student field
Course completion at dhamma.org
status column
session_duration
morning_utc + evening_utc
auto-match sorter
readyScore
bothOld
sessionMatch
smallest UTC diff

The pañcasila, in its original register

The five precepts are administered in Pali at the start of every course in this tradition. Quoting the formula is a linguistic note, not an instruction; the teacher on retreat is the person who puts each one into practice. The grid below is a reference, with each card noting what, if anything, the data model does with that particular precept.

panatipata veramani

Abstaining from destroying life. Spoken first in the Pali formula at Day 0 of a 10-day course. The corresponding row in this repo is an is_old_student Yes that cannot be set without that course event.

adinnadana veramani

Abstaining from taking what is not given. No additional column tracks this. The system trusts the formal commitment and nothing more.

kamesu micchacara veramani

Abstaining from sexual misconduct. Inside a course this is held as complete celibacy; in lay life the baseline softens to non-harming conduct. The schema does not distinguish either state.

musavada veramani

Abstaining from wrong speech. Not enforced or audited by the site. The operator has no way to verify self-reported field values, and does not try.

sura-meraya-majja-pamadatthana veramani

Abstaining from intoxicants that cause heedlessness. Day 10 discourses at courses frame the precepts as five legs of a stool; the matcher reduces the stool to one boolean for sorting, and points the reader at dhamma.org for everything else.

The precepts in the runtime, in four numbers

If the whole role of the five precepts inside this particular system collapses to integers, these are the four that survive. They are literal constants in the sorter, not rhetorical flourishes.

0column on waitlist_entries that encodes the precepts (is_old_student)
0possible string values for that column ('Yes' and 'No')
0position of bothOld in the four-key sort (after readyScore)
0server-side audits of whether a Yes row is still keeping the precepts

None of these numbers is tunable per user. They apply to the whole pool, every tick. The role of the precepts inside this system is narrow and deliberate; the product is not trying to be a moral authority. It is trying to put two people in a room together at 06:30 UTC on a Tuesday.

From the course to the match row

Eight steps from the Pali formula to a matches row. Every step is logistics, not technique; every step either happens off-site at a center or happens inside a file in this repo. None of them is an instruction about how to sit.

1

A 10-day course at dhamma.org

The teacher administers the five precepts in Pali on Day 0, before any instruction begins. This is the event the product treats as the canonical moment the precepts were taken. Nothing on this site substitutes for it.

2

The student completes the course

Day 11 departure. From that point on, the student is an 'old student' in the tradition's terminology. The commitment to the five precepts is part of what old-student status implies in lay life.

3

Signup on vipassana.cool

Back home, the student fills out the waitlist form at /practice-buddy. The radio group at waitlist-signup.tsx lines 263 to 285 asks 'Are you an old student?' and writes the answer to is_old_student.

4

A row is inserted

db.ts line 119 inserts the value along with timezone, session duration, frequency, and the rest. The column is a string ('Yes' or 'No'), not a boolean; the matcher coerces it later.

5

The cron runs at :00 or :30

Every 30 minutes, vercel.json triggers GET /api/auto-match. The handler loads the pool, filters by the 60-minute UTC window, and builds ScoredPair records for every viable pair.

6

bothOld is computed

Per pair, at lines 173 to 175. The flag is true only when both sa.person.is_old_student and sb.person.is_old_student equal the string 'Yes'. No partial credit, no weighting.

7

The sort fires

Lines 186 to 189. readyScore first, bothOld second, sessionMatch third, UTC diff fourth. Pairs where the precepts boolean is true for both sides move up inside any readyScore tier.

8

Two rows, one match

createMatch inserts a matches row. Two confirmation emails go out, a shared Meet URL gets generated on confirmation, and what the pair does with the precepts inside their sit is between them and a teacher.

Every token on this page you can grep

Read left to right. Each of these strings appears either in this repo, in the Pali formula, or in the tradition's external material. Any of them is a valid way to verify the claim that the precepts show up here exactly once and in exactly one role.

is_old_student === 'Yes'bothOld = sa && sbsecond sort keyreadyScore > bothOld > sessionMatchpanatipata veramaniadinnadana veramanikamesu micchacara veramanimusavada veramanisura-meraya-majja-pamadatthana veramaniwaitlist_entries.is_old_studentdhamma.org // teacher, not matcher

Common explainers vs. the matcher's view

FeatureCommon explainers (precepts as foundation)vipassana.cool (precepts as boolean)
What the five precepts areEthical guidelines that create the conditions for deep meditation; precepts, concentration, wisdom as a three-legged stool.A single boolean column on waitlist_entries.is_old_student, settable only via self-report of course completion.
Where the precepts live in the codeThey do not. Explainer pages are not connected to a running system.src/app/api/auto-match/route.ts lines 146 and 173 to 175. Also the form at waitlist-signup.tsx lines 263 to 285.
How precepts affect pairingNot applicable; no pairing.Second sort key after readyScore. Two old-student rows sort above a mixed pair at the same readyScore.
Verification modelEthical exhortation; the reader verifies their own conduct.None server-side. The course event is treated as sufficient evidence of formal commitment; there is no background check.
Who answers questions about the preceptsThe article's author or the tradition the article represents.An authorized assistant teacher at a 10-day course, reached via dhamma.org. The matcher does not teach.
What happens to non-old-student rowsNot applicable; every reader is treated the same.Full participation. bothOld only breaks ties; it never gates admission to the pool.
Cost to participateReading time and attention.A 2-minute form. Everything else is the cron's job, and the cron is free in the dana tradition the service orbits.
line 174

sa.person.is_old_student === 'Yes' && sb.person.is_old_student === 'Yes' — the only place in this repo where the five precepts participate in a comparison operator.

src/app/api/auto-match/route.ts, lines 173 to 175

Where to go for what this page will not give you

Anything prescriptive about working with the precepts inside your own practice belongs with an authorized teacher at a 10-day course taught in the tradition of S.N. Goenka. That includes questions about what the precepts ask of a lay meditator between courses, about how the eight precepts taken during a course relate to the five held in daily life, and about what to do when a specific precept becomes difficult. Those questions have been answered for decades, by people qualified to answer them, inside a format specifically designed for them. Courses are free, run on donations, and are listed at dhamma.org.

What this page will give you is a faithful description of where the precepts show up in a narrow technical artifact: a sorter that pairs people who want to sit together daily. That is a legitimate and small role. Treating it as larger would overstate what this system does and understate what a course does.

The whole role, in two numbers

The precepts participate in the sort as key number 0 out of four, and they do it through exactly 0 comparison expression at route.ts line 174. Everything else about the five precepts lives at the course and at dhamma.org, not here.

Want to walk through what bothOld would look like for your sit?

Book a short call and we will open route.ts, look at where the precepts boolean would fire for your row, and talk through what the match row would carry, if anything, downstream.

Frequently asked questions

Why does this page not tell me how to use the five precepts in my own meditation?

Because anything operational about how to practice, including how to use the precepts as a support for daily sits, belongs inside a 10-day residential course with an authorized assistant teacher. The course is the place that formally administers the precepts in Pali, the teacher is the person who answers questions about working with them on the cushion, and dhamma.org is where you sign up. This page is a logistics and code note about how the precepts surface inside one peer-matching system. For anything prescriptive, go there, not here.

Where in this repo are the five precepts actually encoded?

As the is_old_student column on the waitlist_entries table. The form collects the value at src/components/waitlist-signup.tsx lines 263 to 285, where the legend reads 'Are you an old student?' and the helper text defines Yes as 'completed at least one 10-day course.' That completion is the moment the precepts were formally taken in the Goenka tradition, so the column is the closest thing the schema has to a precepts field. It is a boolean. The database does not track which precepts you follow or how well. It tracks only the fact that a course happened.

What does the matcher do with that boolean?

Lines 173 to 175 of src/app/api/auto-match/route.ts compute a bothOld flag that is true only when sa.person.is_old_student and sb.person.is_old_student are both the string 'Yes'. Lines 186 to 189 use that flag as the second key in a four-key lexicographic sort, after readyScore and before sessionMatch. The practical consequence: when two pairs both pass the 60-minute UTC window and both have the same readyScore, the pair where both sides have been through a 10-day course sorts first and gets written to the matches table first.

Does the matcher check whether a partner is actually keeping the precepts?

No. Nothing on the server side audits behavior. There is no ping asking if you drank last night or lied at work this morning. The boolean is self-reported at signup and never revisited. The system trusts the course event as sufficient evidence of formal commitment and leaves the ongoing observance, and any conversation about it, to the pair of humans in the match row and to the authorized teachers they learn from. A system that tried to police the precepts would need a tooling and relationship that Vipassana.cool does not have and does not want.

What exactly are the five precepts, as they come up at a Goenka course?

In the Pali formula that gets administered on Day 0, they are: panatipata veramani (abstain from destroying life), adinnadana veramani (abstain from taking what is not given), kamesu micchacara veramani (abstain from sexual misconduct, which during the course means any sexual activity), musavada veramani (abstain from wrong speech), and sura-meraya-majja-pamadatthana veramani (abstain from intoxicants that cause heedlessness). Eight precepts are taken by old students for the duration of a course, but the five are the baseline for lay life after the course. This page is quoting the formula, not teaching it; the teaching is done at the course itself.

Why does the sort key put readyScore above bothOld?

Because a row marked 'ready' has confirmed intent to sit right now, which is a stronger operational signal than a historical course completion. The matcher is trying to get two people to sit together in a specific 60-minute slot, not to rank meditators by credentials. A ready non-old-student and a pending old student produce a pair with readyScore 1 and bothOld false; two ready rows produce readyScore 2 and sort first even if one of them is not an old student. The precepts boolean breaks ties among people who are all trying to sit right now, not the other way around.

Can you sign up for the practice-buddy system without having taken the five precepts?

Yes. Nothing in src/app/api/auto-match/route.ts filters out rows where is_old_student is 'No'. A non-old-student row is fully eligible: it enters the pool after the 24-hour cool-off (lines 88 to 91), it is paired on identical rules, and it can end up in a match row with another non-old-student or with an old student. The only difference bothOld creates is priority inside a tie, never an admission gate. The product is a peer-matching utility, not a certification scheme.

Why this framing of the precepts, rather than the usual ethical-foundation framing most articles use?

Because the usual framing is already covered in great detail by Spirit Rock, Insight Meditation Center, the Wikipedia article, vipassana.com, and Plum Village's Five Mindfulness Trainings. Duplicating that content here would add nothing the reader cannot find elsewhere. The part that is genuinely unique to vipassana.cool is that the precepts show up at a specific file path as a specific column read by a specific sort key. That is the part this page is for. Everything else is a link away.

What happens if an old student and a non-old-student are paired?

Nothing different at runtime. The match row is written the same way, the confirmation emails are dispatched the same way, and the shared Meet URL is generated on the same schedule. The pair's readyScore and diff carried them to the top of the sort; the fact that one side has bothOld contribution and the other does not was a tie-breaker that did not fire. Inside the sit itself the pair negotiates whatever they negotiate. This site does not instruct either of them on how to hold the precepts during a sit and does not need to.

Where should I actually learn how the precepts function inside the practice?

At a 10-day course taught by an assistant teacher in the tradition of S.N. Goenka. Courses are free, run on donations, and are listed at dhamma.org. The teacher administers the precepts formally on Day 0, answers questions daily in the small-group interviews, and discusses their role in the nightly discourses. No article, including this one, substitutes for that. If you are already an old student and want to talk about what the precepts mean for a daily sit, talk to an assistant teacher at your nearest center, not to a matcher.

Related pages on adjacent topics

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.