< cd ~/raba.pl

Public products & communities

Renso

Make the patient the person who controls what is shared, with whom and for how long.

  • Prototype
  • 2026
  • Solo: product, code, apps

The problem

Collecting files is not enough. A patient needs a way to let a doctor see the right information without handing over permanent access or requiring another account.

My part

Solo product and engineering work. Renso is presented as an MVP, with synthetic data in the demo.

What this shows

I can design a product around sensitive information and make control understandable at the interface, API and data-model levels.

Where it started

Renso is an MVP for organizing records from different labs and clinics. It brings files, prescriptions and vaccinations into a patient-held record, with sharing built into the core workflow.

See it in action

Product walkthrough · 1:14 · 60 FPS · English narration
Renso interface

English AI narration · Subtitles included · Play with sound, or read the transcript.

Read the video transcript

0:00 I built Renso around a simple idea: patients should control their medical records across clinics.

0:08 This demo uses seeded, fictional records throughout.

0:16 Records stay organised by category, while clinic uploads wait for patient approval.

0:24 A share code gives a doctor temporary access. The patient sets its duration and can revoke it.

0:37 Doctors can open a code without creating an account, while access limits still apply.

0:44 An emergency card brings essential information together, including allergies, medication and contacts.

0:52 AI features support record summaries and visit preparation. This local demo has no live AI key.

1:05 The patient-controlled workflow is available on the web and in native mobile apps.

The decisions behind the product

Model permission as a product feature

A short code grants access for a chosen period, with an optional view limit and immediate revocation. Every view checks whether the code is still valid.

Keep incoming data under patient control

Clinic uploads remain pending until the patient approves or rejects them through an SMS link. Records retain their original file, provider, category and date.

Use one system across the interfaces

The web, SwiftUI and Android apps use the same API. The MVP also includes an emergency card and AI-assisted record analysis and visit preparation.

What came out of the work

A working access model

The MVP supports time-limited share codes, patient approval of clinic uploads and access without a doctor account. The portfolio demo uses seeded records.

Web and native implementations

The product has web, iOS and Android implementations backed by the same record and sharing model. This case demonstrates what is built; it does not claim measured clinical outcomes or adoption.

  • 2native app implementations: iOS and AndroidMVP · checked 6 Oct 2026
  • 11categories of patient-held recordsMVP · checked 6 Oct 2026

Traffic over time

Google Search Console

Google search clicks

+2 clicks · Sept vs Apr 2026

Domain property: renso.pl (all subdomains)

Latest month
41 Sept - 30 Sept 2026
First month
21 Apr - 30 Apr 2026
Google search clicks per month, 1 Apr to 30 Sept 2026Google Search Console. Domain property: renso.pl (all subdomains). Monthly clicks. 1 Apr: 2; 1 May: 2; 1 Jun: 2; 1 Jul: 2; 1 Aug: 0; 1 Sept: 4. Vertical axis starts at zero.0241 Apr - 30 Apr 2026: 2 clicks1 May - 31 May 2026: 2 clicks1 Jun - 30 Jun 2026: 2 clicks1 Jul - 31 Jul 2026: 2 clicks1 Aug - 31 Aug 2026: 0 clicks1 Sept - 30 Sept 2026: 4 clicksAprMayJunJulAugSept
6 complete months · 1 Apr - 30 Sept 2026 · Download chartFirst month Latest month
Source, methodology and monthly data

Open Google Search Console report · Checked 8 Oct 2026

Domain property: renso.pl (all subdomains). Provider timezone: America/Los_Angeles.

  • Six complete calendar months: 1 April to 30 September 2026. Current is September; comparison baseline is April. Both comparison months have 30 days. This is not a comparison against the preceding six months.
  • Final web-search data, all countries and devices, America/Los_Angeles reporting timezone. Search clicks are not website visits or unique visitors.
  • Domain properties include all subdomains with property aggregation. Documentation pages retain exact page filters from the preceding evidence collection and measure documentation interest, not adoption.
  • Monthly chart values and the six-month total are reconciled with independently queried totals.
  • The percentage, where shown, compares September 2026 with April 2026, the last and first complete months of this window.
  • April has fewer than 100 events, so absolute counts are shown without a percentage growth claim.
  • For fewer than 100 events in the baseline period, the comparison shows absolute counts instead of a percentage.
Complete monthly totals
MonthGoogle search clicks
1 Apr - 30 Apr 20262
1 May - 31 May 20262
1 Jun - 30 Jun 20262
1 Jul - 31 Jul 20262
1 Aug - 31 Aug 20260
1 Sept - 30 Sept 20264
PostHog recorded activity4 pageviews in 28 days

renso.pl and www.renso.pl only · UTC

Recorded activity is affected by consent, blockers, tracking gaps and internal traffic.

Recorded totals, separate from search data
Metric7 Sept - 4 Oct 202610 Aug - 6 Sept 2026
Recorded pageviews43
Recorded sessions33

Inside the implementation

Explore the features, architecture and quality checks

What I built

  • Records in 11 categories, from lab results and imaging to vaccinations and vision, each with a provider, a date and the original file
  • Uploads from a clinic, matched to the patient by PESEL (the Polish national ID number), stay pending until the patient approves or rejects them from an SMS link
  • Share codes in the SAN-XXXX format that give a doctor read access for 1 hour to 30 days, with an optional view limit and one-click revoke
  • A public emergency card at /sos/<slug> with blood type, allergies, conditions, medication and emergency contacts
  • AI on Claude: a record analysis returned as JSON, visit preparation and a health timeline summary
  • Family members, medications and appointments, each behind its own tRPC router
  • Native apps in SwiftUI for iOS and Kotlin with Jetpack Compose for Android, on the same API

How it works

  1. UploadThe patient adds a file, or a clinic sends one in by the patient's PESEL.
  2. SMS approvalClinic uploads wait as pending until the patient approves them from a text message.
  3. RecordEach record keeps its category, provider, date and original file.
  4. Share codeA SAN-XXXX code opens the record to a doctor for 1 hour to 30 days, with no account.
  5. Emergency cardA public page with blood type, allergies, medication and who to call.

Quality and reliability

  • Automated checks cover share codes, slugs, validators and sign-in on the web; Maestro exercises sign-in and the records list in the mobile apps
  • Every view of a share code is checked: revoked, expired and over-limit codes are refused, and each view is logged
  • Share codes leave out I and O, so they cannot be misread as 1 and 0
  • PostHog loads only after explicit consent; without it the site sends nothing to PostHog

Technology

  • Next.js 16
  • React 19
  • TypeScript
  • tRPC 11
  • TanStack Query
  • Prisma 6
  • PostgreSQL
  • Better Auth
  • Zod
  • Tailwind CSS 4
  • Claude API
  • Twilio
  • Resend
  • Vercel Blob
  • SwiftUI
  • Kotlin
  • Jetpack Compose
  • Turborepo
  • Vitest
  • Playwright
  • Maestro

Explore another problem I worked on

>_ Your next project

Liked what you saw?
Let’s get in touch!

Have an idea, a challenge, or a role in mind? I’d love to hear about it.

Let’s talk

>_ Start a conversation

Liked what you saw?
Let’s get in touch!

Tell me what you’re working on. Let’s see how I can help.

Email mepatryk@raba.pl
Send a message