M's Works

Parliamo su

WhatsApp
Case study2026

Software that fills in and prints every promissory note in a repayment plan

Debtor, bank, amount and due dates are entered once: Effetto writes the amount in words, works out the dates, checks the details and prints the whole plan on the forms, with the printer the office already has. Free, for Windows and Mac.

Effetto filling in a promissory note: the plan details on the left, the preview on the form on the right, a wrong tax code flagged in red
Client
Phoenix Solutions SRLS
Sector
Debt collection software · Palermo, Italy
Services
Web & App Development · UI/UX & Design System

The context

Debt collectors and recovery agencies in Italy prepare repayment plans made of twelve, twenty-four, thirty-six promissory notes that are identical except for the date, filled in on 105 × 221 mm pre-printed forms. With Word, Excel, a typewriter or by hand, every instalment is copied out and checked one at a time. M's Works wrote Effetto from scratch together with Phoenix Solutions SRLS, who needed it, and distributes it as its own product: a desktop program for Windows and Mac, free, with no key and no subscription, that works on the computer and only goes online for updates. The name is the trade's own word: in Italian a promissory note is an «effetto».

The problem

  1. Same name, same address, same bank, copied out for every instalment.

  2. An amount in words that doesn't match the figures: by law, the words prevail.

  3. Due dates on the 31st in 30-day months, February, plans every other month or quarterly.

  4. Office printers that won't take the promissory note sheet, and text that misses the lines on the form.

  5. Several PCs in the same office, each with its own archive: the month's due dates scattered and unpaid notes marked on one computer only.

Every choice has a constraint behind it

The constraint

The text has to land on the lines of a pre-printed form to a tenth of a millimetre, and a plan can have dozens of notes.

The choice

Direct printing through Windows GDI: Effetto opens the printer, asks for the 105 × 221 mm sheet and places each piece of text at its coordinates in millimetres, rotated 90°, with the whole plan in a single print job.

Why

Going through a Word document or an intermediate PDF, that tenth-of-a-millimetre control isn't there, and every note becomes a document to open and close. By drawing each piece of text itself, the program decides the position and a printer's calibration holds for every note.

The constraint

Many office printers, all those with Microsoft class drivers and plenty of multifunction ones, answer A4 when asked for the 105 × 221 mm sheet.

The choice

The form is placed on the larger sheet, on the side where the tray guide holds the note: left, centre or right, saved per printer. A test print on a blank sheet shows all three boxes, and you pick the one the note fits in.

Why

Stopping the print, as happened with an Epson XP-4200, would have shut out exactly the printers offices already own. Registering the paper size in Windows is still possible, but it needs administrator rights; guessing the side by trial and error would have wasted real forms.

The constraint

GDI doesn't exist on the Mac, and while the Mac version was being written there was no Mac to look at the printout on.

The choice

On the Mac, Effetto generates a PDF with the same geometry and hands it to the CUPS print system, asking for the 105 × 221 mm size.

Why

Rewriting the text placement with Core Graphics would have meant testing it blind. A PDF can be measured: against the same note printed from Windows the largest gap is 0.0224 mm, which is GDI's rounding. Handing the job to a Mac printer still needs a paper test, with a checklist already written.

The constraint

Fixes have to reach office PCs we never see, without interrupting someone who is issuing a plan.

The choice

At start-up Effetto checks for a new version and says so at the top right. It installs only when the operator asks, and only if the package's signature matches the key built into the program.

Why

An automatic install halfway through an issue would leave notes half printed. And trusting the address a package comes from isn't enough: a package not signed with our key is rejected, wherever it comes from.

What we built

One grid, the whole plan

Debtor, bank and amount are entered once; due dates fall every month or every N months, and if the first is on the 31st, February goes to the 28th and March goes back to the 31st.

Words and checks

The program writes the amount in words, with the correct Italian elisions such as CENTOTTANTA and VENTUNMILA; tax code (omocodia included), VAT number, ABI, CAB and postcode are checked before printing, with every error shown at once under its field.

Preview and calibration

The sheet on screen with a millimetre ruler and the form under the text; for each printer an overall and per-field offset in 0.25 or 1 mm steps, and type that shrinks down to 55% when a detail doesn't fit its space.

Archive, due dates, unpaid notes

Every plan stays in the archive, shared by the PCs in the same office, with the status of each note, a Due dates tab, notes marked paid in bulk and the client's unpaid list pasted straight from the email table.

CRM link

Debtors and banks are imported from CSV or Excel and exported in a fixed, documented column format, ready to hand to whoever runs the CRM.

The outcome

1.000.000

amounts in words read back one by one by a test, from 0 to 999,999 euros, before every release

0,0224 mm

largest gap between the note drawn on the Mac and the one printed from Windows, measured on the files

10

free versions released between 19 September and 7 October 2026

Prints even on printers that only take A4.

A single automated release for Windows 10 and 11, 32-bit included, and for Mac with Intel or Apple chips.

Technologies

TauriRustReactTypeScriptSQLiteGitHub Actions

Got a similar project?

Tell us where you're starting from. We'll reply with a clear proposal and realistic timelines, no commitment.

“If opportunity doesn't knock, build a door.”

Milton Berle