Prediction Engine | Ideation/Design

CarsonCase
2 min readMay 3, 2024

Project Management

See more of this series on Twitter:
https://twitter.com/SolContractADay

The best engineers are only as good as their project management skills. So lets start the prediction engine project with some goals, scope and deliverables:

Goals:

We want to be able to browse government contracts on a webpage and be recommended more and more relevant contracts over time based on what interests us. The interest should be determined based off a like system as well as invisible data gathering. We should be able to manually filter the search as well as log in so our data can be stored. Tests should be built to determine the efficiency of the recommendation engine.

Normally I’d break this into bullet points but this is going on Twitter so that’s a bit tough to do. That simple user story will be good enough.

Scope:

- Only a webpage, I have no interest in making an app. Website should be mobile compatible.

- Ignore scalability concerns. This is for funzies

- Security on log in is important but does not need extensive testing. Just don’t make it stupid

Deliverables:

- Webpage

- Log in/ Register

- Explore Page

- Data Collection

- Like

- Load more (based on recommendations)

- Filter search

- Backend to serve webpage

- Get K amount of new search applicable contracts

- Database for user data

- store vector of user

- store user login info

- Microservice for recommendation engine

- Tests for efficiency

- Return K contracts from sam.gov API

So this is pretty simple and not even 5 minutes of PM work, yet it is going to be super super helpful for keeping me on track. When working with clients this “Ideation” stage is CRUCIAL as I’ve lost clients and soured relationships before by having unclear requirements.

One more bit of management we gotta do before I start writing code…

Design:

Time to actually design what I’m building. It’s pretty easy after spelling out the requirements and when working with a client here I’d usually make a little diagram but I’m excited to get started. As a refresher:

We need a database to store user info that connects to a backend to serve the website

A microservice connects to the backend to get the user’s data and compare it with the sam.gov api and returns to the backend K number of recommendations.

Easy PZ

What about a Tech Stack?

- HTMX — For Frontend because I haven’t reeallly used it much and I want to. Plus it’s simple and this will be simple. I hate over-complicating frontend.

- Go — For backed. I love go. That’s all.

- Pocketbase — For Database. It’s insane how simple using this is. So underrated. I love pocketbase. And it’s built with Go so it actually auto completes a lot of our backend work.

For the microservice…..

I’m going to use Go. Again because I love Go. But remember I want to optimize this to be as fast as possible and try other approaches so that service may also use Python. Regardless I think I’ll containerize it in Docker.

So that’s the stack:

- HTMX

- Go

- Pocketbase

- Python

- Docker

--

--