School Choice and Unified Enrollment Software: Why the Match, the Waitlist and the Appeal All Break in Public
$80,000 to $180,000 for a first release in 14 to 20 weeks is the honest band for a common application with priority tiers, a defensible matching run and published results, which is what most cities need before their next enrollment season. A full platform adding waitlist management over the following six months, address and boundary validation against local geographic information systems, appeals, mid-year transfers and integration with every participating school's student information system runs $200,000 to $450,000 phased over 6 to 12 months. Build when your priority rules come from a board policy or a court order rather than a vendor's configuration screen, when charters and district schools must be matched in one run, or when you have to publish a verifiable random seed. A single district running a handful of magnet lotteries should buy.
Why unified enrollment is unlike any other application system a city runs
The results go out on a Friday in March. Within an hour, a parent whose child was placed at their sixth choice will call a board member. By Monday a reporter will ask how the algorithm works. Within a month someone will file a records request for the seed and the run log, and if your answer is that the vendor ran it, you have a political problem that no amount of software features will solve.
That is the structural difference. An enrollment lottery is not an application system with a random number generator at the end. It is a public decision procedure that allocates scarce seats and, with them, per pupil funding, and it has to be explainable, reproducible and defensible to people who are angry and entitled to an answer. Most software categories fail quietly. This one fails on the local news.
The tooling is uneven for a reason. SchoolMint is strong on the family-facing side, application capture, communication and registration, and it is a reasonable choice where the matching logic is simple. Avela was built specifically for unified enrollment and matching and is the most credible packaged option if your rules fit its model. PowerSchool Enrollment is genuinely good at registration forms and the handoff into the student information system, and is not a matching engine. Where all three strain is the same place: the part of your process that exists because your board, your state, or a consent decree said so, and which nobody else in the country implements the same way.
Problem 1: priority tiers are local policy, and policy changes in March
Write out your actual rules and they are never as clean as a settings page. Sibling priority, but does a sibling in a feeder school count, and what happens when the sibling's own placement is not yet decided in the same run. Geographic priority, but by walk zone polygon, attendance boundary, or the neighbourhood definition the board adopted last year that does not match either. Socioeconomic priority through a weighted lottery, which federal Charter Schools Program rules permit charters to run for educationally disadvantaged students but which has to be implemented exactly as adopted. Continuing student rights. Staff children. Programme specific eligibility for dual language or gifted seats.
Then the board amends one tier in February, six weeks before the run, because a council member heard from constituents. A configured product means a vendor ticket, a release window and a hope. That timing is the single most common reason cities we work with move to a build: the policy owner and the implementation have to be in the same building.
A custom build represents priorities as ordered, composable rules with an effective date, so this year's run uses this year's policy and last year's run can still be reproduced exactly as it happened. Every applicant's tier assignment is stored with the reason, which is what lets a staff member answer a parent's call in one minute instead of escalating it.
Problem 2: the match is an algorithm you will have to explain in public
Most unified enrollment systems use a student proposing deferred acceptance match, the Gale-Shapley family of algorithms, because it has a property parents deserve: listing your true preference order cannot hurt you. That property is worth defending in plain language at a community meeting, and it is the reason cities moved away from first-choice-first schemes that punished families for ambition.
The details are where implementations differ and where public trust is won or lost. A single tiebreak number per student, used at every school, produces different outcomes and different waitlist behaviour than a separate random number per school. Neither is wrong. Your board has to choose, and your system has to do what was chosen and say so.
The requirement that packaged tools most often underserve is verifiability. The right pattern is to publish a commitment to the random seed before the run, for instance by publishing a hash of the seed and the input file, then release the seed and the anonymised input after results so that anyone can rerun the match and reproduce the assignment. That turns a trust problem into an arithmetic problem. It also protects your staff, because the accusation that someone put a thumb on the scale becomes checkable rather than deniable. If your current vendor cannot produce a rerunnable record, you do not have an audit trail, you have an assurance.
Capacity is the other detail that breaks generic implementations. Seats are not one number per school. They are per grade, per programme, per seat type, with special education programme capacity, bilingual programme capacity and general capacity interacting, and with a kindergarten class size limit that is a state rule rather than a preference. The match must respect all of them simultaneously, which is why a spreadsheet based process quietly overfills programmes every year.
Problem 3: the waitlist is a six month operation, not a list
The match is one day. The waitlist is March through October, and it is where families actually experience your system. A seat opens because a family moved. Everyone below moves up. Someone accepts, which vacates their held seat somewhere else, which cascades. Meanwhile schools want to plan staffing, and a principal who watches a roster move daily starts calling families directly, which is how a parallel unofficial process gets started and how equity guarantees get lost.
What packaged tools typically provide is a static ordered list and a manual offer function. What the operation needs is automatic cascading with rules: offer windows with a defined expiry, automatic decline after the window, position preserved or forfeited according to policy, and a hard stop on manual overrides without a recorded reason and an authorised user. Every offer, response and movement belongs in an append-only log, because the question you will be asked in September is why a specific child at position four did not get a seat that a child at position nine received, and the answer must be a record rather than a recollection.
The family side deserves the same attention. Waitlist position should be visible, honestly, including the fact that position twelve at a school that never moves is not hope. Text and email in the family's language, with a one tap accept or decline, will do more for your yield accuracy than any amount of internal tooling, because the alternative is a phone call to a working parent during school hours.
Problem 4: addresses, boundaries and residency verification
Every geographic priority depends on turning what a parent typed into a verified point inside a polygon. Your city's geographic information system holds the parcel data, your district holds the attendance boundaries, and the two disagree in enough cases to matter.
Packaged systems geocode with a general purpose service, which is fine until it silently places a family on the wrong side of a line and the appeal arrives with a lease attached. A build should use the authoritative local parcel layer, resolve to a parcel rather than a street interpolation, record confidence, and route ambiguous cases to a human queue before the match rather than after it.
Two obligations sit on top of this and are routinely bolted on late. Students experiencing homelessness have rights under McKinney-Vento that make an address requirement inappropriate as a hard gate, so the system needs a path that does not force a family to produce documents they do not have. And foster and military family provisions in your state may add their own priority and timing rules. Design these in at the start; they are painful to retrofit into a matching pipeline.
Problem 5: everything after the match, which nobody budgets for
Appeals need a workflow with a stated basis, a reviewer, a deadline and a recorded outcome. Late applicants keep arriving all summer and need a defined position rule so that lateness does not become an advantage or a random penalty. Mid-year transfers run against live capacity. Every placement has to land in the receiving school's student information system, and if you have charters in the run, that is several different systems with several different identifier schemes, which means you need a stable student identifier across sectors or you will be reconciling duplicates by hand in September.
This tail is where staff time goes and it is the most common thing a city discovers it did not scope.
What this costs and how long it takes
From Digital Heroes delivery experience, a first release covering the common application in multiple languages, priority rules with effective dates, the deferred acceptance match with published verifiable seeds, and results release runs $80,000 to $180,000 in 14 to 20 weeks. The full platform adding cascading waitlists with offer windows, parcel level address validation, residency and document review, appeals, late applicant handling, mid-year transfers and student information system integration across sectors runs $200,000 to $450,000 phased over 6 to 12 months.
What drives the number: how many sectors participate, because district plus charter plus a private or state voucher programme means several governance bodies and several student information systems. The number of languages, since translation of a legally consequential application is professional work and not a plug-in. Programme seat complexity, because dual language and special education seat interactions multiply the constraint model. And the immovable deadline, since an enrollment season does not slip, which means schedule risk has to be bought down with a narrow first release rather than argued away.
Build versus buy, and when buying is right
Buy if you are a single district running magnet or transfer lotteries with straightforward sibling and boundary priorities, no charter participation and no unusual seat types. SchoolMint or PowerSchool Enrollment will handle the application and registration, and the match at that scale is not the hard part. Look seriously at Avela before you commission anything, because if your rules fit its model you will save a year and considerable money, and we would rather tell you that than sell you a build you do not need.
Build when two or more of these are true. Charters and district schools must be matched together under a governance agreement. Your priority rules come from board policy or a court order and change on a political calendar rather than a release calendar. You need to publish a seed and let a third party reproduce your match. You have programme seat types that interact. Your waitlist operation runs for six months and currently depends on principals making phone calls. The test is simple: if a reporter asked you to prove the draw was fair, could you, today, without asking a vendor. If not, that is the gap you are buying.
How to choose a developer for enrollment lottery software
Ask them to explain student proposing deferred acceptance in plain language, then ask what changes when you use a single tiebreak instead of one per school. If they cannot do both, they will implement a lottery, not a match, and you will find out in March.
Ask how they make a run reproducible. The answer should involve committing to a seed before the run, versioning the input snapshot and the rule set, and being able to rerun and get an identical assignment. Anything less is not auditable.
Ask how they will handle a board amendment six weeks before the run. Effective dated rules plus a harness that replays last year's applicants against the new policy is the answer you want.
Ask about student identifiers across sectors and about McKinney-Vento, unprompted preferably. Then ask who owns the code and get it in writing before kickoff. At Digital Heroes the client owns the repository and the infrastructure accounts from the first commit, which for a public body is not just commercial hygiene, it is what lets you answer a records request without a vendor's permission.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- Standish's 2015 CHAOS research found roughly a third of software projects (about 36% by the Modern definition) fully succeed on time, on budget, and on scope, with top success drivers including executive support, user involvement, and clear requirements/business objectives. Source: Standish Group (CHAOS Report) (2015) →
- McKinsey found that tech debt can amount to 20-40% of the value of a company's entire technology estate before depreciation, and CIOs report that 10-20% of the budget for new products is diverted to resolving tech-debt issues. Source: McKinsey & Company (2020) →
- A study (led by Prof. Pak-Lok Poon, published in Frontiers of Computer Science, 2024) reviewing decades of spreadsheet-quality research found that about 94% of spreadsheets used in business decision-making contain errors, illustrating the hidden risk of manual spreadsheet workarounds that custom software is built to replace. Source: Central Queensland University / phys.org (Prof. Pak-Lok Poon et al.) (2024) →
- An EY survey found one in five U.S. payrolls contains errors, each costing an average of $291 to remediate, with a typical 1,000-employee organization spending roughly 29 workweeks per year fixing common payroll errors. Source: EY (Ernst & Young) (2022) →
Theo runs the research that decides what a build should contain: interviews with the people who will use the software, usability sessions on prototypes and the analysis that turns a pile of opinions into a short list of problems. Useful reading before signing off any set of requirements.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
How much does a custom school enrollment lottery system cost?
Is SchoolMint or Avela enough, or do we need to build?
What algorithm should a unified enrollment lottery use?
How do you prove a school lottery was not rigged?
How should waitlists work after the match?
How do you handle families experiencing homelessness in an enrollment system?
How long does it take to build enrollment lottery software?
Can one system match district schools and charter schools together?
Who owns the code if a city hires an agency to build its enrollment system?
How many people should be working on my software project?
What does a $50,000 custom software budget actually buy?
Is it cheaper to customize Salesforce than to build a custom CRM from scratch?
Should I ask for a fixed price or pay the agency hourly?
How do I calculate whether custom software will pay for itself?
How much should a small business budget for its first custom app or website?
Who owns the code when an agency builds my software?
Can I build my product on a no-code tool like Bubble instead of hiring developers?
Why do agencies charge for a discovery phase instead of quoting for free?
Our developer disappeared mid-project. Can another team pick up the code?
How many SaaS seats do we need before building custom becomes cheaper?
Who can build a custom software system?
Digital Heroes builds custom software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.