DISCORD: @CJ_the_Pringle

Inspiration

What inspired us was one of the challenges presented to us by ENTEC. Previously, we have worked on projects that use PDF parsing and analyzing for the betterment of users, so this allows us to further refine the process and try to understand more. Not only that but one of teammates wants to have a career in project management and this directly coincides with the career at hand.

What it does

An end‑to‑end MERN application that uploads an RFP PDF → extracts text → normalizes it into a structured requirements model → generates category‑specific, document‑aware suggestions with Gemini → and persists analyses and proposals in MongoDB with a React (Vite) client.

How we built it

Sack: ◦ MongoDB for persistence (RFPs, proposals, keyword history). ◦ Node/Express API for uploads, parsing, and AI‑assisted suggestion endpoints. ◦ React (Vite) client and a minimal static UI for quick demos. ◦ Google Gemini for targeted, category‑aware guidance with strict prompting and curated fallbacks. • Data model and flow: i. PDF upload → text extraction and PII redaction server‑side (before any model call). ii. Parse into a schema: id, clause_ref, title, category, priority, text_snippet, evidence_required[], submission_format, budget_caps, due_dates, keywords[]. iii. Normalize categories (e.g., Timeline/Milestones → Timeline; Submission|Compliance → Submission & Compliance). iv. Generate suggestions per category with strict prompting and post‑processing filters; fall back to curated guidance if the model is unavailable. v. Anchor suggestions back to requirement IDs for traceability. • Developer experience: ◦ Local dev with npm run dev (Express on 3000, Vite on 5173). ◦ Config via .env (MONGO_URI, GEMINI_API_KEY, CORS_ORIGIN, etc.).

Challenges we ran into

The main challenges we ran into were: • PDF variability: extraction quality differs across documents; we added normalization and defensive parsing. <- this caused us some issues due to how varying RFP's are and especially dependent on the area • Hallucination control: keeping suggestions tight and relevant required canonical categories, relevance filters, and capped action counts. • Schema drift: mapping messy clauses to a consistent schema took iteration and test samples. • Dev ergonomics: running a client+server stack quickly for demos meant tightening CORS, environment config, and hot‑reload workflows.

Accomplishments that we're proud of

What we learned

• Prompt engineering benefits from guardrails: strict category lists, token budgeting, and post‑filters dramatically improve on‑topic suggestions. • Privacy first: server‑side PII redaction is essential for trust and practical deployment. • Traceability matters: tying suggestions to specific requirement IDs makes reviews and audits easier. • Good defaults win: curated fallbacks keep the UX useful even without an API key.

What's next for Rattler Rootkit - RFP Parser & Templater

• Add collaborative editing and assignment workflows (owners, statuses, reminders). • Expand rubric tuning and domain presets for different industries. • Integrate retrieval to ground suggestions in prior winning content and evidence repositories. • Export to common formats (Gov portal checklists, DOCX templates) and add a lightweight reviewer mode.

Built With

Share this project:

Updates