An undergraduate-friendly AI engineering project for reviewing application essays with rubric scoring, lightweight retrieval grounding, and evaluation.
The project is intentionally scoped for a strong third-year computer science student. It demonstrates the core ideas behind an LLM/RAG product without requiring a complicated research model or paid API key on day one.
- Accepts an essay, prompt, target program, and optional word limit.
- Retrieves relevant writing guidelines from a local knowledge base.
- Scores the essay across clarity, structure, prompt relevance, specificity, tone, and grammar/style.
- Returns structured JSON feedback with main issues, priority actions, paragraph notes, and rewrite guidance.
- Includes a small evaluation set to measure whether the system identifies the expected weakest dimension.
This is not just a prompt demo. It has:
- A retrieval module.
- A scoring rubric.
- Structured output.
- Error-style feedback.
- Evaluation examples.
- A simple UI and API path.
ai-essay-review-assistant/
|-- app/
| |-- main.py
| |-- models.py
| |-- retrieval.py
| |-- review_pipeline.py
| `-- rubric.py
|-- data/
| |-- knowledge_base/
| |-- sample_essays/
| `-- evaluation_set.csv
|-- frontend/
| `-- streamlit_app.py
|-- scripts/
| |-- evaluate.py
| `-- run_review.py
|-- tests/
| `-- test_pipeline.py
`-- requirements.txt
Create an environment and install dependencies:
pip install -r requirements.txtRun the command-line demo:
python scripts/run_review.py \
--essay-file data/sample_essays/sample_weaker.txt \
--prompt "Describe your motivation for studying computer science." \
--target "Computer Science" \
--word-limit 300Run the evaluation:
python scripts/evaluate.pyCurrent sample evaluation result:
- 6 labeled examples.
- 83.33% weakest-dimension match accuracy.
- Known miss: a crowded single paragraph can be interpreted as either clarity or structure.
Run the Streamlit demo:
streamlit run frontend/streamlit_app.pyRun the API:
uvicorn app.main:app --reloadThen send a POST request to /review.
- Built an AI essay review assistant using Python, FastAPI, and a lightweight retrieval pipeline to provide rubric-based feedback for application essays.
- Implemented local RAG-style retrieval over writing guidelines and evaluation rubrics to ground feedback and reduce generic suggestions.
- Designed structured scoring across clarity, relevance, structure, specificity, tone, and grammar/style, returning machine-readable JSON feedback.
- Evaluated the review pipeline on labeled sample essays by comparing predicted weakest dimensions against expected rubric weaknesses.
Good next steps that stay realistic for an undergraduate project:
- Replace the local retriever with FAISS or Chroma.
- Add OpenAI, Gemini, or local LLM generation for richer feedback.
- Expand the evaluation set to 50 examples.
- Add a before/after human preference test.
- Save review history with SQLite.