diff --git a/Makefile b/Makefile
index fd5f1da75f155ffa6dc762e1b0a48e41eeb3217c..55c692e2efd099d085b6ada3c71153fe5868931d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-TAG=0.2.0
+TAG=0.3.0
 
 build:
 	DOCKER_DEFAULT_PLATFORM=linux/amd64 docker build -t gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:$(TAG) .
diff --git a/app.py b/app.py
index 7b6103223f10f72bd7ea1df1924fa0db85efdfd1..22d9b34adf1fd917c300f031bac84b93cee4e7c0 100644
--- a/app.py
+++ b/app.py
@@ -12,21 +12,38 @@ app = Flask(__name__)
 with open("examples/titles.json", encoding="utf-8") as fileobj:
     titles = json.load(fileobj)
 
+movie_ids = {}
 index = qgram.QGramIndex()
-for title, _ in titles.values():
+for tid, (title, _) in titles.items():
+    movie_ids[title] = int(tid)
     index.add_term(title)
 
+
 @app.route("/titles")
 def suggest():
     """Serve movie title suggestions"""
     query = request.args.get("q")
+
+    try:
+        length = int(request.args.get("l", 12))
+        length = min(length, 100)
+    except ValueError:
+        length = 12
+
     results = []
 
     if query:
         results = index.search(query)
 
+    results = results[:length]
+
+    results = [
+        (score, title, movie_ids[title])
+        for score, title in results
+    ]
+
     return {
-        "suggestions": results[:100]
+        "suggestions": results
     }
 
 @app.route("/titles/healthz")
diff --git a/deployment.yaml b/deployment.yaml
index adf83be72f1875e025750e56719481040ffc5697..2c0d86595c705959d4cf31e82e7bc23728605c1a 100644
--- a/deployment.yaml
+++ b/deployment.yaml
@@ -16,7 +16,7 @@ spec:
     spec:
       containers:
       - name: titles
-        image: gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:0.2.0
+        image: gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:0.3.0
         livenessProbe:
           httpGet:
             path: /titles/healthz